- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例sz3.c
7.2 二维数组的定义和引用
7.2.1二维数组的定义 二维数组的定义
二维数组定义的一般形式为
Page 135
类型说明符
数组名[常量表达式][常量表达式 数组名[常量表达式][常量表达式]; 常量表达式];
例如: 例如: 定义a为 × 的数组, 为 × 定义 为3×4(3行4列)的数组,b为5×10(5 行 列 的数组 的数组。 行10列)的数组。如下: 列 的数组 如下: float a[3][4],b[5][10]; , ;
1.
7.1.2一维数组元素的引用 一维数组元素的引用
Page 132
存取数组元素的方式是: 存取数组元素的方式是 在写数组名的同时后边加 上一个方括号,括号内放置一个整数值。 上一个方括号,括号内放置一个整数值。该整数 下标。 下标不能超出数组定义的范围.) 值称为下标 下标不能超出数组定义的范围 值称为下标。(下标不能超出数组定义的范围
例sz2.c
数组排序
冒泡排序法 选择排序法
冒泡排序法
【算法的思想】 假设要求数据按由小到大顺序排列,则依次 将a(0)~a(n)中每对相邻元素进行比较,如 果a(i)>a(i+1)则将两个元素中的内容互相 交换,把较大的数字移动到右边.较小的数移动 到左边. a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 32 8 17 45 52 68 11 20
二维数组的行和列的下标都是从0 二维数组的行和列的下标都是从0开始索引
7.2.2二维数组元素的引用 二维数组元素的引用
二维数组元素的引用形式为: 二维数组元素的引用形式为:
Page 136
下标][下标 数组名 [下标 下标 下标 下标]
例: a[3-1][2*2- 表示引用第3行第4 a[2][3] 或 a[3-1][2*2-1] 表示引用第3行第4列元素 b[1][2]=2*a[0][2] - 4*a[1][1] ; 数组a 数组a 0 1 2 0 4 3 10 1 3 12 2 2 6 7 4 3 1 5 9
C语言程序设计
第七章 数组
什么是数组? 什么是数组
C语言中变量只能保存单一的数据。而使 语言中变量只能保存单一的数据。 语言中变量只能保存单一的数据 用数组,程序员则可以来存储一系列数据。 用数组,程序员则可以来存储一系列数据。 数组是有序数据的集合, 数组是有序数据的集合,数组的成员被称为 元素,且所有元素都属于同一数据类型。 元素,且所有元素都属于同一数据类型。
二维数组的初始化方法
如果对全部元素都赋初值, 如果对全部元素都赋初值,则定义数组时对 第一维的长度可以不指定, 第一维的长度可以不指定,但第二维的长度 不能省。 不能省。 例如: 例如: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 等价于: 等价于: int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
二维数组的初始化方法
3.
也可以对各行中的部分元素赋初值 例如: 例如
{3},{2,2},{4, int a[3][4]={ {3},{2,2},{4,4,4} };
上述代码效果如下,其余数组元素值则自动为0 上述代码效果如下,其余数组元素值则自动为 数组a 数组a 0 1 2 0 3 2 4 1 0 2 4 2 0 0 4 3 0 0 0
可以把二维数组看作是一种特殊的一维数组: 可以把二维数组看作是一种特殊的一维数组:它的 元素又是一个一维数组。 元素又是一个一维数组。
例如: 例如: int a[3][4]
数组a 数组a 0 1 2 0 a[0][0] a[1][0] a[2][0] 1 a[0][1] a[1][1] a[2][1] 2 a[0][2] a[1][2] a[2][2] 3 a[0][3] a[1][3] a[2][3]
a[0] 10
a[1] 21
a[2] 32
a[3] 43
a[4] 54
对数组元素初始化的实现方法: 对数组元素初始化的实现方法:
3.
3.
4.
如果括号内给出的初始值个数少于数组个数, 如果括号内给出的初始值个数少于数组个数,则剩余的数 组元素初始化值为0: 组元素初始化值为 例如: 个元素值为0。 例如 int a[10]={0,1,2,3,4}; 后5个元素值为 。 个元素值为 若要将所有数组元素初始化为0,可以参考如下代码: 若要将所有数组元素初始化为 ,可以参考如下代码 int b[5]={0,0,0,0,0}; 或 int b[5]={0}; [ ] [ ] 在对全部数组元素赋初值时,由于数据的个数已经确定, 在对全部数组元素赋初值时,由于数据的个数已经确定, 因此可以不指定数组长度。 因此可以不指定数组长度。 int c[5]={1,2,3,4,5}; [ ] , , , , []={1,2,3,4,5}; 可以写成 int c[] [] , , , ,
Page 132
在声明数组时给予其初始值称为数组初始化, 在声明数组时给予其初始值称为数组初始化,数组初始化 有如下几种方式: 有如下几种方式:
1.
在定义数组时对数组元素赋以初值。 在定义数组时对数组元素赋以初值。 int a[5]={10,21,32,43,54};
将数组元素的初值依次放在一对花括弧内,数值 将数组元素的初值依次放在一对花括弧内 数值 用逗号进行分隔。 用逗号进行分隔。
7.2.3二维数组的初始化 二维数组的初始化
Page 137
分行给二维数组赋初值,每行的初值用括号分组 分行给二维数组赋初值 每行的初值用括号分组. 每行的初值用括号分组 例如: 例如: int a[3][4]= { {1,2,3,4} , {5,6,7,8} , {9,10,11,12} };
a[0][0] 1 a[1][0] 5 a[2][0] 9 a[0][1] 2 a[1][1] 6 a[2][1] 10 a[0][2] 3 a[1][2] 7 a[2][2] 11 a[0][3] 4 a[1][3] 8 a[2][3] 12
例题1:用数组存储数据 例题 用数组存储数据
编写程序代码,将键盘上输入的 个整数保存到数组中 编写程序代码 将键盘上输入的10个整数保存到数组中 将键盘上输入的 个整数保存到数组中.
例sz1.c
找出上面例题里输入的10个数字中最大数和最小数 找出上面例题里输入的 个数字中最大数和最小数. 个数字中最大数和最小数
7.1.1一维数组的定义 一维数组的定义
一维数组的定义格式为: 一维数组的定义格式为:
Page 131
数组名[常量表达式 常量表达式]; 类型说明符 数组名 常量表达式
例如: 例如:
int
a[10] ;
定义了一个整型数组,数组名为 此数组有 定义了一个整型数组 数组名为a,此数组有 个元素 数组名为 此数组有10个元素
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
使用循环语句处理数组元素
例7.1
为数组成员 赋值并输出 数组所有成 员的数值
Page 132
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
7.1.3一维数组的初始化 一维数组ቤተ መጻሕፍቲ ባይዱ初始化
数组名[下标 数组名 下标] 下标
例如: 例如
a[0] a[1] a[2] a[3] ….
int a[10]; 作用是定义数组,a[10] 作用是定义数组 声明了数组的名字和成 员的个数
a[1]代表引用数 代表引用数 组第二个成员
引用数组元素时 下标也可以是整型常量、 下标也可以是整型常量 引用数组元素时,下标也可以是整型常量、变 量或整型表达式。 量或整型表达式。
二维数组运用:求矩阵对角线值和 二维数组运用 求矩阵对角线值和
1 2 3 4 2 3 4 1 3 4 1 2 4 1 2 3
7.2.4程序举例 程序举例7.5 程序举例
的矩阵, 有3×4的矩阵,编程序找出的最大值,以及 × 的矩阵 编程序找出的最大值, 其所在元素的行号和列号。 其所在元素的行号和列号。
常见错误
在使用数组元素时, 在使用数组元素时,应该注意下标值应在已定义的数组大 小的范围内。 小的范围内。 例如: 例如: int a[3][4]; /* 定义 为3×4的数组 */ 定义a为 × 的数组 ┆ a[3][4]=3;
!!错误 错误:a[3][4] 错误 超过了数组的 定义范围
【原因】 原因】 数组的下标是 开始编号. 由0开始编号 开始编号
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 32 8 17 45 52 68 11 20
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] 32 8 17 45 52 68 11 20
冒泡排序算法的原理
第1次:依次将a(0)~a(n)中每对相邻元素进行比较, 使两数中的小数上冒、大数下沉,当所有元素比较 结束时,数组a的最大数到了a(n); 第2次:依次将a(0)~a(n-1)中每对相邻元素进行 比较,使两数中的小数上冒、大数下沉,此次结束 时数组a的次大数到a(n-1); 第i次:依次将a(0)~a(n-i+1)中每对相邻元素进 行比较,使两数中的小数上冒、大数下沉,第i次结 束时数组a的第i大的数到a(n-i+1) 第n-1次:依次将a(0)~a(2)中两个元素进行比较, 使两数中的小数上冒、大数下沉,于是此次结束时 当前最大数即数组a的第n-1大的数“沉底”到了 a(1),a(0)则存放数组的最小数;
二维数组的初始化方法
2.
可以将所有数据写在一个花括号内, 可以将所有数据写在一个花括号内,按数组排列的 顺序对各元素赋初值。 顺序对各元素赋初值。 例如: 例如