二维数组是数组的数组,可以视为表。也可以将二维数组视为代表棋盘,城市街区等的网格。
二维数组声明需要给出行数和列数。
例如:
int a[2][3]; /* A 2 x 3 array */
嵌套花括号用于逐行初始化元素
例如:
int a[2][3] = {
{3, 2, 6},
{4, 5, 20}
};
也可以采用以下形式:
int a[2][3] = { {3, 2, 6}, {4, 5, 20} };
上面两个例子中第一个例子看起来更清晰。
数组还可以具有两个以上的维度。例如,a[5] [3] [4]。
【填空题】以下数组可以容纳多少个元素?
int arr[2][5];
要访问二维数组的元素,需要行索引和列索引。
例如,以下语句显示元素的值,然后分配一个新值:
int a[2][3] = {
{3, 2, 6}, // 第一行元素为 3, 2, 6
{4, 5, 20} // 第二行元素为 4, 5, 20
};
printf("Element 3 in row 2 is %d\n", a[1][2]); /* 20 */
a[1][2] = 25; // 将第二行第三个元素的值修改为 25
printf("Element 3 in row 2 is %d\n", a[1][2]); /* 25 */
这段代码实现了以下功能:
声明一个二维整型数组 a
,包含两行三列的元素。
使用花括号初始化数组 a
,第一行元素为 3, 2, 6,第二行元素为 4, 5, 20。
使用 printf
函数打印数组 a
中第二行第三个元素的值,即 a[1][2]
,输出结果为 20。
将数组 a
中第二行第三个元素的值修改为 25,即 a[1][2] = 25
。
再次使用 printf
函数打印数组 a
中第二行第三个元素的值,输出结果为 25。
使用嵌套的for循环遍历二维数组:
int a[2][3] = {
{3, 2, 6}, // 第一行元素为 3, 2, 6
{4, 5, 20} // 第二行元素为 4, 5, 20
};
int k, j;
/* display array contents */
for (k = 0; k < 2; k++) {
for (j = 0; j < 3; j++) {
printf(" %d", a[k][j]); // 打印数组 a 中的元素
}
printf("\n"); // 换行
}
这段代码实现了以下功能:
声明一个二维整型数组 a
,包含两行三列的元素。
使用花括号初始化数组 a
,第一行元素为 3, 2, 6,第二行元素为 4, 5, 20。
声明整型变量 k
和 j
,用于控制循环。
使用嵌套的 for
循环遍历数组 a
中的元素。
外层循环 k
控制行数,内层循环 j
控制列数。
在循环中使用 printf
函数打印数组 a
中的元素,采用空格分隔。
内层循环结束后,使用 printf
函数打印换行符,将每一行的元素分别显示在不同行上。
外层循环继续执行,直到遍历完所有的行和列。
最终输出结果为:
3 2 6
4 5 20
表示数组 a
的内容。每个元素之间以空格分隔,每一行末尾有换行符。
【选词填空】计算和输出数组元素的总和。
int a[2][3] = {
{3, 2, 6},
{4, 5, 20}
};
int sum=0;
for(int k=0;k<2;k++){
(int j=0; j<3; j++){
sum+=a[][];
}
}
printf("Sum: %d", );
for
a
sum
j
k