int main内部的代码不会中断,因此它放入了一个5x5正方形的8x8数组,只是将其放在了C ++相当长的一行上,所以请帮助我理解它。
char ruta[8][8];
for (int a = 0; a < 8; a++) {
for (int b = 0; b < 8; b++) {
for (int y = 0; y < 5; y++) {
for (int x = 0; x < 5; x++) {
if (x == 0 || x == 4 || y == 4 || y == 0) {
ruta[x][y] = 'a';
}
else {
ruta[x][y] = ' ';
}
ruta[2][2] = 'x';
cout << ruta[x][y];
}
cout << endl;
}
}
}
system("PAUSE");
return 0;
答案 0 :(得分:1)
因此,我将解释您的代码中正在发生的事情。由于最里面的循环(即带有'x'的循环)运行5次,因此负责在一行(即5行)中将数据输出5次。下一个for循环(即带有'y'的循环)基本上使它看起来像5x5数组(即负责打印5列)。使用'a'和'b'的外部循环基本上使它运行8x8,即64次。您已将 ruta 初始化为8x8,但仅使用了4x4(即从0,0到3,3)。其余的,即从4,0到7,7,未使用。干杯!
PS:您能否解释一下为什么使用system(“ PAUSE”),是否使用任何IDE,应该在其中查看日志以查看输出?
答案 1 :(得分:1)
您想要这样的东西吗?
#include <iostream>
constexpr const char* lines[] = {
"aaaaa",
"a a",
"a x a",
"a a",
"aaaaa"
};
int main()
{
constexpr int Row = 3;
constexpr int Col = 2;
for (int j = 0; j != Row; ++j) {
for (auto line : lines) {
for (int i = 0; i != Col; ++i) {
std::cout << line << " ";
}
std::cout << std::endl;
}
}
}
输出:
aaaaa aaaaa
a a a a
a x a a x a
a a a a
aaaaa aaaaa
aaaaa aaaaa
a a a a
a x a a x a
a a a a
aaaaa aaaaa
aaaaa aaaaa
a a a a
a x a a x a
a a a a
aaaaa aaaaa
答案 2 :(得分:0)
让我们检查一下您的代码。
如您所见,您的代码段具有四个嵌套循环。最外面的循环(带有变量“ a”)为2D数组的每一行迭代for循环。第二个循环(带有变量“ b”)为2D数组的每一列迭代for循环。 基本上,这两个循环覆盖2D数组的每个元素。 剩下的两个循环(带有迭代器“ x”和“ y”)执行相同的操作,但仅适用于前5行(第0行到第4行)和前5列(第0列到第4列),即前25个元素。
如果两个元素出现在第一行(第0行),第五行(第4行),第一列(第0列)或第五列(第4列)中,则内部的两个循环将它们用'a'初始化。 声明:
ruta [2] [2] ='x';
使用x在ruta [2] [2]处初始化您的元素。
cout语句位于最内层循环中,因此它的执行次数与最内层循环的执行次数相同,即执行25次(对于前25个元素)。 因此,您将获得5行5列的矩阵作为输出。
我希望这会有所帮助。