资源描述:
《C语言程序设计 教学课件 作者 崔永君 彭静 全书第6章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章 数组6.1一维数组6.2二维数组6.3字符数组和字符串6.1一维数组6.1.1一维数组的定义和普通变量一样,数组在使用之前必须先定义,一维数组的定义格式如下: 类型说明符数组名[常量表达式];例如:inta[10];定义了一个整型一维数组,数组名为a,含有10个元素。说明:(1)数组名的命名规则和变量名相同,遵循标识符命名规则。(2)数组名后是方括号括起来的“常量表达式”,不能用圆括号。(3)在定义数组时,需要指定数组中元素的个数,方括号中的“常量表达式”用来表示元素的个数,即数组长度。C语言中数组下标是从0开始的,例如:a[10]表示a
2、数组有10个元素,依次为a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9],不存在数组元素a[10]。(4)“常量表达式”中可以包含整型常量和符号常量,不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下述对数组的定义是错误的:intn;scanf("%d",&n);/*在程序中临时输入数组的大小*/inta[n];…(5)定义“inta[10];”后,C编译程序将为a数组在内存中开辟如图6-1所示的10个连续的存储单元。图中标明了存储单元的名字
3、,可以用这些名字直接引用各存储单元。图6-1数组a在内存中的存储单元(6)在定义数组的语句中,可以有多个数组说明符,它们之间用逗号隔开,例如:inta[5],b[7];定义了两个名为a和b的整型数组,其中a数组包含5个元素,下标从0到4,b数组包含7个元素,下标从0到6。 定义时,数组说明符和普通变量名可以同时出现在一个类型的定义语句中,例如:intc,d,e[8];6.1.2一维数组元素的引用对数组元素的访问一般是通过下标运算符“[]”和下标值来进行的。C语言规定只能逐个引用数组元素,而不能一次引用整个数组。 数组元素的表示形式如下:
4、数组名[下标]其中下标可以是整型常量或整型表达式。例如:a[5]=a[1]+a[2]+a[2*4];【例6.1】输入20个学生的单科成绩,求平均分。 源程序如下:main(){floatscore[20],sum=0,aver;/*定义数组与变量*/inti;for(i=0;i<20;i++)/*注意:条件不能写成i<=20*/{scanf("%f",&score[i]);/*输入学生的单科成绩*/sum+=score[i];/*对分数进行累加*/}aver=sum/20;/*求平均分*/printf("Average=%.2f",ave
5、r);/*输出平均分*/}该例中定义了一个含20个元素的数组,用来存放学生成绩。若没有数组这一构造数据类型,同类型的变量就要定义20个,比较操作也要写20次。如果是50个学生,100个学生呢?程序要写得很长。定义数组后,常常通过下标有规律的变化来构造循环。6.1.3一维数组的初始化(1)将数组元素的初值依次写在一对花括号内,数据之间用逗号间隔。如:inta[10]={5,8,-2,9,-12,10,7,1,0,35};这时,a[0]的值是5,a[1]的值是8,…,a[9]的值是35。类似此例,当初值个数等于数组长度时,数组初始化时可省略数组长度。如:
6、inta[]={5,8,-2,9,-12,10,7,1,0,35};(2)可以只对一个数组的前面几个元素赋初值。例如:inta[10]={5,8,-2,9,-12};这时,后面几个元素的值均为0,即a[5]~a[9]的值都是0。(3)一个数组的所有元素值均为0时,可简写成:inta[10]={0};但不能写成:inta[10]=0;(4)与“未初始化的变量,其值是不确定的”一样,数组如果没有进行初始化,其元素的值也是不确定的。如:intc[7];不能认为c[0]~c[6]的值都是0。6.1.4一维数组程序举例【例6.2】在数组中放入1~10十个数,按逆
7、序输出。 源程序如下:main(){inta[10],i;for(i=0;i<10;i++)a[i]=i+1;/*用循环体对数组元素赋值*/for(i=9;i>=0;i--)/*i--用来控制逆序*/printf("%d",a[i]);printf("");}【例6.3】用数组处理Fibonacci数列问题,输出前20项。 分析:斐波那契数列(Fibonacci)的发明者是意大利数学家列昂纳多·斐波那契(LeonardoFibonacci)。斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、…,这个数列从第三项开始,每一项
8、都等于前两项之和。源程序如下:main(){intf[20]={1,1};/*给Fibonac