c语言教学ppt第11讲.ppt

上传人:小飞机 文档编号:5426316 上传时间:2023-07-05 格式:PPT 页数:27 大小:265.50KB
返回 下载 相关 举报
c语言教学ppt第11讲.ppt_第1页
第1页 / 共27页
c语言教学ppt第11讲.ppt_第2页
第2页 / 共27页
c语言教学ppt第11讲.ppt_第3页
第3页 / 共27页
c语言教学ppt第11讲.ppt_第4页
第4页 / 共27页
c语言教学ppt第11讲.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《c语言教学ppt第11讲.ppt》由会员分享,可在线阅读,更多相关《c语言教学ppt第11讲.ppt(27页珍藏版)》请在三一办公上搜索。

1、1,第11讲 数组的定义和使用,教学目的与要求:掌握一维数组的定义和引用 掌握二维数组的定义和引用教学内容提要:1.一维数组的定义和引用 2.二维数组的定义和引用教学重点:一维数组的定义和引用教学难点:二维数组的定义和引用教学进度:P139P151教学过程:,2,数学中:a1,a2,a3,ai,an,C程序中:a0,a1,a2,ai-1,an-1,数组是数目固定,类型相同的若干变量的有序集合。数组中的每一个数称为数组元素,数组中的每一个元素都属于同一个数据类型。在内存中数组占有一段连续的存储空间。,3,一、一维数组,1、一维数组的定义,定义的格式:类型说明符 数组名整常量表达式;,说明:,(1

2、)类型说明符:表明该数组所属类型,即数组元素的类型。,(2)数组名:即数组的名称,其命名方法同变量名遵循标识符定名规则。,例如:int a10;它表示数组名为a,此数组有10个整型元素。,4,(3):下标运算符,可通过该运算符的个数反映出数组的维数。不能用圆括弧,下面用法不对:int a(10);,(4)常量表达式:表示元素的个数,即数组长度。常量表达式中可以包括常量和符号常量,不能包含变量。也就是说,c不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。例如,下面这样定义数组是不行的:,特点:,数组元素的个数必须是确定的,数组元素的类型必须一致,5,下面是合法的数组定义

3、:char str20;/*定义一个有20个元素的字符型数组str*/float score8;/*定义一个有8个元素的浮点型数组score*/#define N 5long dataN;/*定义一个有5个元素的长整型数组data*/short z4*N;/*定义了一个有20个元素的短整型数组z*/其中的数组长度使用的是符号常量 下面的定义是非法的:int n=10;char cn;/*数组长度不能使用变量*/char str;/*数组长度不确定*/,6,例:试判断下列数组定义是否合法:int student35;char name20;float score35;#define studen

4、t 35float n_studentstudent;int score_studentstudent*3;int person(10);int n=10,an;,7,一维数组在内存中的存放方式:,数组定义以后,编译系统(计算机)将在内存中开辟一块连续的存储单元用于存放数组元素(数组元素按数组下标从小到大连续存放)。数组名表示存储单元的首地址,存储单元的大小由数组的类型和数组的大小决定。,例如 int a5;,8,a代表首地址(数组起始地址),每个元素字节数相同,因此,根据数组元素序号可以求得数组各元素在内存的地址,并可对数组元素进行随机存取。数组元素地址=数组名+下标 即:数组元素地址=数组

5、首地址+元素下标*sizeof(数组类型),设a的首地址为1000,数组a存储示意图如右图所示,1006,a3的地址=a+3即:a3的地址=1000+32=1006,9,引用方式:数组名下标,2、一维数组元素的引用,说明:下界 下标 上界;下界0;上界整常量表达式1。,下标为整型表达式;,若有定义:int a5;则数组a的元素分别为:a0、a1、a2、a3、a4;但a5不是。,10,一维数组元素引用的规定:,数组必须先定义后使用。,数组元素只能逐个被引用,不能一次引用整个数组。,对数组中所有元素逐个引用时,通常可使用循环结构。,一个数组元素实质是一个变量,代表内存中的一个存储单元。引用后的数组

6、变量也称下标变量。如:a0=5;a3=a1+4;aD-B=3;scanf(“%d”,&a4);,11,例1:输入10个整数,分别按顺序和逆序输出。,#include void main()int i,a10;printf(input 10 numbers:n);for(i=0;i=0;i-)printf(%d,ai);,程序的运行情况:input 10 numbers:1 2 3 4 5 6 7 8 9 101 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1,注意:1.循环控制变量的初值、终值及控制条件。2.不能整体输入/出数组 如:printf(“%d”,a)

7、;学会如何对数组进行输入输出,12,数组初始化:指定义数组时对数组元素赋以初值。,3、一维数组的初始化,格式:类型符 数组名表达式初值表;,说明:给全部元素赋初值。int a5=0,1,2,3,4;给部分元素赋初值。int b5=1,2,3;给全部元素赋初值时可不指定数组的长度。int a=1,2,3;,但若被定义的数组长度与提供初值的个数不相同,则数组长度不能省略。例如,想定义数组长度为10,就不能省略数组长度的定义,而必须写成int a10=1,2,3,4,5;只初始化前5个元素,后5个元素为默认值。,13,例2、数组初始化与未初始化比较#include main()int i,a5=3,

8、4,5,b5;printf(“narray a is:”)for(i=0;i5;i+)printf(“%6d”,ai);printf(“narray b is:”)for(i=0;i5;i+)printf(“%6d”,bi);,运行结果:array a is:3 4 5 0 0 array b is:-32 1398 40 1170 454,考虑:数组b 的值的含义?,14,程序如下:main()int i;int f20=1,1;for(i=2;i20;i+)fi=fi-2+fi-1;for(i=0;i20;i+)if(i%5=0)printf(n);printf(%12d,fi);,运行结

9、果如下:1 1 2 3 5 8 13 21 34 55 89 144 233 377 610987 1597 2584 4181 6765,例1、用数组来处理求fibonacci数列问题。,4、一维数组程序举例,15,#define N 5#include main()int i,j,k,max,min;static int a5;for(i=0;iai)min=ai;k=i;printf(max:a%d=%d,min:a%d=%d,j,max,k,min);,例2、从键盘上输入5个数,输出最大、最小的元素以及它们的下标,若输入:8 2 312 0-10输出为:max:a2=312,min:a

10、4=-10,16,例3、将10个人员的考试成绩进行分段统计,考试成绩放在a数组中,各分数段的人数存到b数组中:成绩为60到69的人数存到b0中,成绩为70到79的人数存到b1,成绩为80到89的人数存到b2,成绩为90到99的人数存到b3,成绩为100的人数存到b4,成绩为60分以下的人数存到b5中。,17,void main()int i,a10;static int b6;printf(enter the score:n);for(i=0;i10;i+)scanf(“%d”,&ai);switch(ai/10)case 6:b0+;break;case 7:b1+;break;case 8

11、:b2+;break;case 9:b3+;break;case 10:b4+;break;default:b5+;printf(the result is:);for(i=0;i6;i+)printf(%dt,bi);,18,二、二维数组,1、二维数组的定义和引用,1)二维数组的定义格式:类型说明符 数组名整常量表达式1整常量表达式2 例:float a34,b510;,2)存储方式:二维数组可看作特殊的一维数组;在计算机中二维数组的元素按行顺序存放。例:int a23;它在内存情况:,19,3)二维数组的引用格式:数组名下标1下标2,注意:0下标1常量表达式1-1;0下标2常量表达式2-1

12、。例:a12,20,说明:给全部元素赋初值。(1)分行初始化。如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;(2)按数组排列的顺序将所有数据写在一个花括号内,如:static int a34=1,2,3,4,5,6,7,8,9,10,11,12;,2、二维数组的初始化,二维数组初始化通常是按行进行的。,格式:类型符 数组名表达式1表达式2=初值表;,21,说明:给部分元素赋初值。static int a34=,1,0,6,0,0,11;0 1 0 0 0 6 0 0 0 0 11 0给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能

13、省略。static int a4=1,2,3,4,5,6,7,8,9,10,11,12;,22,例1、用如下的33矩阵初始化数组a33,求矩阵的转置矩阵。123147456258789369转置矩阵:是将原矩阵元素按行列互换形成的矩阵方法1:转置矩阵是将原矩阵元素按行列互换形成的。123147456258789369方法2:沿主对角线将对称位置元素互换即可。,23,#include main()int j,k;int a33=1,2,3,4,5,6,7,8,9,b33;for(j=0;j3;j+)for(k=0;k3;k+)bjk=akj;for(j=0;j3;j+)for(k=0;k3;k+

14、)printf(“%6d”,bjk);printf(“n”);,24,例2:在N行M列的二维数组x中,找出数组的最大值以及此最大值所在的行、列下标。,#define N 2#define M 3#include stdio.hvoid main()int i,j,xNM,max,line,col;printf(input array numbers:n);for(i=0;iN;i+)for(j=0;jM;j+)scanf(%d,&xij);max=x00;line=col=0;for(i=0;iN;i+)for(j=0;jM;j+)if(maxxij)max=xij;line=i;col=j;

15、printf(nmax=%dtline=%dtcol=%dn,max,line,col);,25,程序运行情况:input array numbers:12 3 4-5 67 8910 11 12nmax=89 line=1 col=2,26,例3:有一个班共30个学生,已知每个学生有5门课程的成绩,要求输出平均成绩最高的学生的成绩及序号。,#define N 30#define M 5#include stdio.hvoid main()int i,j,scoreNM,sum,aveN,max=0,m=0;printf(input array numbers:n);for(i=0;iN;i+)for(j=0;jM;j+)scanf(%d,printf(nmax=%dtm=%dn,max,n);,27,小结,一维数组的定义、引用、初始化和数组作为函数参数 二维数组的定义、引用、初始化 作业:P167 1,3,5,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号