C ++数组问题排长队

时间:2018-09-28 11:14:06

标签: c++ arrays

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;

3 个答案:

答案 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;
        }
    }
}

Demo

输出:

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列的矩阵作为输出。

我希望这会有所帮助。