预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共79页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第6章数组6.1数组的概念如,全班40个学生成绩都是单精度类型,并且按照学号的顺序排列组合而成一个数组。为了区分不同的数组,每个数组用一个名字来表示,称为数组名。40个学生的成绩可表示为:a[0],a[1],…,a[39],用它们分别来存放第一个学生的成绩、第二个学生的成绩、……、第四十个学生的成绩。 数组有两个特点: (1)其长度是确定的,在定义的同时确定了其大小,在程序中不允许随机变动。 (2)其元素必须是相同类型,不允许出现混合类型。 6.2一维数组#include<stdio.h> main() { floata[41];/*定义一个一维实型数组a*/ floatsum=0,aver; inti; for(i=1;i<=40;i++) scanf("%f",&a[i]); for(i=1;i<=40;i++) sum+=a[40]; aver=sum/40; printf("全班平均成绩:%f",aver); } 在上例中,“floata[41];”是一个一维数组的说明语句,说明数组名为a,它由41个元素组成,每个数组元素为单精度实型。任何一个数组在使用之前必须先定义。 一维数组的定义格式为 [<存储类型>]<类型说明符><数组名>[<常量表达式>] 例如: [auto]intnum[40]; staticfloatscore[40],average[40]; charch[20]; 说明: (1)<存储类型>:如前面章节的有关规定,可以为auto,static,extern等。 (2)<类型说明符>:说明了数组元素所属的数据类型,可以为int,float,char等。 (3)<数组名>:其命名规则和变量名相同,同样遵循标识符命名规则。 图6-1数组元素存储形式(4)<常量表达式>:表示数组元素的个数,即数组长度。例如,b[20]表示b数组有20个元素,最小下标为0,最大下标为19,不能使用b[20]。常量表达式中只能是常量和符号常量,不允许使用变量。例如: inta[n];/*定义错误:常量表达式不能是变量n*/ 是错误的。 (5)在说明一个数组后,系统会在内存中分配一片连续的存储空间用于存放数组元素,如说明语句“inta[10];”,它在内存中的存放形式如图6-1所示,其下标取值范围是0~9。 6.2.2一维数组的引用 C语言规定只能逐个引用数组元素而不能一次引用整个数组。数组元素的引用形式为 数组名[下标表达式] 其中,“下标表达式”可以是整型常量、整型变量或整型表达式,其值均为非负数。例如,在说明语句“inta[10];”中,a[5]表示数组中第6个数组元素;a[2*4]表示数组中第8个数组元素;a[i](0≤i<10)表示数组中第i个数组元素。 【例6.2】求数组中最大值和最小值。 程序如下: #include<stdio.h> main() { inta[10]; inti,max,min; printf("请输入10个整数:"); for(i=0;i<10;i++) scanf("%d",&a[i]);max=min=a[0]; for(i=1;i<10;i++) {if(a[i]<min)min=a[i]; if(a[i]>max)max=a[i]; } printf("最大数为%d",max); printf("最小数为%d",min); } 6.2.3一维数组的初始化 在定义数组元素时,系统为其分配了一定的存储空间,所有的存储空间的赋初始值可以在程序运行之前,即在编译阶段进行,也可在运行期间,用赋值语句或输入语句使数组中元素得到初始值。 1.在编译阶段赋初值 (1)对全部数组元素赋初值。例如: staticinta[6]={1,2,3,4,5,6}; 其中,数组元素的个数和花括号中初值的个数是相同的,并且花括号中的初值从左到右依次赋给每个数组元素,即a[0]=1,a[1]=2,a[2]=3,a[3]=4,a[4]=5,a[5]=6。 (2)只给一部分元素赋初值。例如: staticinta[10]={0,1,2,3,4}; 此语句定义a数组有10个元素,但花括号中只提供了5个初值,表示只给前5个数组元素a[0]~a[4]赋初值,后面5个元素a[5]~a[9]系统自动赋0。 (3)给数组全部元素赋初值时,可以省略数组长度。例如: inta[]={10,20,30,40,50}; 省略数组长度时,系统将根据赋初值的个数确定数组长度。上述大括号内共有5个初值,说明数组a的元素个数为5,即数组长度为5。 2.在运行阶段赋初值 举例如下: inta[10]; inti; for(i=0;i<10;i++) scanf("%d",&a[i]); 6.2.4一维数组应用举例 【例6.3】用数组的方法求Fibona