C与数据结构 第9次课--一维数组和二维数组的定义和使用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组元素的引用
引用形式 数组名[整型表达式] 下标的取值 0≤ 整型表达式 ≤元素个数-1 例如 int a[10]; 表示有10个整型元素,分别为: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
第4章
二维数组的初始化
二维数组定义时赋值,可以按行分段赋值,也可以 按行连续赋值。 例如 按行分段赋值: int a[3][3]={ {80,75,92}, {61,65,71}, {59,63,70} }; 按行连续赋值: int a[3][3]={ 80,75,92,61,65,71,59,63,70 };
在全部元素赋值的情况下,这两种 赋初值的结果是完全相同的。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组的初始化
例如 (1)int a[3][3]={ {80,75}, {61}, {59,63} }; (2)int a[3][3]={ 80,75,61,59,63 }; (3)int a[3][3]; 问题:这三行的结果如何? (1)
第4章
一维数组的定义
定义形式 类型标识符 数组名[整型常量表达式]; 本质 声明数组元素的类型和个数之后,编译器才能为 该数组分配合适的内存。 举例 #define M 20 int a[10]; 定义a是有10个整型元素的数组 float b[5]; 定义b是有5个浮点型元素的数组 char ch[M+6];定义ch是有M+6即26个元素的字符 型数组
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组定义、数组元素引用的不同
数组定义形式 类型标识符 数组名[整型常量表达式]; 数组元素引用形式 数组名[整型表达式] 两者在形式上相似,但含义完全不同。 ① 数组定义时方括号中给出的是长度,即可取下标 的最大值;只能是常量表达式。 ② 数组元素引用时方括号中给出的是下标值,表示 该元素在数组中的位置标识;可以是常量、变量或 表达式。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
定义的补充说明
① 数组名取名时,要遵循标识符命名规则。 ② 常量表达式,不能放在()中;而是放在[]中。 ③ 常量表达式反映数组的长度,下标从0开始。 ④ 常量表达式中可以包含常量和符号常量,不能包含 变量。即C语言不允许对数组进行动态定义。 例如:int n=10; int a[n]; (错误) ⑤ 经过定义的数组,编译后,会分配到一段连续的内 存单元。 ⑥ 同类型数组可一起定义,用逗号隔开。 例如: i
第9次课----一维数组和二维数组的定义和使用
第4章
初识数组
1、数组是有序数据的集合。 2、数组中的每一个元素都属于同一个数据类型。 3、数组的标识:数组名,本质:标识符。 4、集合中不同元素的标识:下标 5、分类:一维数组、二维数组、多维数组。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
80 61 59 75 0 63 0 0 0 80 59
(2)
75 63 61 0 ?
(3)
? ?
?
?
?
?
?
?
0
0
0
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组初始化说明
可以只对部分元素赋初值,未赋初值的元素自动取 0值。 如对全部元素赋初值,则第一维的长度可以省略, 但第二维不能省略。 二维数组可以看作是由一维数组的嵌套而构成的。 例如,二维数组a[3][4],可分解为三个一维数组, 分别为:a[0]、a[1]、a[2]。 可理解为: int a[4], b[4], c[4]; int a, b, c; int a[3];
第4章
用数组改写引例
#define N 5 void main ( ) 如果不是5名学 { float s[N] , avg=0; 生,而是50名, int i; 只要将第一行的 for (i=0;i<N;i++) 5改成50即可。 { scanf ("%f", &s[i] ); avg += s[i] ; } avg = avg/N; printf( "学生成绩分别为:" ); for (i=0;i<N;i++) printf ("%.2f ", s[i] ); printf ( "平均成绩为:%.2f\n", avg ); }
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组元素赋值方法小结
数组与前面介绍的一般变量一样,必须给它赋予确 定的值之后,才能引用。 赋值方法有: 1、先定义,然后通过赋值运算符实现赋值。 2、在定义的同时进行初始化。 3、通过输入函数(scanf)实现赋值。
注意: 不能对数组整体赋值,只能对元素单独赋值。即:用 循环语句实现逐个对数组元素赋值。
第4章
引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。 思考 如果不是5名学生,而是50名,程序会如何? 如果学生数不定,又该如何编程?
缺点 随学生个数增加,编程将日益繁琐; 如学生数目在编程时未定,则无法编程。 解决办法 引入数组。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
【问题2】将从1开始的10个奇数逆序输出。 分析 (1)因为要输出10个奇数,所以我们可以定义一个 有10个元素的整型数组。 (2)将从1开始的10个奇数依次放到数组中去。 (3)将数组中的值从后到前依次输出。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组应用举例
a[0][1]
a[1][1] a[2][1] a[3][1]
a[0][2]
a[1][2] a[2][2] a[3][2]
a[0][3]
a[1][3] a[2][3] a[3][3]
a[0][3]
a[1][0]
a[1][1]
…… a[3][3]
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组举例
【问题3】输入10个整数,求其中最大的数。 流程图 源程序
看源程序 (9_3) 不能写成: max=0; 或其它
运行程序 (9_3)
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
第4章
用数组实现引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。 分析 (1)定义一个数组来存放5个学生的成绩。 #define N 5 float s[N]; s[0]放第1个学生成绩, s[1]放第2个学生成绩, 依次类推。 (2)用s[i]表示某个学生成绩,则可以用循环来 实现各个成绩的输入,而且可以一边输入,一边 累加求和。
第4章
引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。 分析 流程图 根据前面所学的知识, 我们可以将5个成绩分 别用5个变量来存储, 然后将这5个成绩相加, 得到和之后再求平均 值。 源程序
看源程序 (9_1) 运行程序 (9_1)
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组元素的引用
引用形式 数组名[下标][下标] 其中:下标应为整型表达式。 例如 int a[4][4]; 列
行
a[0][0]
a[1][0] a[2][0] a[3][0]
内存中的 存放形式
a[0][0] a[0][1] a[0][2]
第9次课----一维数组和二维数组的定义和使用
第4章
首页
语言篇学完了,开始学习数据结构基础篇啦。加油!
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
教案
教学主题 一维数组和二维数组的定义和使用 通过本次课的学习,使学生掌握数组的基本 教学目标 概念,一维数组和二维数组的定义、初始化、赋 值、引用。 教学重点 1.一维数组的定义、初始化、赋值及使用 2.二维数组的定义、初始化、赋值及使用 理解二维数组和多维数组
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组举例1
【问题4】一个学习 小组有5个人,每个 人有三门课的考试 成绩。求各门课程 的平均成绩和总的 平均成绩。
流程图 源程序
看源程序 (9_4) 运行程序 (9_4)
《C语言与数据结构》
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
用数组实现引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。
流程图 源程序
看源程序 (9_1_1)
运行程序 (9_1_1)
两个 循环
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组应用举例
二维数组变量的定义
定义形式 类型标识符 数组名[常量表达式1][常量表达式2]; 其中, 常量表达式1表示第一维下标的长度 常量表达式2表示第二维下标的长度
在内存中的存放方式 有两种方式: (1)按行存放,即放完一行之后再顺次放入第二行。 (2)按列存放,即放完一列之后再顺次放入第二列。
在C语言中,二维数组是按行存放的。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组举例
【问题3】输入10个整数,求其中最大的数。 分析 (1)10个整数可以用数组a来存储。 (2)用循环语句配合scanf函数实现给数组元素赋值。 (3)通过穷举比较的方法求最大值。即:先将第一个 值(a[0])看作最大值存入max变量中,然后依次让 max跟后面的值(a[1]、a[2]……)进行比较。
【问题2】将从1开始的10个奇数逆序输出。
流程图 源程序
看源程序 (9_2)
运行程序 (9_2)
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组的初始化
可以在定义数组的同时,给元素赋值。 1、可以只给一部分元素赋值。 •只给数组的前半部分元素赋初值,可连续写出初值。 例如:int a[5]={1,2}; a[0]=1,a[1]=2,其余为0 •给数组的后半部分元素或某些不连续的元素赋初值, 则花括号中分隔数值的逗号不能缺少,把要赋的值写 入适当的地方,而不予赋值的地方应写0。 例如:int a[5]={0,3,0,7,9} 2、可以对全部数组元素初始化。 int a[ ]={1,2,3,4,5}; 例如:int a[5]={1,2,3,4,5}; 当对全部元素赋值时,数组长度可以省略。
int a[3][4];
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组举例1
【问题4】一个学习小组有5 个人,每个人有三门课的考 试成绩(如表所示)。求该 学习小组各门课程的平均成 绩和总的平均成绩。 分析
(1)定义两个符号常量:N为5 , M为3 。 用一个二维数组a[N][M]存放五个人三门课的成绩。 用一个一维数组v[M]存放所求得各课程的平均成绩。 用变量average存放总的平均成绩。 (2)处理二维数组需要用双重循环。内循环处理一门课程 的成绩。外循环共循环三次,处理三门课。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
元素引用的补充说明
引用数组元素时,无越界保护。 例如: int a[10]; a[10]=10; (错误) 只能使用a[0], a[1], ……, a[9]
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
教学难点
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
主要内容
数组的引入 一维数组的定义 一维数组元素的引用 一维数组的初始化 二维数组的定义 二维数组元素的引用 二维数组初始化
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组元素的引用
引用形式 数组名[整型表达式] 下标的取值 0≤ 整型表达式 ≤元素个数-1 例如 int a[10]; 表示有10个整型元素,分别为: a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
第4章
二维数组的初始化
二维数组定义时赋值,可以按行分段赋值,也可以 按行连续赋值。 例如 按行分段赋值: int a[3][3]={ {80,75,92}, {61,65,71}, {59,63,70} }; 按行连续赋值: int a[3][3]={ 80,75,92,61,65,71,59,63,70 };
在全部元素赋值的情况下,这两种 赋初值的结果是完全相同的。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组的初始化
例如 (1)int a[3][3]={ {80,75}, {61}, {59,63} }; (2)int a[3][3]={ 80,75,61,59,63 }; (3)int a[3][3]; 问题:这三行的结果如何? (1)
第4章
一维数组的定义
定义形式 类型标识符 数组名[整型常量表达式]; 本质 声明数组元素的类型和个数之后,编译器才能为 该数组分配合适的内存。 举例 #define M 20 int a[10]; 定义a是有10个整型元素的数组 float b[5]; 定义b是有5个浮点型元素的数组 char ch[M+6];定义ch是有M+6即26个元素的字符 型数组
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组定义、数组元素引用的不同
数组定义形式 类型标识符 数组名[整型常量表达式]; 数组元素引用形式 数组名[整型表达式] 两者在形式上相似,但含义完全不同。 ① 数组定义时方括号中给出的是长度,即可取下标 的最大值;只能是常量表达式。 ② 数组元素引用时方括号中给出的是下标值,表示 该元素在数组中的位置标识;可以是常量、变量或 表达式。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
定义的补充说明
① 数组名取名时,要遵循标识符命名规则。 ② 常量表达式,不能放在()中;而是放在[]中。 ③ 常量表达式反映数组的长度,下标从0开始。 ④ 常量表达式中可以包含常量和符号常量,不能包含 变量。即C语言不允许对数组进行动态定义。 例如:int n=10; int a[n]; (错误) ⑤ 经过定义的数组,编译后,会分配到一段连续的内 存单元。 ⑥ 同类型数组可一起定义,用逗号隔开。 例如: i
第9次课----一维数组和二维数组的定义和使用
第4章
初识数组
1、数组是有序数据的集合。 2、数组中的每一个元素都属于同一个数据类型。 3、数组的标识:数组名,本质:标识符。 4、集合中不同元素的标识:下标 5、分类:一维数组、二维数组、多维数组。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
80 61 59 75 0 63 0 0 0 80 59
(2)
75 63 61 0 ?
(3)
? ?
?
?
?
?
?
?
0
0
0
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组初始化说明
可以只对部分元素赋初值,未赋初值的元素自动取 0值。 如对全部元素赋初值,则第一维的长度可以省略, 但第二维不能省略。 二维数组可以看作是由一维数组的嵌套而构成的。 例如,二维数组a[3][4],可分解为三个一维数组, 分别为:a[0]、a[1]、a[2]。 可理解为: int a[4], b[4], c[4]; int a, b, c; int a[3];
第4章
用数组改写引例
#define N 5 void main ( ) 如果不是5名学 { float s[N] , avg=0; 生,而是50名, int i; 只要将第一行的 for (i=0;i<N;i++) 5改成50即可。 { scanf ("%f", &s[i] ); avg += s[i] ; } avg = avg/N; printf( "学生成绩分别为:" ); for (i=0;i<N;i++) printf ("%.2f ", s[i] ); printf ( "平均成绩为:%.2f\n", avg ); }
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组元素赋值方法小结
数组与前面介绍的一般变量一样,必须给它赋予确 定的值之后,才能引用。 赋值方法有: 1、先定义,然后通过赋值运算符实现赋值。 2、在定义的同时进行初始化。 3、通过输入函数(scanf)实现赋值。
注意: 不能对数组整体赋值,只能对元素单独赋值。即:用 循环语句实现逐个对数组元素赋值。
第4章
引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。 思考 如果不是5名学生,而是50名,程序会如何? 如果学生数不定,又该如何编程?
缺点 随学生个数增加,编程将日益繁琐; 如学生数目在编程时未定,则无法编程。 解决办法 引入数组。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
【问题2】将从1开始的10个奇数逆序输出。 分析 (1)因为要输出10个奇数,所以我们可以定义一个 有10个元素的整型数组。 (2)将从1开始的10个奇数依次放到数组中去。 (3)将数组中的值从后到前依次输出。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组应用举例
a[0][1]
a[1][1] a[2][1] a[3][1]
a[0][2]
a[1][2] a[2][2] a[3][2]
a[0][3]
a[1][3] a[2][3] a[3][3]
a[0][3]
a[1][0]
a[1][1]
…… a[3][3]
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组举例
【问题3】输入10个整数,求其中最大的数。 流程图 源程序
看源程序 (9_3) 不能写成: max=0; 或其它
运行程序 (9_3)
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
第4章
用数组实现引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。 分析 (1)定义一个数组来存放5个学生的成绩。 #define N 5 float s[N]; s[0]放第1个学生成绩, s[1]放第2个学生成绩, 依次类推。 (2)用s[i]表示某个学生成绩,则可以用循环来 实现各个成绩的输入,而且可以一边输入,一边 累加求和。
第4章
引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。 分析 流程图 根据前面所学的知识, 我们可以将5个成绩分 别用5个变量来存储, 然后将这5个成绩相加, 得到和之后再求平均 值。 源程序
看源程序 (9_1) 运行程序 (9_1)
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组元素的引用
引用形式 数组名[下标][下标] 其中:下标应为整型表达式。 例如 int a[4][4]; 列
行
a[0][0]
a[1][0] a[2][0] a[3][0]
内存中的 存放形式
a[0][0] a[0][1] a[0][2]
第9次课----一维数组和二维数组的定义和使用
第4章
首页
语言篇学完了,开始学习数据结构基础篇啦。加油!
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
教案
教学主题 一维数组和二维数组的定义和使用 通过本次课的学习,使学生掌握数组的基本 教学目标 概念,一维数组和二维数组的定义、初始化、赋 值、引用。 教学重点 1.一维数组的定义、初始化、赋值及使用 2.二维数组的定义、初始化、赋值及使用 理解二维数组和多维数组
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组举例1
【问题4】一个学习 小组有5个人,每个 人有三门课的考试 成绩。求各门课程 的平均成绩和总的 平均成绩。
流程图 源程序
看源程序 (9_4) 运行程序 (9_4)
《C语言与数据结构》
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
用数组实现引例
【问题1】输出 5名学生某门功课的成绩及平均成绩。
流程图 源程序
看源程序 (9_1_1)
运行程序 (9_1_1)
两个 循环
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
数组应用举例
二维数组变量的定义
定义形式 类型标识符 数组名[常量表达式1][常量表达式2]; 其中, 常量表达式1表示第一维下标的长度 常量表达式2表示第二维下标的长度
在内存中的存放方式 有两种方式: (1)按行存放,即放完一行之后再顺次放入第二行。 (2)按列存放,即放完一列之后再顺次放入第二列。
在C语言中,二维数组是按行存放的。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组举例
【问题3】输入10个整数,求其中最大的数。 分析 (1)10个整数可以用数组a来存储。 (2)用循环语句配合scanf函数实现给数组元素赋值。 (3)通过穷举比较的方法求最大值。即:先将第一个 值(a[0])看作最大值存入max变量中,然后依次让 max跟后面的值(a[1]、a[2]……)进行比较。
【问题2】将从1开始的10个奇数逆序输出。
流程图 源程序
看源程序 (9_2)
运行程序 (9_2)
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
一维数组的初始化
可以在定义数组的同时,给元素赋值。 1、可以只给一部分元素赋值。 •只给数组的前半部分元素赋初值,可连续写出初值。 例如:int a[5]={1,2}; a[0]=1,a[1]=2,其余为0 •给数组的后半部分元素或某些不连续的元素赋初值, 则花括号中分隔数值的逗号不能缺少,把要赋的值写 入适当的地方,而不予赋值的地方应写0。 例如:int a[5]={0,3,0,7,9} 2、可以对全部数组元素初始化。 int a[ ]={1,2,3,4,5}; 例如:int a[5]={1,2,3,4,5}; 当对全部元素赋值时,数组长度可以省略。
int a[3][4];
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
二维数组举例1
【问题4】一个学习小组有5 个人,每个人有三门课的考 试成绩(如表所示)。求该 学习小组各门课程的平均成 绩和总的平均成绩。 分析
(1)定义两个符号常量:N为5 , M为3 。 用一个二维数组a[N][M]存放五个人三门课的成绩。 用一个一维数组v[M]存放所求得各课程的平均成绩。 用变量average存放总的平均成绩。 (2)处理二维数组需要用双重循环。内循环处理一门课程 的成绩。外循环共循环三次,处理三门课。
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
元素引用的补充说明
引用数组元素时,无越界保护。 例如: int a[10]; a[10]=10; (错误) 只能使用a[0], a[1], ……, a[9]
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
教学难点
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用
第4章
主要内容
数组的引入 一维数组的定义 一维数组元素的引用 一维数组的初始化 二维数组的定义 二维数组元素的引用 二维数组初始化
《C语言与数据结构》
第9次课----一维数组和二维数组的定义和使用