问题描述:
根据下面的代码和结果回答下面的问题。如何定义一个2维数组,然后使用2层嵌套的for循环遍历2维数组中的每个元素?如何定义一个3维数组,然后使用3层嵌套的for循环遍历3维数组中的每个元素?
代码:
// Created by 黑马程序员.
#include "iostream"
using namespace std;
/*
* 会有多层嵌套循环
* 每一层循环对应一个维
* 一般for循环更为方便
*/
int main()
{
int v1[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
for (int i=0; i < sizeof(v1) / sizeof(v1[0]); i++)
{
// v1[0] -> {1, 2, 3};
// v1[1] -> {4, 5, 6};
for (int j=0; j < sizeof(v1[0]) / sizeof(v1[0][0]); j++)
{
cout << v1[i][j] << endl;
}
}
int v2[2][2][3] = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
}
};
for (int i=0; i < sizeof(v2)/sizeof(v2[0]); i++)
{
// v2[0] {
// {1, 2, 3},
// {4, 5, 6}
// },
// v2[1] {
// {7, 8, 9},
// {10, 11, 12}
// }
for (int j=0; j < sizeof(v2[0])/sizeof(v2[0][0]); j++)
{
// v2[0][0] -> {1, 2, 3}
// v2[0][1] -> {4, 5, 6}
for (int k=0; k < sizeof(v2[0][0])/sizeof(v2[0][0][0]); k++)
{
cout << v2[i][j][k] << endl;
}
}
}
return 0;
}
结果:
D:\CLion_code\cmake-build-debug\CLion_code.exe
1
2
3
4
5
6
1
2
3
4
5
6
7
8
9
10
11
12
Process finished with exit code 0
问题解答:
如何定义一个二维数组并使用嵌套的 for
循环遍历每个元素?
定义二维数组:
int v1[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
遍历二维数组:
for (int i = 0; i < sizeof(v1) / sizeof(v1[0]); i++) {
for (int j = 0; j < sizeof(v1[0]) / sizeof(v1[0][0]); j++) {
cout << v1[i][j] << endl;
}
}
解释:
sizeof(v1) / sizeof(v1[0])
计算数组的行数。sizeof(v1[0]) / sizeof(v1[0][0])
计算每行中的元素个数。
遍历的过程:
- 外层循环
i
控制行遍历。 - 内层循环
j
控制列遍历。 - 使用
v1[i][j]
访问二维数组中的每个元素。
如何定义一个三维数组并使用嵌套的 for
循环遍历每个元素?
定义三维数组:
int v2[2][2][3] = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
}
};
遍历三维数组:
for (int i = 0; i < sizeof(v2) / sizeof(v2[0]); i++) {
for (int j = 0; j < sizeof(v2[0]) / sizeof(v2[0][0]); j++) {
for (int k = 0; k < sizeof(v2[0][0]) / sizeof(v2[0][0][0]); k++) {
cout << v2[i][j][k] << endl;
}
}
}
解释:
sizeof(v2) / sizeof(v2[0])
计算三维数组的第一维度大小(层数)。sizeof(v2[0]) / sizeof(v2[0][0])
计算每层中二维数组的行数。sizeof(v2[0][0]) / sizeof(v2[0][0][0])
计算每行中元素的个数。
遍历的过程:
- 外层循环
i
控制三维数组的第一维度。 - 中间层循环
j
控制二维数组的行遍历。 - 内层循环
k
控制列遍历。 - 使用
v2[i][j][k]
访问三维数组中的每个元素。
运行结果
遍历二维数组时,输出为:
1
2
3
4
5
6
遍历三维数组时,输出为:
1
2
3
4
5
6
7
8
9
10
11
12
总结
- 二维数组通过两层
for
循环遍历,每层分别对应数组的行和列。 - 三维数组通过三层
for
循环遍历,每层分别对应三维数组的不同维度。