1、CONTENTS 目 录提出问题 引入新课自主学习 明确考点案例分析 交流提升仿真演练 体验探索提出问题 引入新课PART 01如果一次要定义多个类型相同、名称相同的变量时,你怎么进行?思考提出问题 引入新课自主学习 明确考点PART 02、有序性;、数据类型相同;、名称相同,序号(下标)不同;、数组中各个元素的位置由数组下标决定;、数组中的下标必须是正整数、0或整数型表达式,所以对数组元素的访问是在数组名带方框号中的下标来实现。1数组的特点:一维数组、二维数组、多维数组2数组的分类:在程序设计中,把具有统一的名称,相同的数据类型的若干元素按有序的形式排列起来的集合体称为数组。考点一:数组的定
2、义一维数组的定义格式中各部分的要求:是任意一种基本数据类型或构造数据类型:必须符合C语言中标识符的命名规则,数组名不能与其他变量名同名。:可以常量、符号常量或常量表达式,表示数据元素的个数,也称为数组的长度。1一维数组的定义方式是:;1、数组元素的长度与下标号存在什么关系?数组的下标号是从0开始,最大的下标号比数组长度少1。考点二:一维数组的定义进行编译时,为定义的数组在内存中分配一段连续的存储区域存储数组中的元素。例如:int a8;a8是一维数组说明符,int 是类型名,规定了数组a中的8个元素都是整型。C编译程序将为a数组在内存中开辟如图所示的8个连续的存储单元,共占16个字节,在图中标
3、明了每个存储单元的名字,可以用这样名字直接来引用各存储单元。数组存储形式a0a1a2a3a4a5a6a7考点二:一维数组的定义(3)方括号中常量表达式表示数组元素的个数,如int a5;表示数组a有 5个元素。元素的下标从0开始计算。因此5个元素分别为a0,a1,a2,a3,a4。(1)数组的类型实际上是指构成数组的元素的类型。对于同一个数组,其所有元素的数据类型都是相同的。对于数组类型说明应注意以下几点:(4)不能在方括号中用变量来表示元素的个数,也即数组不能动态定义。(2)数组名的书写规则应符合标识符的书写规定,且不能与其它变量名相同。考点二:一维数组的定义例如:#define F 5 v
4、oid main()int a3+3,b3+F;是合法的。但是下述声明方式是错误的。void main()int n=5;int an;1数组元素赋值的形式是:=;中如果有多个常量,则它们之间有逗号隔开,中的常量会根据其排列顺序依次赋值给数组从第一个元素开始的后面各个元素。如果中的常量个数小于数组的长度,则对前面的元素赋值,后面的元素被自动赋值为0(整型数组),0.0(实型数组),空格(字符型数组)。如果数组的定义中出现,数组的长度表达式可以省略,即不指定数组的长度,则由系统根据常量的个数作为数组的长度。说明考点三:一维数组元素的初始化2数组的初始化格式 可以在定义数组后,立刻赋值;如 int
5、 a3=1,3,5;可以给数组的部分元素赋值,不赋值的元素;如 int a 3=1,3 ;/*a0=1;a1=3;a2=0;*/在对数组全部元素赋初值时,可以不指定元素个数;如int a=1,3,5;可以在循环控制下,结合数组元素下标有规律变化的特点。将数组元素下标变量作为循环语句的循环控制变量,控制数组下标在指定范围内变化,给数组各元素赋值或输出操作;如:int a10;for(i=0;i 10;i+)a i=i;考点三:一维数组元素的初始化 数组元素的表示形式为:数组名下标数组元素的引用1考点四:一维数组元素的使用 说明:(1)下标可以是整型常量或整型表达式,表示该元素在数组中的位置。(2
6、)数组必须先定义后引用,并且只能引用数组元素而不能一次引用整个数组。例如,输出有10 个元素的数组必须使用循环语句逐个输出各下标变量:for(i=0;i10;i+)printf(%d,agei);而不能用一个语句输出整个数组,下面的写法是错误的:printf(%d,age);(3)数组名即代表数组的起始地址(第一个元素的地址)的标识符。(4)下标从0开始,最大下标号比数组长度少1。(5)下标表达式可以包含常量和变量表达式。(6)引用时下标的值不要超过数组的范围,因为C编译时不检查是否出界。2、数组元素的输出2考点四:一维数组元素的使用1、单个元素的输出:只利用printf函数,将要输出的数组元
7、素名列在printf函数中变量列表即可。如:printf(“a%d=%d”,i,ai);2、所有元素逐一输出,将printf函数与循环语句结合,每循环一次输出一个数组元素的值,用下标变量作为循环变量进行输出控制。int i,a10;.for(i=0;i=9;i+)printf(a%d=%d,i,ai);案例分析 交流提升PART 03【例1】、以下能正确定义一维数组的选项是()A)int num;B)int num0100;C)int N=100;D)#define N 100 int numN;int numN;【例2】、若有说明:int a10;,则对a数组元素的正确引用是()。A)a10
8、 B)a3.5 C)a(5)D)a10-10【例3】、已知int型变量占两个字节的存储单元,则由int a10=1,2,3;定义的数组a在内存中所占的字节数为()A)2 B)6 C)10 D)20【例4】、分析以下程序的运行后输出结果:#include main()int a2,4,6,8,10;int i,sum=1;for(i=0;i3;i+)sum+=ai+1;printf(“sum=%2d”sum);【例5】、以下能正确定义一维数组的选项是()A)int a5=0,1,2,3,4,5;B)char a=0,1,2,3,4,5;C)char a=A,B,C;D)int a5=0123;【
9、例6】一维数组元素的输入与输出形式【例6.1】main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);【例6.2】main()int i,a10;for(i=0;i=0;i-)printf(%d,ai);【例6.3】main()int i,a10=1,2,3,4,5,6,7,8,9,10;for(i=9;i=0;i-)printf(a%d=%d,i,ai);【例6.4】main()int i,a10;for(i=0;i10;)ai+=2*i+1;for(i=0;i=9;i+)printf(%d,ai);printf(n%d%dn,a5.2,a5.8);【例7】
10、、利用数组,求斐波拉契数列的前10项。main()int a10=1,1;int i;for(i=2;i10;i+)ai=ai-1+ai-2;for(i=0;i10;i+)printf(%d,ai);【例8】、从终端读入10个数据到数组中,统计其中正数的个数,并计算它们之和。main()int i,a10,sum=0,count=0;for(i=0;i10;i+)scanf(%d,&ai);for(i=0;i0)count+;sum+=ai;printf(sum=%d,count=%dn,sum,count);仿真演练,体验探索PART 045、以下程序的输出结果是()。#define N 7
11、main()int i,j,temp,aN=1,2,3,4,5,6,7;for(i=0;iN/2;i+)j=N-1-i;temp=ai;ai=aj;aj=temp;for(i=0;iN;i+)printf(%2d,ai);1、若有说明:int a10;,则对a数组元素的正确引用是()。A)a10 B)a3.5 C)a(5)D)a10-102、若有定义:int a10=1,2,3;则定义的数组a在内存中所占的字节数为()A)2 B)6 C)10 D)203、以下对一维整型数组a的正确说明是()。A)int a(10);B)int n=10,an;C)int n;scanf(“%d”,&n);int an;D)#define SIZE 10 int aSIZE;4、以下能对一维数组a进行正确初始化的语句是()。A)int a10=0,0,0,0,0;B)int a10=;C)int a2=0,1,2;D)int a10=10*1;