【问题标题】:How to iterate through muti-dimensional arrays如何遍历多维数组
【发布时间】:2018-01-28 13:25:00
【问题描述】:

所以我想打印一个井字棋盘,但如果没有得到疯狂的结果,我无法真正弄清楚如何去做

#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


    【解决方案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";
    }
    

    【讨论】:

      【解决方案2】:

      您似乎使用了错误的第一个索引,0 而不是 i!所以替换你的行

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

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

      而且效果很好!

      附: 2003 年,我写了关于“博弈论”的研究生论文,其中最重要的例子之一是井字游戏,我在 Visual Basic 97 中实现了该游戏,其中包含动画、音频和不输策略电脑播放器。您还可以观看我关于使用 Ghost 播放器进行井字游戏的家庭视频: https://youtu.be/1kL-1lqAt6Y

      【讨论】:

      • 现在一切都说得通了,谢谢。 i 在遍历第一行的整个内部循环中显然为零。我认为很难弄清楚是什么控制了元素,什么控制了“行”,这就是我一直在扔的东西!
      【解决方案3】:

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

      应该改为std::cout &lt;&lt; board[i][j];

      【讨论】:

        猜你喜欢
        • 2013-03-25
        • 2014-10-03
        • 2012-04-16
        • 2013-08-15
        • 1970-01-01
        相关资源
        最近更新 更多