C语言第十二讲二维数组与字符数组解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例7-7 源程序
二维数组
多维数组的空间想象
一维数组: 一列长表或一个向量
二维数组: 一个表格或一个平面矩阵 三维数组: 三维空间的一个方阵 多维数组: 多维空间的一个数据列阵
C语言程序设计
网络信息与计算中心教研室
7.2.2 二维数组的定义和引用
1、定义
类型名 数组名[行长度][列长度]
int a[3][2];
C语言程序设计
网络信息与计算中心教研室
7.2 找出矩阵中最大值所在的位置
将 1 个 3*2 的矩阵存入 1 个 3*2 的二维数组 中,找出最大值以及它的行下标和列下标,并 输出该矩阵。
7.2.1 程序解析
7.2.2 二维数组的定义和引用
7.2.3 二维数组的初始化 7.2.4 使用二维数组编程
C语言程序设计
第十二讲 二维数组和字符数组
主讲:谢华成
教学目的
熟练掌握二维数组的定义、引用、 初始化。
掌握二维数组的存储方式
借鉴一维数组程序处理方式,掌握 二维数组的显示、转置运算、最值 运算及统计问题。
C语言程序设计 网络信息与计算中心教研室
第一部分 二维数组
二维数组的定义、引用、初始化 二维数组的元素在内存中按什么方式存放? 求二维数组中元素的最大值和最小值 二维数组的变换 一维数组中相关算法在二维数组中的实现
网络信息与计算中心教研室
例7-8 生成一个矩阵并输出
定义1个 3*2 的二维数组a,数组元素的值由 下式给出,按矩阵的形式输出a。
a[i][j] = i + j(0≤i≤2,0≤j≤1)
int a[3][2]; a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 0 1 1 2 2 3
C语言程序设计
网络信息与计算中心教研室
#include <stdio.h> int main(void) { int i, j; int a[3][2]; for(i = 0; i < 3; i++) for(j = 0; j < 2; j++) a[i][j] = i + j;
例7-8 源程序
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] i=0 i=0 i=1 i=1 i=2 i=2 j=0 j=1 j=0 j=1 j=0 j=1 0 1 2 1 2 3
C语言程序设计 网络信息与计算中心教研室
数组b 1 2 0 0 4 5 0 0
3 0 0 0
省略行长度
对全部元素都赋了初值, int a[ ][3]={1,2,3,4,5,6,7,8,9}; 或分行赋初值时,在初值表中列出了全部行 static int b[ ][3]={{1,2,3},{},{4,5},{}}
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; static int b[4][3] = {{1,2,3},{ },{4,5}};
数组a 1 2 3 4 5 6 7 8 9
2、顺序赋初值
int a[3][3] = {1,2,3,4,5,6,7,8,9}; static int b[4][3] = {1,2,3,0,0,0,4,5};
建议不要省略
数组a 1 2 3 4 5 6 7 8 9
C语言程序设计 网络信息与计算中心教研室
数组b 1 2 0 0 4 5 0 0
3 0 0 0
7.2.4 使用二维数组编程
行下标和列下标分别做为循环变量 , 通 过二重循环,遍历二维数组 通常将行下标做为外循环的循环变量
列下标
C语言程序设计
内循环
定义1个二维数组a,3行2列,6个元素
int b[5][10];
定义1个二维数组a,5 行 10 列, 50 个元素
C语言程序设计
网络信息与计算中心教研室
先定义,后使用 数组元素的引用: 数组名[行下标] [列下标]
行下标和列下标:整型表达式
行下标的取值范围是[0,行长度-1] 列下标的取值范围是[0,列长度-1]
二维数组的元素在源自文库 存中按行/列方式存放
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
C语言程序设计
网络信息与计算中心教研室
7.2.3 二维数组的初始化
1、分行赋初值
2、引用
int a[3][2]; 3 行 2 列, 6 个元素
a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1]
C语言程序设计
下标不要越界
网络信息与计算中心教研室
二维数组在内存中的存放方式
int a[3][2];
3 行 2 列, 6 个元素 表示1个3行2列的矩阵
网络信息与计算中心教研室
7.2.1 程序解析-求矩阵的最大值
【例 7-7】将1个3*2的矩阵存入1个3*2的二 维数组中,找出最大值以及它的行下标和 列下标,并输出该矩阵。
row 记录最大值的行下标
col
a[row][col]
最大值的列下标
最大值
main() { int col, i, j, row; int a[3][2]; printf(“Enter 6 integers:\n") ; for(i = 0; i < 3; i++) Enter 6 integers: for(j = 0; j < 2; j++) 3 2 scanf("%d", &a[i][j]); for(i = 0; i < 3; i++){ 10 -9 for(j = 0; j < 2; j++) 6 -1 printf("%4d", a[i][j]); printf("\n"); 3 2 } 10 -9 row = col = 0; for(i = 0; i < 3; i++) 6 -1 for(j = 0; j < 2; j++) max = a[1][0] = 10 if(a[i][j] > a[row][col]){ row = i; col = j; } printf("max = a[%d][%d] = %d\n", row, col, a[row][col]); }