
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501
程序设计基础(上) 张立红 13405330459(88028) QQ:2653453357 9#501

第8章 数组
第 8 章 数 组

本章知识点 8.1一维数组的定义、引用与初始化 “数组名+一维下标”表示数据 8.2一维数组的应用 8.3二维数组 “数组名+二维下标”表示数据 8.4数组与函数
本章知识点 8.1 一维数组的定义、引用与初始化 “数组名+一维下标”-表示数据 8.2 一维数组的应用 8.3 二维数组 “数组名+二维下标”-表示数据 8.4 数组与函数

引例8.1:输入某个班级《程序设计基础》课成绩,要求:统计平均分之 上人数并输出。 分析:(1)考虑最简单情况-只求平均分 并不统计平均分之下的人数。 (2)要求:输出在平均分以上的人数。 ①inti; 把每个人的成绩保存下来,通过已 ② double s=0,sc; ③ 保存的成绩与平均分作比较,统计出平 for(i=1;ik=80;i++) ④ {scanf(%lf',&sc);/重复使用sc 均分之上的人数。 ⑤ s=s+sc;∥次累加求和 问题:怎么保存每个成绩? ⑥ ⑦printf(%lfMn”,s/80); double sc1,sc2,sc3.?? 恩
引例8.1:输入某个班级《程序设计基础》课成绩,要求:统计平均分之 上人数并输出。 分析:(1)考虑最简单情况-只求平均分 并不统计平均分之下的人数。 ① int i; ② double s=0,sc; ③ for ( i=1;i<=80;i++) ④ { scanf(“%lf” ,&sc); //重复使用sc ⑤ s=s+sc; //次累加求和 ⑥ } ⑦ printf(“%lf\n” ,s/80); (2)要求:输出在平均分以上的人数。 -把每个人的成绩保存下来,通过已 保存的成绩与平均分作比较,统计出平 均分之上的人数。 问题:怎么保存每个成绩? double sc1,sc2,sc3. ??

批量数据的表示与处理一数组 “批量数据的处理”问题:即有大量的数据,数据之间有着某种关 系,或者对数据的操作过程是相同的。 >对“批量数据”的处理不适合用多个离散变量分别表示。 解决工具之一:数组 ① 数组属于构造类型。 ② 数组含义清楚,使用方便,明确地反映了数据间的联系。 ③ 数组元素之间有关联性,在操作过程中,对“批量数据”的处理过 程用同样的代码来实现一程序简练。 ④ 许多好的算法都与数组有关;熟练地使用数组,可以大大地提高编 程和解题的效率,加强了程序的可读性
批量数据的表示与处理—数组 Ø “批量数据的处理”问题:即有大量的数据,数据之间有着某种关 系,或者对数据的操作过程是相同的。 Ø 对“批量数据”的处理不适合用多个离散变量分别表示。 解决工具之一:数组 ① 数组属于构造类型。 ② 数组含义清楚,使用方便,明确地反映了数据间的联系。 ③ 数组元素之间有关联性,在操作过程中,对“批量数据”的处理过 程用同样的代码来实现—程序简练。 ④ 许多好的算法都与数组有关;熟练地使用数组,可以大大地提高编 程和解题的效率,加强了程序的可读性

8.1一维数组一P143 8.1.1一维数组的定义 >定义格式: 数据类型符 数组名[整型常量表达式] 数组元素的数 合法的【:数组运算符 米利 不能用() 分号结尾 例如: ①inta10]; /定义了有10个数据元素的int型数组a ②double f20;/定义了有20个数据元素的double型数组f ③char s1[10,s220;/定义了有10个和20个数据元素的 char型数组sl和s2
8.1.1 一维数组的定义

>数组定义说明: (1)定义数组的常量表达式中可以包括常量和符号常量,不能包含变量 (即使是已赋值的变量也不行),也不能是变量表达式。即:数组大小 (长度)必须是整型常量表达式。 (2)C语言规定:数组下标最小值是0,数组下标最大值是数组大小减1。 数组元素的下标从O开始。 例如:inta[10]∥a数组有10个元素-a[0]、a[1].a9] (3)C语言不允许对数组的大小作动态定义,即数组的大小不能依赖于程 序运行过程中变量的值。 错误定义1: 错误定义2: 正确定义: ①intn; ①intn=10; #define N 10; ②scanf%d”,&n); ②int aln;/错 ④int a[N; ③int a[n;/错 ③intb10.3;/错 ②double bIN+10]; ④int cn+10;/∥错
(1)定义数组的常量表达式中可以包括常量和符号常量,不能包含变量 (即使是已赋值的变量也不行),也不能是 即: 例如:int a[10]; // a数组有10个元素-a[0]、a[1].a[9] (3)C语言不允许对数组的大小作动态定义,即数组的大小不能依赖于程 序运行过程中变量的值。 错误定义1: ①int n; ②scanf(“%d” ,&n); ③int a[n];//错 错误定义2: ①int n = 10; ②int a[n]; //错 ③int b[10.3];//错 ④int c[n+10];// 错 正确定义: #define N 10; ① int a[N]; ② double b[N+10];

>数组定义说明: (4)数组元素存储空间的分配:数组定义后,每个数组元素的类型均相 同一每个元素是一个变量,系统将给其分配一定大小的内存单元,所有数 组元素占用内存中一段连续的存储单元。其所占内存单元的大小与数组元 素的类型和数组的长度有关。 数组所占内存单元的字节数=数组大小XSiz0f(数组元素类型) 例如:inta[10 /则数组a所占内存单元的大小为: 10*sizeof(int)=10*4=0(字节) (5)第一个数组元素的地址是整个数组所占内存块的低地址,也是数组所占内存 块的首地址,最后一个数组元素的地址是整个数组所占内存块的高地址(末地址)。 例如,下面对敦组的突义: 首地址 inta10;∥a包含10个元素:a0,a1,a2],.,a9y 末地址 a0] a1] a2] a3] a7] a8] a[9]
数组元素存储空间的分配: 每个数组元素的类型均相 同—每个元素是一个变量, 占用内存中一段连续的存储单元。 数组所占内存单元的字节数 = 数组大小 × sizeof(数组元素类型) (5)第一个数组元素的地址是整个数组所占内存块的低地址,也是数组所占内存 块的首地址,最后一个数组元素的地址是整个数组所占内存块的高地址(末地址)。 a[0] a[1] a[2] a[3] . a[7] a[8] a[9]

课堂练习: (1)inta10]; (2)double f20]; (3)char s1[5,s210; 问题:定义了多少个元素?数组的数据类型? 最后一个元素下标是多少? (1)定义了有10个元素的int型数组a,9 (2)定义了有20个元素的doublez型数组f,19 (3)定义了有10个和20个元素的char型数组s1和s2,49 夏 9/115
课堂练习: 9/115

8.1.2、一维数组元素的引用一P144 > 引用格式: 数组名[下标] >i 引用说明: (1)下标可以是整型常量、整型变量或整型表达式一-整型值 例1:①inti=3,a[10]; ee0900●p00●e ②a[i]=a[7]+a[i*2]: 例2:int a[10]; a 2000 a[0] 第1个元素 2004 a川 第2个元素 占用的字节数为: 内存 2008 a[2] 第3个元素 10 sizeof(int) 地址 =10*4=40 2036 a刨 第10个元素