如何在C中用x矩阵打印ax?

Eri*_*ans 1 c printf matrix multidimensional-array

int main() {
    char gameArea[][8] = {
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'},
        {'X','X','X','X','X','X','X','X'}};
    int i = 0; int j = 0;
    while (i<8) {
        while (j<8) {
            printf("%c",gameArea[i][j]);
            j++;
        }
        i++;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

XXXXXXXX
Process returned 0 (0x0)   execution time : 0.563 s
Press any key to continue.
Run Code Online (Sandbox Code Playgroud)

理论上,i它将贯穿列,并打印所有列,但事实并非如此.非常感谢你的帮助.

use*_*450 7

我想你想要一个for循环:

for (int i = 0; i < 8; ++i) {
    for (int j = 0; j < 8; ++j) {
        printf("%c", gameArea[i][j]);
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

这是你的循环的进展:

  • i = 0并且j = 0,打印X和增量j.
  • ...
  • i = 0并且j = 7,打印X和增量j.
  • 因为j = 8,stop j-loop和increment i.
  • i = 1j仍然8是因为我们无法执行j-loop,所以增量i.
  • ...
  • i = 7j仍然8是因为我们无法执行j-loop,所以增量i.
  • 现在i = 8停止i循环.

你想要做的是在j-loop 之后增加i你也想要重置j0.除此之外,你想为下一行打印一个新行,否则你最终将连续64行X.

使用for循环:

for (/*initialization*/; /*condition*/; /*increment*/) {
    /*loop body*/
}
Run Code Online (Sandbox Code Playgroud)

使用while循环执行此操作是一个捷径:

/*initialization*/
while(/*condition*/) {
    /*loop body*/
    /*increment*/
}
Run Code Online (Sandbox Code Playgroud)