内容正文:
C 语言程序设计
2023
翻转课堂实用教程
7.2 二维数组
1
2
3
4
导入二维数组
导入案例
二维数组的定义
引用
初始化
存储方式
知识点
二维数组的
使用案例
案例分析
练习二维数组
的使用
练习题
讲解本节的主要内容,方便学生的学习。
导入案例
案例7.2.1:将C字母保存到矩阵中,并将该矩阵输出到屏幕上。
现有一个C字母的黑白像素图片,下图,在该图片中,C字母的像素点使用黑色表示,其他地方用白色显示。试用矩阵的形式将该图片输出出来。
导入案例
案例7.2.1:将C字母保存到矩阵中,并将该矩阵输出到屏幕上。
为了方便输出,黑色的像素点的矩阵值用1来表示,白色像素点的矩阵值用0来表示。
C字母对应的矩阵
如何保存矩阵中各个元素的值?
9行8列
二维数组
导入案例
#include<stdio.h>
#define M 9 //宏定义,M表示行数,9行
#define N 8 //N为列数,8列
int main(){
/*9行8列的矩阵,需要9行8列的二维数组来存放,初值为0*/
int pic[M][N] = {0};
int i,j;
//1行3、4、5、6列为C字母的一部分,值为1
for(i=3;i<=6;i++)
pic[1][i] = 1;
/*同样,2行2列、3行1列、4行1列、5行1列、6行 2列为C字母一部分,值为1*/
pic[2][2]=1,pic[3][1]=1,pic[4][1]=1,pic[5][1]=1;
pic[6][2]=1;
for(i=3;i<=6;i++)
pic[7][i] = 1;
/*以上代码将C字母的矩阵保存到了二维数组中,下面将该二维数组输出即可。*/
for(i=0;i<M;i++){
for(j=0;j<N;j++)
printf("%2d",pic[i][j]);
printf("
");
}
return 0;
}
运行结果
案例7.2.1程序代码
对矩阵的操作可以用对二维数组的操作来实现。
1、二维数组的定义
二维数组的定义方式为:
数据类型名 数组名[行长度][列长度];
举例:
//定义一个10行10列的二维整型数组rect,共10*10=100个元素。
int rect[10][10] ;
//定义一个10行20列的二维字符数组names,共有10*20=200个字符元素。
char names[10][20];
7.2.1二维数组知识点
二维数组可被看作一个矩阵,有行也有列。定义时,第一个[]内指出的是二维数组的总行数,第二个[]内指出的是该二维数组的总列数,均为整型常量。
每个元素的类型
合法标识符
2、二维数组的引用
二维数组中各个元素的引用方式:
数组名[元素的行下标][元素的列下标];
7.2.1二维数组知识点
(1) 先定义,再引用。
(2) 二维数组中的元素,需要通过其所在的行和列来唯一确定。
(3) 行、列下标均为整型表达式,行下标取值范围:0~行长度-1;列下标取值范围:0~列长度-1,不在这个范围内的下标值为越界,越界会导致溢出。上溢或者下溢会导致程序出现不可预料的错误。
(4) 只能逐个引用数组元素,不能一次性引用整个数组。对数组元素的引用是自由的,通过数组名和元素的行下标、列下标可唯一确定一个数组元素。
在引用,需要给定该元素的行下标和列下标。
第一个[]中的数值为元素的行下标。
第二个[]中数值为元素的列下标。
2、二维数组的引用
二维数组中各个元素的引用方式:
数组名[元素的行下标][元素的列下标];
7.2.1二维数组知识点
举例:
int rect[4][3] ; //定义了一个4行3列的二维数组rect,共4*3=12个元素。
一维数组rect[0]
一维数组rect[1]
一维数组rect[2]
一维数组rect[3]
二维数组逻辑存储方式
0
行 1
2
3
2、二维数组的引用
二维数组中各个元素的引用方式:
数组名[元素的行下标][元素的列下标];
7.2.1二维数组知识点
举例:
int rect[4][3] ; //定义了一个4行3列的二维数组rect,共4*3=12个元素。
二维数组按行存储示意图
rect[0][0] rect[0][1] rect[0][2] rect[1][0] rect[1][1] rect[1][2] rect[2][0] rect[2][1] r