《C语言多维、字符数组.ppt》由会员分享,可在线阅读,更多相关《C语言多维、字符数组.ppt(20页珍藏版)》请在金锄头文库上搜索。
1、第五章第五章 数组数组 5.2 5.2 多维数组多维数组 5.3 5.3 字符数组字符数组多多维数组数组 引例:一页纸写着两个字符,如何存放这两个字符?一页纸写着三行字符,每行两个字符,如何存放这些字符?有一本书,共四页,每页纸写着三行字符,每行两个字符,如何存放这些字符?char ch2;char ch32;char ch432; 多多维数组(定义)数组(定义) int a2; int a32; int a432; 存储类别 类型名 数组名常量表达式1 常量表达式2 先定义,后使用多维数组定义的一般形式: 二二维数组(引用)数组(引用) 设int a32;,则这个二维数组的6个元素分别为:数
2、组名行下标列下标 ( 注:下标:整型常量、变量、或表达式)先定义,后使用二维数组元素引用的一般形式: a00 a01 a10 a11 a20 a21int a32;(3行2列,6个元素)a00 a01 a10 a11a20 a21a00a01a10a11a20a21二维数组的元素在内存的存储顺序是:按行存放 如何表示数组a的地址?&a00或者a二二维数组(引用)数组(引用) 注: 数组元素的使用方法与同类型的变量相同引用:数组名行下标列下标 (下标:整型常量、变量、或表达式)例:设int a32;,则给数组元素a00赋值1如何实现,输出数组元素a00的值如何实现呢?给每个数组元素输入值如何实现
3、,输出所有数组元素的值如何实现呢? 按矩阵格式输出所有数组元素的值如何实现? 二维数组的初始化 int a33= 1,2,3,4,5,6,7,8,9;int a33= 1,2,3,4,5,6,7,8,9;int a 3= 1,2,3,4,5,6,7,8,9;int a3= 1,2,3,4,5,9;int a3= 1,2,3,4,5,6;能写成int a3= 1,2,3,4,5,6;吗?这个数组中共包含几个元素?a12的值是多少?例:定义一个3*2的二维数组a,数组元素的值由下式给 出,按矩阵的形式输出a。aij=i+j(0=i=2,0=j=1)#includevoid main() int a
4、32, int i,j; for(i=0;i3;i+) for(j=0;j2;j+) aij=i+j;for(i=0;i3;i+) for(j=0;j2;j+) printf(“%4d”,aij); printf(“n”);例:计算矩阵A23的转置矩阵AT #includemain() int a23=1,3,5,2,4,6; int i,j,b32; for(i=0;i2;i+) for(j=0;j3;j+) printf(%5d,aij); bji=aij; printf(n); for(i=0;i3;i+) for(j=0;j2;j+) printf(%5d,bij); printf(n
5、); aijaij的值是的值是bjibji的值的值字符数组(数组的应用) C中不使用字符串变量,而使用字符数组来处理字符串。定义:定义:定义:定义:char char 字符数组名字符数组名字符数组名字符数组名 常量表达式常量表达式常量表达式常量表达式; char str3; char str3;引用:字符数组名引用:字符数组名引用:字符数组名引用:字符数组名 下标下标下标下标 str0,str1,str2str0,str1,str2#includemain() char c12; int i; c0=H;c1=o;c2=w;c3= ; c4=a;c5=r; c6=e;c7= ; c8=y;c9
6、=o;c10=u;c11=?; for(i=0;i12;i+) printf(%c,ci); printf(n);printf(printf(“ “%s%s” ”,c);,c);字符串(数组的应用) 初始化:初始化: char str5=h,e,l,l,o; char str6=h,e,l,l,o; char str =h,e,l,l,o,0; char str =hello; char str =hello; char color57=“red”,”yellow”,”green”,”black”,”white”; char color7=“red”,”yellow”,”green”,”bla
7、ck”,”white”; 见书122页字符数组的输入字符数组的输入 char str13; 1、用格式符“%c”逐个输入字符 for(i=0;i=“字符串字符串”中的实际字符串长度加中的实际字符串长度加1 1。3.3.“字符数组字符数组”必须是数组名形式必须是数组名形式( (如如str1)str1)。“字符串字符串”可以可以是一个字符串常量,也可以是已存放字符串的字符数组。是一个字符串常量,也可以是已存放字符串的字符数组。 不能将一个字符串常量或字符数组直接赋给一个字符数组,只能使用字符串拷贝函数。str1=str2; str1=hello格式:strcpy(字符数组名,字符串)拷贝字符串前拷
8、贝字符串前n个字符的函数个字符的函数 char a10=abc,b5=xyz;strncpy(a,b,2);注意: 只拷贝字符,不拷贝0字符拷贝到目的字符数组格式:strncpy(字符数组名,字符串,n)字符串连接函数字符串连接函数 strcat char a10=abc,b5=xy;strcat(a,b);作用: 取消“字符数组”中的字符串结束标志0,然后把“字符串”连接到“字符数组”中的字符串后面,并在最后加一个0字符,结果放到“字符数组”中。 格式:strcat(字符数组名,字符串)字符串比较函数字符串比较函数 strcmp strcmp(abc,ab);作用:比较“字符串1”和“字符串2”的大小(从第一个字符开始比 较,碰到第一个不相等的字符,看谁的ASCII码大)。 (1) 如果“字符串1”=“字符串2”,函数值为0; (2) 如果“字符串1”“字符串2”,函数值为正整数; (3) 如果“字符串1”“字符串2”,函数值为负整数。 格式:strcmp(字符串1,字符串2)测字符串长度函数测字符串长度函数 strlen char str15=“hello”; printf(“%d”,strlen(str);作用:测数组中字符串长度注意:所测的长度不包含字符串结束符“0”格式:strlen(字符数组名)