如何遍历多维数组

问题描述 投票:0回答:3

所以我想要打印一个井字游戏板但是如果没有得到疯狂的结果就无法真正解决这个问题

#include <iostream>

int main()
{
    const int ROWS = 3;
    const int COLUMNS = 3;

    char board[ROWS][COLUMNS] =
     { {'X', 'O', 'X'},
       {' ', 'O', 'O'},
       {'X', 'X', 'O'} };

    for (int i = 0; i < COLUMNS; i++)
       {
        for (int j = 0; j < ROWS; j++)
        {
            std::cout << board[0][j];
        }

        std::cout << "\n";
       }

}
for-loop multidimensional-array
3个回答
0
投票

看来你使用了错误的第一个索引,0而不是i!所以更换你的线

std::cout << board[0][j];

std::cout << board[i][j];

它工作正常!

附:在2003年,我写了我的毕业论文与“博弈论”,其中一个最重要的例子是tic-tac-toe游戏,我在Visual Basic 97中实现了动画,音频和非失败策略电脑播放器。您还可以看到我的家庭视频,关于与幽灵玩家的tic-tac-toe:https://youtu.be/1kL-1lqAt6Y


1
投票

打印输出从不迭代电路板的行。此外,您已将行和列混合在一起,让外循环(第一个)在ROWS上迭代,在内部在COLUMNS上迭代。

更改

for (int i = 0; i < COLUMNS; i++) {
  for (int j = 0; j < ROWS; j++) {
    std::cout << board[0][j];
  }
  std::cout << "\n";
}

for (int i = 0; i < ROWS; i++) {
  for (int j = 0; j < COLUMNS; j++) {
    std::cout << board[i][j];
  }
  std::cout << "\n";
}

0
投票

您只是一次又一次打印第一行,即std::cout << board[0][j];

它应该是std::cout << board[i][j];而不是。

© www.soinside.com 2019 - 2024. All rights reserved.