《C语言程序设计》(第二版)电子教案 第4章 数组

上传人:E**** 文档编号:89189048 上传时间:2019-05-21 格式:PPT 页数:67 大小:536.50KB
返回 下载 相关 举报
《C语言程序设计》(第二版)电子教案 第4章 数组_第1页
第1页 / 共67页
《C语言程序设计》(第二版)电子教案 第4章 数组_第2页
第2页 / 共67页
《C语言程序设计》(第二版)电子教案 第4章 数组_第3页
第3页 / 共67页
《C语言程序设计》(第二版)电子教案 第4章 数组_第4页
第4页 / 共67页
《C语言程序设计》(第二版)电子教案 第4章 数组_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《《C语言程序设计》(第二版)电子教案 第4章 数组》由会员分享,可在线阅读,更多相关《《C语言程序设计》(第二版)电子教案 第4章 数组(67页珍藏版)》请在金锄头文库上搜索。

1、1,第4章 数组,C 语言程序设计,2019/5/21,2,第四章 数组,50个学生的成绩怎样存储和处理? 一个学生N门课的成绩怎样存储和处理?,数据的特点:具有相同的数据类型。 为了方便地使用这些数据,C语言提供了一种构造数据类型:数组。 例如:存储学生成绩用实型数组 fs50 其中:fs是数组名。该数组可以存放50个成绩,分别可以表示成:score0,score1,score49。 这些称为数组元素。,2019/5/21,3,4.1 一维数组 4.2 二维数组 4.3 字符数组与字符串,本章主要内容,2019/5/21,4,4.1.1 一维数组的定义 4.1.2 一维数组元素的引用 4.1

2、.3 一维数组的初始化 4.1.4 一维数组应用举例,4.1 一维数组,2019/5/21,5,例如: int num10; float b10,c5; 数据类型:指定数组元素的数据类型 数组名: 遵循C语言标识符命名规则 常量表达式:示数组中有多少个元素,即数组的 长度。它可以是整型常量、整型常量表达式或符号 常量,数据类型 数组名常量表达式;,4.1.1 一维数组的定义,定义格式:,2019/5/21,6,1. 以下数组定义是正确的: #define N 10 float aN, bN; int num10+N; char c26;,2.以下数组定义是不正确的: int array(10)

3、; int n; float scoren; double ba d; char str ;,4.1.1 一维数组的定义,注意:,2019/5/21,7,3. 数组元素在内存中的存放: 在内存为数组开辟连续的存储空间 一维数组的数组元素在内存中是按顺序存放的。,a 数组,4.1.1 一维数组的定义,2019/5/21,8,格式:,说 明: 下标表达式的值必须是整型表达式。,数组名下标,4.1.2 一维数组元素的引用,不能引用整个数组,只能逐个引用数组中的元素,下标表示该元素在数组中的位置,可以是整型常量或 整型表达式。 例如: int a10,b10; a3,ai+j,b6,bj+5 a0=a

4、4+a2-b2*3;,2019/5/21,9,1. 定义数组时用到的“数组名常量表达式”和引用数组元素时用到的“数组名下标”的区别,例如: int num5; /*定义数组长度*/ t=num3; /*引用数组num中序号为3的元素。此时3不代表数组长度*/,4.1.2 一维数组元素的引用,说明:,2019/5/21,10,2. 下标从0开始(下界为0),数组的最大下标(上界)是数组长度减1。 例如: int num10; num10=3; /* 下标越界 */,C编译系统不做越界检查,如果引用的数组元素 超出数组范围会破坏其他变量的值。,4.1.2 一维数组元素的引用,2019/5/21,1

5、1,例4-1 一维数组元素的引用。 #include void main() int i,num10; for(i=0;i10;i+) numi=i+1; for(i=0;i10;i+) printf(“%3d“,numi); ,程序的运行情况: 12345678910,4.1.2 一维数组元素的引用,2019/5/21,12,格 式:类型说明符 数组名常量表达式= 值1,值2,值3,值n; 例如: int num10=1,2,3,4,5,6,7,8,9,10;,4.1.3 一维数组的初始化,初始化:在定义数组时给数组元素赋初值。,注意:对数组元素初始化若写成如下形式: int num3; n

6、um3=10,20,30; 是错误的,2019/5/21,13,1在定义数组时,对部分数组元素赋初值 例如:int a5=1,2,3;系统为其余元素赋 0 2. 在定义数组时,对全部数组元素赋初值 例如:int a5=0,1,2,3,4; 此时可以省略数组长度,例如:int a =0,1,2,3,4; 3只能给数组元素逐个赋值,不能给数组整体赋值。 int num 10=2,2,2,2,2,2,2,2,2,2; 而不能这样定义: int num10=2; 4当初值的个数多于数组元素的个数时,编译出错 例如: int a5=0,1,2,3,4,5;,4.1.3 一维数组的初始化,2019/5/2

7、1,14,【例4-2】随机输入10个,输出其中的最大数 #include void main() int i,m,max,num10; for(i=0;imax) max=numi; m=i; printf(“The max number:num%d=%dn”,m,max);,4.1.4 一维数组应用举例,程序运行结果如下: 3 9 10 100 4 6 -60 -30 2 1 The max number:num3=100,2019/5/21,15,【例4-3】 将数组中的数据1、3、4、-1、58、60、-2、10、5、98按逆 序重新存放,并输出。 #include void main(

8、) int i,t; int a10=1,3,4,-1,58,60,-2,10,5,98; printf(“The original numbers are:“); for(i=0;i10;i+) printf(“%5d“,ai); for(i=0;i5;i+) t=ai; ai=a9-i; a9-i=t; printf(“nThe exchanged numbers are:“); for(i=0;i10;i+) printf(“%5d“,ai); ,4.1.4 一维数组应用举例,The original numbers are:134-15860-210598 The exchanged

9、numbers are:98510-26058-1431,2019/5/21,16,【例4-4】某个班有15名学生,求出该班级英语考试的平均 成绩及高于平均成绩的学生人数。 #include void main() int english15,i,num; float sum,aver; sum=0; printf(“Please input the students score:n“); for(i=0;i15;i+) scanf(“%d“,4.1.4 一维数组应用举例,2019/5/21,17,aver=sum/15; /*计算平均成绩*/ num=0; for(i=0;i=aver) n

10、um+; printf(“Average=%.2fn“,aver); printf(“%d students%.2f “,num,aver); ,4.1.4 一维数组应用举例,Please input the students score: 如果输入:789878907685924759618969387156 运行结果:Average=72.47 8 students72.47,2019/5/21,18,4.1.4 一维数组应用举例,【例4-5】用选择排序法对输入的数按从小到大 的顺序排序。,选择法排序的算法是:设有10个数,将第1个数与第2至第10个数一一比较,如果第1个数被比较的其它数大

11、,则将小的数与第1个数交换,使第1个数成为10个数中最小的数。第2轮将第2个数与第3至第10个数一一比较,如果第2个数比被比较数大,则将小的数与第2个数交换,使第2个数成为10个数中的次小数,依此类推,直到最后将10个数按由小到大的顺序排列好。,2019/5/21,19,4.1.4 一维数组应用举例,#include #define N 6 void main() int aN; int i,j,t; for(i=0;iN;i+) scanf(“%d“,i+),if(ajai) t=aj; aj=ai; ai=t; printf(“The sorted numbers are:“); for(

12、i=0;iN;i+) printf(“%4d“,ai);,程序运行情况如下: 如果输入:375680 运行结果:035678,2019/5/21,20,4.2.1 二维数组的定义 4.2.2 二维数组元素的引用 4.2.3 二维数组的初始化 4.1.4 二维数组应用举例,4.2 二维数组,2019/5/21,21,数组名常量表达式1常量表达式2;,例如: float a23;,若:int a3,4,b(3,4),c ,d(3)(4);,4.2.1 二维数组的定义,由两个下标组成的数组称为二维数组,其定义格式为:,2019/5/21,22,x0是数组名,是元素x00的地址,x1是数组名, 是元素

13、x10的地址,二维数组可看作是一种特殊的一维数组,x0- x00,x01,x02,x1- x10,x11,x12,float a23; 可以把x数组看作是包含两个元素的一维数组,每个元素又是一个含有三个元素一维数组。,4.2.1 二维数组的定义,2019/5/21,23,二维数组元素在内存中的排列顺序:按行存放,4.2.1 二维数组的定义,2019/5/21,24,例:int a34; a00=3; a01=a00+10;,数组名下标1下标2,数组元素的表示形式 :,4.2.2 二维数组元素的引用,引用二维数组元素需要两个下标去确定位置,“下标1”指定数组元素所在的行,“下标2”指定数组元素所

14、在的列。,2019/5/21,25,1下标1指定数组元素所在的行,下标2指定数组元素所在列。 2下标必须是整型常量或整型表达式。例如: a12=10; aij=ai-1j-1+ai-1j; 3行下标和列下标的下限都为0,上限分别为行数减1和列数减1。 若: int a56; a56=9;,4.2.2 二维数组元素的引用,数组名下标1下标2,2019/5/21,26,例4-6 二维数组元素的引用。 main() int i,j; int a23=1,2,3,4,5,6; for(i=0;i2;i+) for(j=0;j3;j+) printf(“a%d%d=%dn“,i,j,aij); ,4.2.2 二维数组元素的引用,分析:二维数组元素的引用需要两个下标进行确定。若想对二维数组元素进行操作,一般使用二重循环嵌套。,程序运行结果如下:a00=1 a01=2 a02=3 a10=4 a11=5 a12=6,2019/5/21,27,1分行给二维数组赋初值,例:int a34=10,20,30,40,50,60,70,80, 90,100,110,120; 初始化后结果: 10 20 30 40 50 60 70 80 90 100 110 120,2给部分元素赋初值,例:int a

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号