资源描述:
《C语言第6章--数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章数组6.1数组的概念6.2一维数组6.3二维数组6.4字符数组与字符串6.1数组的概念数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它们。如,全班40个学生成绩都是单精度类型,并且按照学号的顺序排列组合而成一个数组。为了区分不同的数组,每个数组用一个名字来表示,称为数组名。40个学生的成绩可表示为:a[0],a[1],…,a[39],用它们分别来存放第一个学生的成绩、第二个学生的成绩、……、第四十个学生的成绩。数组有两个特点:(1)其长度
2、是确定的,在定义的同时确定了其大小,在程序中不允许随机变动。(2)其元素必须是相同类型,不允许出现混合类型。6.2一维数组6.2.1一维数组的定义【例6.1】已知全班40个学生的计算机基础课的考试成绩,求全班的平均成绩。#includemain(){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[i];aver=sum/40;printf("全班平均成绩:%f",aver);}
3、在上例中,“floata[41];”是一个一维数组的说明语句,说明数组名为a,它由41个元素组成,每个数组元素为单精度实型。任何一个数组在使用之前必须先定义。一维数组的定义格式为[<存储类型>]<类型说明符><数组名>[<常量表达式>]例如:[auto]intnum[40];staticfloatscore[40],average[40];charch[20];说明:(1)<存储类型>:如前面章节的有关规定,可以为auto,static,extern等。(2)<类型说明符>:说明了数组元素所属的数据类型,可以为int,float,char等。(3)<数组名>:
4、其命名规则和变量名相同,同样遵循标识符命名规则。图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语言规定只能逐个引用数组元素而
5、不能一次引用整个数组。数组元素的引用形式为数组名[下标表达式]其中,“下标表达式”可以是整型常量、整型变量或整型表达式,其值均为非负数。例如,在说明语句“inta[10];”中,a[5]表示数组中第6个数组元素;a[2*4]表示数组中第8个数组元素;a[i](0≤i<10)表示数组中第i个数组元素。【例6.2】求数组中最大值和最小值。程序如下:#includemain(){inta[10];inti,max,min;printf("请输入10个整数:");for(i=0;i<10;i++)scanf("%d",&a[i]);max=min=a
6、[0];for(i=1;i<10;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};其中,数组元素的个数和花括号中初值的个数是相
7、同的,并且花括号中的初值从左到右依次赋给每个数组元素,即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个初值,说明数组
8、a的元素个数为5,即数组长度为5。2.