四、二维数组
-
二维数组的定义:
(1) 数据类型 数组名[行数][列数]; int a[3][2]; // 定义一个数组a,3行2列 (2) 行和列都有各自的下标,行标为:行数-1 ; 列标为:列数-1 (3) 二维数组的访问:数组名[行标][列标] , a[1][0] (4) 二维数组的遍历: int i,j; for(i=0;i<行数;i++){ for(j=0;j<列数;j++){ // 通过 数组名[行标][列标] 访问数组元素 } }
#include<stdio.h> void main(){ int a[3][2]; a[0][0]=1; a[0][1]=2; a[1][0]=9; a[1][1]=8; a[2][1]=3; int i; int j; for(i=0;i<3;i++){ for(j=0;j<2;j++){ printf("%d\t",a[i][j]); } printf("\n"); } }
-
二维数组的初始化
(1) 语法1:数据类型 数组名[行数][列数]= {{值1,值2},{值3,值4}}; 例如:int a[2][3] = {{3,5,6},{7,9,2}}; (2) 语法2:数据类型 数组名[行数][列数] = {值1,值2,值3,值4,值5}; 例如:int a[2][3] = {2,5,7,9,3,8}; (3) 对部分数组元素赋值案例: int a[][] = {1,2,3,0,0,0,4,5}; int a[][] = {{1,2,3},{ }, {4,5}};
-
二维数组案例:杨辉三角形
(1) 示例: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 (2) 代码实现: #include<stdio.h> void main(){ int i = 0; int j = 0; int n = 0; scanf("%d", &n); int a[10][10] = { 0 }; //存放元素 for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (j == 0 || i == j) //第一列和i==j时直接赋值为1 { a[i][j] = 1; } if (i >= 2 && j >= 1) { a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } } } //打印 for (i = 0; i < n; i++) { for (j = 0; j <=i; j++) { printf("%d ", a[i][j]); } printf("\n"); } }