资源描述:
《C程序设计 教学课件 作者 王丽娟 第1-6章第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章数组6.1一维数组6.2二维数组6.3字符数组6.4程序举例6.1一维数组6.1.1一维数组的定义和引用一维数组的定义方式为类型标识符数组名[常量表达式];例6.1输入5个学生某门课的成绩,要求按与输入次序相反的顺序输出。main(){floats1,s2,s3,s4,s5;printf("Enterfivescores:");scanf("%f,%f,%f,%f,%f",&s1,&s2,&s3,&s4,&s5);printf("Thescoreinreverseorderare:");printf("%f",s5);printf("%f",s
2、4);printf("%f",s3);printf("%f",s2);printf("%f",s1);}在定义数组时,需要注意的是:(1)表示数组长度的常量表达式,必须是正的整型常量表达式。(2)相同类型的数组、变量可以在一个类型说明符下一起说明,互相之间用逗号隔开。例如,inta[5],b[10],i;(3)C语言不允许定义动态数组,即数组的长度不能依赖于程序运行过程中变化着的量,下面这种数组定义方式是不允许的。inti;scanf("%d",&i);inta[i];例6.2用数组实现例6.1。main(){inti;floatscore[5];
3、printf("Enterfivescores:");for(i=0;i<5;i++)scanf("%f",&score[i]);printf("Thescoresinreverseorderare:");for(i=4;i>=0;i--)printf("%4.2f",score[i]);}6.1.2一维数组的初始化可以在程序运行后用赋值语句或输入语句使数组中的元素得到值,也可以使数组在程序运行之前(即编译阶段)就得到初值,后者称为数组的初始化。对数组元素的初始化可以用以下方法实现。在定义数组时对数组元素赋以初值,如:ints[5]={78,87,77
4、,91,60};也可以只给一部分元素赋值。例如:ints[5]={78,87,77};其结果是:s[0]=78,s[1]=87,s[2]=77,s[3]=0,s[4]=0,即花括号内的值只赋给了数组的前几个元素,后几个元素的值为0。若对全部数组元素赋初值时,可以不指定数组长度。例如:ints[5]={1,2,3,4,5};可以写成ints[]={1,2,3,4,5};一维数组元素是按下标递增的顺序连续存放的,即数组占有连续的存贮空间。如s数组在内存中的存贮示意如图6.1所示。S[0]S[1]S[2]S[3]S[4]图6.1s数组存贮示意图例6.3从键盘输入15个整数,并
5、检查整数10是否包含在这些数据中,若是的话,它是第几个被输入的。main(){inti,flag,data[15];flag=0;printf("Inputnumbers:");for(i=0;i<15;i++)scanf("%d",&data[i]);for(i=0;i<15;i++)if(data[i]==10){printf("10isinputedintheposition%d.",i+1);flag=1;/*标记10在输入数据中*/break;}if(flag==0)printf("10isnotinnumbers");}运行结果:In
6、putnumbers:1213238977905616115910176510isinputedintheposition13.6.2二维数组6.2.1二维数组的定义和引用二维数组的定义形式为类型标识符数组名[常量表达式][常量表达式];例如,inta[3][2];表示数组a是一个3×2(3行2列)的数组,共有6个元素,每个元素都是int型。二维数组的应用之一是矩阵和行列式。其中,左起第一个下标表示行数,第二个下标表示列数。我们也可以把二维数组看成是一种特殊的一维数组:它的元素又是一个一维数组。例如,可将以上的a数组看成是一个一维数组,它有3个元素,分别是a[0],a[1
7、],a[2],每个元素又是一个包含2个元素的一维数组,如图6.2所示,因此可以把a[0],a[1],a[2]看作是三个一维数组的名字。上面定义的二维数组就可理解为定义了三个一维数组,即相当于图6.2二维数组a[3][2]图6.3数组元素的排列方式6.2.2二维数组的初始化对二维数组元素赋初值,可以用分行赋值的方法,例如:inta[3][2]={{1,2},{3,4},{5,6}};其中内{}代表一行元素的初值。经过如此的初始化后,每个数组元素分别被赋以如下各值:a[