如何回到代码中的某个点

新手上路,请多包涵

我是 C++ 编程的新手。

我只是想知道是否有任何方法可以在不使用 whiledo-while 循环的情况下返回代码中的某个点。

这是一个例子:

 int a;

cout << "What's 2+2?";
cin >> a;
if (a==4) {cout << "Nice!";}
else {cout << "WRONG! Try again!";}

所以,如果玩家失败了,我想再次问这个问题,所以回到:

cout << “什么是 2+2?”;

有没有办法在不使用循环的情况下做到这一点?

原文由 Frank Z. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 620
2 个回答

你想重复一些事情直到满足一个条件。这就是循环的定义,在 C++ 中有很多方法可以编写循环。您展示的示例最好使用 do-while 循环处理:

 int a;

do
{
    cout << "What's 2+2?";
    cin >> a;

    if (a == 4) {
        cout << "Nice!";
        break;
    }

    cout << "WRONG! Try again!";
}
while (true);

虽然您可以使用 whilefor 循环:

 int a;

while (true)
{
    cout << "What's 2+2?";
    cin >> a;

    if (a == 4) {
        cout << "Nice!";
        break;
    }

    cout << "WRONG! Try again!";
}

 int a;

for(;;)
{
    cout << "What's 2+2?";
    cin >> a;

    if (a == 4) {
        cout << "Nice!";
        break;
    }

    cout << "WRONG! Try again!";
}

话虽如此,要回答您的实际问题,您可以使用 goto 语句而无需任何其他循环指令:

 int a;

askTheUser:

cout << "What's 2+2?";
cin >> a;

if (a != 4) {
    cout << "WRONG! Try again!";
    goto askTheUser;
}

cout << "Nice!";

但是, goto 在现代编码中很少使用,在应用编译器优化后,它的性能不太可能比 do-while 循环好,并且它对如何使用它有限制.

原文由 Remy Lebeau 发布,翻译遵循 CC BY-SA 3.0 许可协议

用于多次执行代码块的首选语言结构是循环,它可以是 fordo-whilewhile 形式所以我会编写如下代码:

 int a;
bool correctGuess = false;

while (!correctGuess) {
  cout << "What's 2+2?";
  cin >> a;
  if (a==4) {cout << "Nice!"; correctGuess = true; }
  else { cout << "WRONG! Try again!"; }
}

另一种方法是使用递归,即在满足特定条件之前调用自身的函数。然而,对于您的场景,这似乎是一种复杂的方法。

如果 - 出于任何原因 - 您被要求不使用此类循环,您可以使用 goto 语句(尽管这显然不是首选方式; goto 现在很少使用语句):

    int a;

loop:
   cout << "What's 2+2?";
   cin >> a;
   if (a==4) {cout << "Nice!";}
   else {
      cout << "WRONG! Try again!";
      goto loop;
   }

原文由 Stephan Lechner 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题