资源描述:
《C语言—— 7 数组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章数组7.1.1一维数组的引入例7.1输入10个数,并以与输入时相反的顺序输出这10个数。例7.2输入10名学生的成绩,求这10名学生的平均分,并统计高于平均分的学生人数。7.1.2一维数组的定义存储类别类型标识符数组名标识符[常量表达式];autointtest[4];(1)存储类别是静态型static、自动型auto、外部型extern(2)类型标识符可以是int、char、float、long、unsigned等(3)数组名标识符的命名规则与变量的命名规则相同(4)常量表达式是数组的元素个数,也称为数组长度,是一个整型常
2、量表达式。(5)C语言规定数组元素的下标从0开始例staticinta[10];下面是合法的数组定义:intm[10],p[2*5];charstr[80];floatscore[35];#defineN8longnum[N];shorty[4*N];下面的定义是非法的:inta(5);intn=10;charc[n];Why?7.1.3一维数组的存储结构及初始化1.一维数组的存储结构例如:longa[5];数组a的存储空间的分配如图7-1所示a[3]的地址为:1000+3*4=1012数组元素地址=数组起始地址+元素下标*siz
3、eof(数组类型)2.一维数组的初始化C语言允许在定义数组的同时,对数组各元素指定初值,把这个过程称为初始化。(1)在定义数组时对所有数组元素赋初值inta[5]={8,8,2,4,123};staticcharch[7]={‘p’,’r’,’o’,’g’,’r’,’a’,’m’};(2)给数组部分元素赋初值staticinta[5]={7,6};其他元素自动赋0值(3)对全部元素赋初值,可以不指定数组长度staticinta[]={1,3,5,7,9,11,13};(4)如果想使一个数组中全部元素值为0,可以写成inta[10]
4、={0,0,0,0,0,0,0,0,0,0};inta[10]={0};staticinta[10];7.1.4一维数组元素的引用注意:C语言中数组名实质上是数组的首地址,是一个常量地址intk[4];kk[0]k[1]k[2]k[3]数组元素的引用:数组名[下标]下标的取值范围从0到”数组元素个数”减1例7.1输入10个数,并以与输入时相反的顺序输出这10个数。voidmain(){inti,a[10];for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=9;i>=0;i--)printf("%5d
5、",a[i]);printf("");}若换个要求,将输入的10个数按逆序(反序)存放在数组中并输出数组那又如何修改程序?方法一:给数组元素输入时,元素的下标从大到小,这样数组存放数据就是与输入时反序。voidmain(){inti,a[10];for(i=0;i<10;i++)scanf("%d",&a[9-i]);for(i=0;i<10;i++)printf("%5d",a[i]);printf("");}方法二:先给数组元素输入时,元素的下标还是从小到大,这样数组存放数据就是与输入时相同,再来把数组元素第一个与最后
6、一个对调,第二与倒数第二个对调,直到第N/2-1个与第N/2个对调。如下图所示:voidmain(){inti,a[10],t;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10/2;i++){t=a[i];a[i]=a[9-i];a[9-i]=t;}for(i=0;i<10;i++)printf("%5d",a[i]);printf("");}例7.2输入10名学生的成绩,求这10名学生的平均分,并统计高于平均分的学生人数。#defineM10voidmain(){inti,cou
7、nt=0;floatscore[M],sum=0,average;for(i=0;iaverage)count++;printf("average=%5.2fcount=%d",average,count);}例7.3输入10个数,存放在数组中,找出最大和最小元素的值及它们的位置。#defineM10voidmain(){inti,j,k,max
8、,min;staticinta[M];for(i=0;i