维数组的定义及使用.ppt
第十一讲 二维数组的定义和引用,一、二维数组的定义,定义二维数组的一般形式:,C语言程序设计课件,C语言程序设计课件,类型说明符数组名常量表达式1常量表达式2,决定了数组的类型,命名规则同简单变量和一维数组,注意:数组中数组元素的个数为:常量表达式1常量表达式2,行下标,列下标,C语言程序设计课件,C语言程序设计课件,如:int a34;,定义了包含有12个整型数组元素的二维数组 a,在内存中分布如下:,a00,a01,a02,a10,a11,a12,a20,a21,a22,a03,a13,a23,二、二维数组的引用,引用格式:数组名行下标列下标,注意:,1、行下标、列下标均从0开始,到定义的下标值减 一结束。,2、不能写成 数组名行下标,列下标,(1)分行给二维数组赋值,(2)将所有数据写在一个大括弧中,按数组排列顺序 进行赋值。,(3)对部分元素赋值,最直观,最合理,C语言程序设计课件,C语言程序设计课件,三、二维数组的初始化,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,int a34=1,2,3,4,5,6,7,8,9,10,11,12;,int a34=1,5,9;,a00,a01,a02,a10,a11,a12,a20,a21,a22,a03,a13,a23,1,2,3,4,5,6,7,8,9,10,11,12,a00,a01,a02,a10,a11,a12,a20,a21,a22,a03,a13,a23,1,0,0,0,5,0,0,0,9,0,0,0,C语言程序设计课件,C语言程序设计课件,四、二维数组的应用举例,1、将一个矩阵进行转置,1 2 34 5 6,45 3 6,定义数组a int a23;并将初始矩阵赋给a中元素,a00a01a02a10a11a12,123456,b00,b10,b20,b01,b11,b21,定义数组b int b32;用来存放转置后的矩阵,C语言程序设计课件,C语言程序设计课件,数组a:,行下标,000111,列下标,012012,数组b:,行下标,000111,列下标,012012,当i=0时,j从0变化到2;当i=1时,j从0变化到2;,for(i=0;i=1;i+)for(j=0;j=2;j+)bji=aij;,定义变量i,j,分别表示a的行下标和列下标,aij=bji,C语言程序设计课件,C语言程序设计课件,编写程序:,main()int a23=1,2,3,4,5,6;int b32,i,j;printf(“array a:n”);for(i=0;i=1;i+)for(j=0;j=2;j+)printf(“%5d”,aij);bji=aij;printf(“n”);,printf(“array b:n”);for(i=0;i=2;i+)for(j=0;j=1;j+)printf(“%5d”,bij);printf(“n”);,C语言程序设计课件,C语言程序设计课件,2、求二维数组中最大元素值及其行列号,#include main()int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;int i,j,row=0,colum=0,max;max=a00;for(i=0;imax)max=aij;row=i;colum=j;printf(max=%d,row=%d,colum=%dn,max,row,colum);,C语言程序设计课件,C语言程序设计课件,五、字符数组和字符串 1、字符数组(1)定义,(2)字符数组的初始化 逐个字符赋值 char ch5=H,e,l,l,o;用字符串常量 char ch6=“Hello”;,例 char c10,ch34;,(3)字符数组的引用,C语言程序设计课件,C语言程序设计课件,C语言程序设计课件,C语言程序设计课件,例 输出一个字符串,#include main()char c10=I,a,m,a,b,o,y;int i;for(i=0;i10;i+)printf(%c,ci);printf(n);,C语言程序设计课件,C语言程序设计课件,2、字符串(1)字符串及其结束标志(2)无字符串变量,用字符数组处理字符串(3)字符串结束标志:,C语言程序设计课件,C语言程序设计课件,例 main()char a5=H,e,l,l,o;printf(“%s”,a);,例 main()char a=“Hello”;printf(“%s”,a);,结果:Hello#-=*,结果:Hello,用“%s”输出时,遇0结束,C语言程序设计课件,C语言程序设计课件,main()char a=h,e,l,0,l,o,0;printf(%s,a);,例,输出:hel,数组中有多个0时,遇第一个结束,C语言程序设计课件,C语言程序设计课件,1、字符串输出函数puts格式:puts(字符数组)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以0结束,2、字符串输入函数gets格式:gets(字符数组)功能:从键盘输入一以回车结束的字符串放入字符数组 中,并自动加0说明:输入串长度应小于字符数组维数,例#include main()char string80;printf(“Input a string:”);gets(string);puts(string);输入:How are you?输出:How are you?,C语言程序设计课件,C语言程序设计课件,3、字符串连接函数strcat格式:strcat(字符数组1,字符数组2)功能:把字符数组2连到字符数组1后面返值:返回字符数组1的首地址说明:字符数组1必须足够大 连接前,两串均以0结束;连接后,串1的0取消,新串最后加0,4、字符串拷贝函数strcpy格式:strcpy(字符数组1,字符串2)功能:将字符串2,拷贝到字符数组1中去返值:返回字符数组1的首地址说明:字符数组1必须足够大 拷贝时0一同拷贝 不能使用赋值语句为一个字符数组赋值,例 char str120,str220;str1=“Hello!”;str2=str1;(),C语言程序设计课件,C语言程序设计课件,5、字符串比较函数strcmp格式:strcmp(字符串1,字符串2)功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或0为止返值:返回int型整数。a.若字符串1 字符串2,返回正整数 c.若字符串1=字符串2,返回零说明:字符串比较不能用“=”,必须用strcmp,6、字符串长度函数strlen格式:strlen(字符数组)功能:计算字符串长度返值:返回字符串实际长度,不包括0在内,C语言程序设计课件,C语言程序设计课件,例 对于以下字符串,strlen(s)的值为:(1)char s10=A,0,B,C,0,D;(2)char s=“tv0willn”;,答案:1 3,