C语言多维、字符数组.ppt
第五章第五章 数组数组 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个元素分别为:数组名行下标列下标 (注:下标:整型常量、变量、或表达式)先定义,后使用二维数组元素引用的一般形式:a00 a01 a10 a11 a20 a21int a32;(3行2列,6个元素)a00 a01 a10 a11a20 a21a00a01a10a11a20a21二维数组的元素在内存的存储顺序是:按行存放 如何表示数组a的地址?&a00或者a二二维数组(引用)数组(引用)注:数组元素的使用方法与同类型的变量相同引用:数组名行下标列下标 (下标:整型常量、变量、或表达式)例:设int a32;,则给数组元素a00赋值1如何实现,输出数组元素a00的值如何实现呢?给每个数组元素输入值如何实现,输出所有数组元素的值如何实现呢?按矩阵格式输出所有数组元素的值如何实现?二维数组的初始化 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 a32,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);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=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”,”black”,”white”;见书122页字符数组的输入字符数组的输入 char str13;1、用格式符“%c”逐个输入字符 for(i=0;i=“字符串字符串”中的实际字符串长度加中的实际字符串长度加1 1。3.3.“字符数组字符数组”必须是数组名形式必须是数组名形式(如如str1)str1)。“字符串字符串”可以可以是一个字符串常量,也可以是已存放字符串的字符数组。是一个字符串常量,也可以是已存放字符串的字符数组。不能将一个字符串常量或字符数组直接赋给一个字符数组,只能使用字符串拷贝函数。str1=str2;str1=hello格式:strcpy(字符数组名,字符串)拷贝字符串前拷贝字符串前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(字符数组名)