二维数组及经典案例
文章目录
- 定义
- 初始化
- 二维数组的应用
- 打印二维数组的元素
- 下三角输出
- 求和
- 求最大值
- 矩阵转置
- 杨辉三角形
定义
- 二维数组的定义
- 定义方式:
- 数据类型 数组名[行数][列数];
int a[3][4];float b[2][5];
- 定义方式:
- 数组元素的存放顺序
- 按行序优先

- 数组元素的引用
- 形式:数组名[下标][下标]
初始化
- 二维数组元素的初始化
- 分行初始化
- 按元素排列顺序初始化
- 列数不能省略

- 行数计算:sizeof(a) / sizeof(a[0])
- 列数计算:sizeof(a[0]) / sizeof(int)
二维数组的应用
打印二维数组的元素
#include <stdio.h>int main() {int a[3][2] = {{4, 9}, {2, 8}, {5, 7}};int line_num;int column_num;int i, j;line_num = sizeof(a) / sizeof(a[0]);printf("line number=%d\n", line_num);column_num = sizeof(a[0]) / sizeof(int);printf("column number=%d\n", column_num);for (i = 0; i < line_num; i++) {for (j = 0; j < column_num; j++) {printf("%d ", a[i][j]);}putchar('\n');}return 0;
}
下三角输出
#include <stdio.h>int main() {int a[3][3] = {{3, 6, 19}, {2, 6, 1}, {12, 56, 91}};int i, j;for (i = 0; i < 3; i++) {for (j = 0; j <= i ; j++) {printf("%d ", a[i][j]);}putchar('\n');}return 0;
}
求和
- 输出二维数组所有元素的值,并求和
#include <stdio.h>int main() {int a[3][3] = {{3, 6, 19}, {2, 6, 1}, {12, 56, 91}};int i, j;int sum = 0;for (i = 0; i < 3; i++) {for (j = 0; j < 3 ; j++) {printf("%2d ", a[i][j]);sum += a[i][j];}putchar('\n');}printf("sum=%d\n", sum);return 0;
}
求最大值
- 要求找到二维数组的最大值,以及这个最大值所在的行号和列号。
#include <stdio.h>int main() {int a[3][3] = {{3, 6, 919}, {2, 6, 1}, {12, 56, 91}};int i, j;int max = a[0][0];int line_num, column_num;for (i = 0; i < 3; i++) {for (j = 0; j < 3 ; j++) {if (max < a[i][j]) {max = a[i][j];line_num = i; column_num = j;}printf("%2d ", a[i][j]);}putchar('\n');}printf("max=%d %d %d\n", max, line_num, column_num);return 0;
}
矩阵转置
- 将图a 中所示的数组转成如图b 所示的情况:

#include <stdio.h>int main() {int a[2][4] = {{1, 5, 8, 9}, {2, 6, 3, 1}};int b[4][2];int i, j;for(i = 0; i < 2; i++) {for (j = 0; j < 4; j++) {printf("%d ", a[i][j]);}printf("\n");}printf("***************\n");for (i = 0; i < 4; i++) {for (j = 0; j < 2; j++) {b[i][j] = a[j][i];}}for (i = 0; i < 4; i++) {for (j = 0; j < 2; j++) {printf("%d ", b[i][j]);}printf("\n");}return 0;
}
杨辉三角形
- 打印杨辉三角的前十行
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
#include <stdio.h>int main() {int a[10][10] = {0};int i, j;for (i = 0; i < 10; i++) {a[i][0] = 1;for (j = 1; j < i; j++ ) {a[i][j] = a[i-1][j-1] + a[i-1][j];}a[i][j] = 1;}for (i = 0; i < 10; i++) {for (j = 0; j <= i; j++) {printf("%-5d", a[i][j]);}printf("\n");}return 0;
}
