资源描述:
《C语言 程序设计 第5章数组》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章数组学号成绩187279392466…………5081实际应用中需要处理大量数据的例子比比皆是,如:一个班50名学生计算机课程成绩需要保存和排名次;若干名歌手参加唱歌比赛的得分情况和最后名次;数学上两个矩阵的计算歌手名得分1得分2得分3得分4……总得分歌手1歌手2……歌手n数组:是指一组数目固定、数据类型相同的若干个元素的有序集合。构造数据类型之一数组:有序数据的集合,用数组名标识元素:属同一数据类型,用数组名和下标确定存储:在内存中占用一段连续的空间,数组名就是数组的首地址,也即是连续空间的起始地址数组的分类:一维数组多维数组:常用二维数组5.1
2、数组的概念一维数组的定义定义方式:数据类型数组名[常量表达式];表示元素个数下标从0开始[]:数组运算符单目运算符优先级(1)左结合不能用()合法标识符例inta[6];a[0]0145a[1]a[2]a[3]a[4]a[5]23a编译时分配连续内存内存字节数=数组维数*sizeof(元素数据类型)数组名表示内存首地址,是地址常量5.2一维数组例inta[10],b[10+5];(√与上例相同)//C语言允许把多个具有相同类型的数组定义合并例inta[10];(√定义整型数组a,其中有10个元素)intb[10+5];(√定义整型数组b,其中有15个元
3、素)例intd[5];(√数组d的5个元素分别是d[0]、d[1]、d[2]、d[3]、d[4])d[5]=10;//C语言对数组不作越界检查,使用时要注意例inti=15;intdata[i];(不能用变量定义数组维数)例intdata[5];//数组data共占用了10个字节floatx[5];//数组x共占用了20个字节一维数组的初始化初始化形式:数据类型数组名[常量表达式]={初值1,初值2,…,初值n};在定义数组时,为数组元素赋初值(在编译阶段使之得到初值)说明:数组不初始化,其元素值为随机数只给部分数组元素赋初值当全部数组元素赋初值时,
4、可不指定数组长度如inta[5]={6,2,3};等价于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0;如inta[3]={6,2,3,5,1};()如inta[]={1,2,3,4,5,6};编译系统根据初值个数确定数组维数C语言除在定义数组时用初始化的方法为数组整体赋值之外,不能在其它情况下对数组进行整体赋值。如inta[6];a[6]={1,2,3,4,5,6};是错误的(×)如inta[5]={1,2,3,4,5};等价于:inta[5];a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;5.2一维
5、数组【例5.1】用初始化方法使a数组10个元素的值分别为:1,2,3,4,5,6,7,8,9,10,然后输出。#includevoidmain(){inti,a[10]={1,2,3,4,5,6,7,8,9,10};for(i=0;i<10;i++)printf("%4d",a[i]);printf("");}引用一维数组元素说明:数组必须先定义,后使用只能逐个引用数组元素,不能一次引用整个数组数组元素表示形式:数组名[下标]其中:下标可以是常量或整型表达式例inta[10];printf("%d",a);()必须for(j=0
6、;j<10;j++)printf("%dt",a[j]);()5.2一维数组【例5.2】从键盘输入10个整数,存入数组a,然后分别按原序和逆序输出。#includevoidmain(){inti,a[10];for(i=0;i<10;i++)/*输入数据*/scanf("%d",&a[i]);for(i=0;i<10;i++)/*按原序输出数据*/printf("%4d",a[i]);printf("");for(i=9;i>=0;i--)/*按逆序输出数据*/printf("%4d",a[i]);}【例5.3】求一组数中的最
7、大数及位置。数据为:3,5,13,1,8,6,15,9,2,10。步骤:1.输入:可用for循环输入10个整数,本例用初始化方式给数组初值2.处理:(a)先令max=a[0],并记下位置w=0(b)依次用a[i]和max比较(循环)若a[i]>max,令max=a[i],w=i3.输出:max和w(w记录的是数组下标,该值是从0开始,其位置应为1)#includevoidmain(){inti,a[10]={3,5,13,1,8,6,15,9,2,10},max,w;for(i=0;i<10;i++)printf("%4d",a[i]
8、);max=a[0];w=0;/*求最大数及位置*/for(i=1;i<10;i++)if(a