C语言二维数组详解
一、什么是二维数组
二维数组是由多个一维数组组成的数据结构,它的特点是可以用行和列(或横向和纵向)来表示数据的位置。在C语言中,二维数组实际上是一个元素为一维数组的一维数组,二维数组中的元素使用两个下标(或索引)来确定。
int arr[2][3]; // 定义一个二维数组,有2行3列的整型数据类型
上面的代码定义了一个2行3列的数组,其中,每个元素都是一个整型数据类型。
二、二维数组的基本操作
1. 初始化二维数组
// 静态初始化
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
// 动态初始化
int arr[2][3];
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
arr[i][j] = i * 3 + j + 1;
}
}
注:动态初始化需要使用两层循环逐一为每个元素赋值。
2. 访问二维数组元素
int a = arr[1][2]; // 获取arr数组第二行第三列元素的值,即6
注:二维数组的元素下标从0开始。
3. 遍历二维数组
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
注:循环遍历数组时,外层循环遍历行,内层循环遍历列,并使用printf()函数打印输出数组元素的值。
三、二维数组示例
1. 用二维数组实现矩阵加法
需要满足两个矩阵行和列相等才能相加。先定义两个矩阵,并初始化数据,然后再遍历矩阵,分别将对应位置的元素相加即可。
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int b[2][3] = {{7, 8, 9}, {10, 11, 12}};
int result[2][3];
for(int i = 0; i < 2; i++) {
for(int j = 0; j < 3; j++) {
result[i][j] = a[i][j] + b[i][j];
printf("%d ", result[i][j]);
}
printf("\n");
}
2. 用二维数组实现井字棋游戏
先定义一个3x3的二维数组,并初始化所有元素值为“-”表示空格。然后两个玩家轮流输入相应坐标,将相应元素修改为玩家对应的标记。每次修改后重新遍历数组,查看是否出现了连续三个相同的标记(横向、竖向或斜向)。
char board[3][3];
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
board[i][j] = '-';
}
}
char player1 = 'X';
char player2 = 'O';
int count = 0; // 记录棋盘中已填入的格子数
while(count < 9) {
int row, col;
printf("Player1, please enter row and col: ");
scanf("%d%d", &row, &col);
board[row][col] = player1;
count++;
// 判断是否连成3个一样的
// TODO ...
printf("Player2, please enter row and col: ");
scanf("%d%d", &row, &col);
board[row][col] = player2;
count++;
// 判断是否连成3个一样的
// TODO ...
}
以上示例展示了二维数组的基本使用方法,希望能够对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C 语言 二维数组 - Python技术站