试图显示一个编号的网格,陷入无限循环

Trying to display a numbered grid, stuck in an infinite loop

本文关键字:网格 无限循环 编号 一个 显示      更新时间:2023-10-16

我对C++和编程都很陌生,除了获得一行输入并将其打印到屏幕上。(我在Alex Allain的《跳进C++》中工作。)我试图打印出一个简单的3x3网格,每个正方形都有编号(TicTacToe板)。但在一个无限循环中,我被困在了1。我确信这个问题非常简单,可能对每个读到这篇文章的人来说都很明显,但我就是看不出来

这是我的代码,提前感谢您的帮助:

    int main()
    {
        for ( int i = 1; i < 10; i++ )
        {
            cout << "_____________n";
            while ( i <= 3 )
            {
                cout << "| " << i <<" |";
            }
            cout << "n";
            cout << "|---|---|---|n";
            while ( i > 3 && i <= 6)
            {
                cout << "| " << i <<".|";
            }
            cout << "/n";
            cout << "|---|---|---|n";
            while ( i > 6 && i <= 9)
            {
                cout << "| " << i <<".|";
            }
            cout << "|___|___|___|n";
            cout << "n";
        }
    }

首先你有了外循环

for ( int i = 1; i < 10; i++ )

然后你有一个内环

while ( i <= 3 )

然而,当您到达该内部循环时,第一次i将是1,并且它在内部循环中永远不会改变,因此表达式i <= 3始终为true,因此您有一个无限循环。

使用if而不是while。你没有在这些循环中增加任何东西。

您尝试过使用内部for循环吗?

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        // print your stuff here
    }
    // new line comes here
 }

"while"是一个循环结构,而不是只是一个分支指令。把你的"while"语句改为"if",你就应该没事了。