我怎么能退出do while循环呢

How could I exit from do-while loop?

本文关键字:循环 while do 怎么能 退出      更新时间:2023-10-16

我有这些代码块,属于NIM减法游戏。我想实现的是,用户可以随心所欲地玩游戏。只要用户输入999程序就会退出,否则用户将一直玩到他/她输入999为止。这是我的代码块。我不确定我是否犯了逻辑错误,或者我需要添加一些特定的退出代码。感谢您的时间和关注。

#include <iostream>
#include <cstdlib>
 using namespace std;
 int main()
 {
int total, n;
while(true){
cout << "Welcome to NIM. nEnter 999 to quit the game!nPick a starting total: ";
cin >> total;
if(total==999)
break;
    while(true){
    //pick best response and print results.
    if ((total % 3) == 2)
    {
        total = total - 2;
        cout << "I am subtracting 2." << endl;
    }
    else
    {
        total--;
        cout << "I am subtracting 1." << endl;
    }
    cout << "New total is " << total << endl;
    if (total == 0)
    {
        cout << "I win!" << endl;
        break;
    }
    // Get user’s response; must be 1 or 2.
    cout << "Enter num to subtract (1 or 2): ";
    cin >> n;
    while (n < 1 || n > 2)
    {
        cout << "Input must be 1 or 2." << endl;
        cout << "Re-enter: ";
        cin >> n;
    }
        total = total - n;
        cout << "New total is " << total << endl;
    if (total == 0)
    {
    cout << "You win!" << endl;
    break;
    }
    }
    }
  return 0;
    }

您正在循环中修改total。如果total==999,则在cin>>total开始后测试,如果true,则仅在break之后测试,即

if(total==999)
    break;

并用while(true){} 替换do-while循环

在do while循环中,您试图将字符文字"999"与类型为int的变量total进行比较。

}while(total!='999');

尽管此代码是有效的,但其结果可能与您预期的不同。具有多个符号的字符文字的值是实现定义的。你必须写

} while ( total != 999 );

此外,如果玩家将输入999,您将开始与他一起玩,尽管您必须退出游戏。

所以在我看来,最好使用while循环。例如

while ( true )
{  
   cout << "Welcome to NIM. nEnter 999 to quit the game!nPick a starting total: ";
   cin >> total;
   if ( total == 999 ) break;
   // ...
}

您必须在代码中进行三次更正才能使其正确

首先,你必须检查总数是否等于999,然后在从用户获得总数后打断你的do循环

第二个-你必须在你的第一个while循环中设置相同的条件

最后-而不是while(total!='999'),因为它是整数,所以你应该写while(total!=999)