【问题标题】:How to make code loop back around after a condition of if, C guessing game如何在if条件后使代码循环,C猜谜游戏
【发布时间】:2017-08-31 18:01:09
【问题描述】:

我被困在试图让我的代码在一个条件后循环回来的问题上。

我要求玩家 1 输入一个介于 0 和 99 之间的数字,如果他们输入了超出该数字的任何内容,代码应该要求他们重试。问题是我真的不知道如何从我的代码中启用它。这是我到目前为止所拥有的,我不明白如何在这里抛出一个while循环让它循环回来:

  int secretnumber;
  int guesses;

  printf("Player 1: Type a number between 0 and 99 and press return:\n");
  scanf("%d",&secretnumber);

  if (secretnumber > 99 || secretnumber < 0)
    printf("Secret number cannot be greater than 99 or below 0.");

  else
      printf("Type the number of guesses that player 2 gets and press return: \n");
      scanf("%d",&guesses);

我是新手,完全知道我可能听起来很无能,所以我提前为此道歉。

【问题讨论】:

  • 也测试scanf的返回值。您可能正在与未定义的值进行比较。

标签: c loops if-statement while-loop conditional-statements


【解决方案1】:
  • continue; 将跳过循环体的其余部分并重复循环
  • break; 会跳出循环并跳到循环体之后。

 int secretnumber;
 int guesses;

while (1)  {
  printf("Player 1: Type a number between 0 and 99 and press return:\n");
  scanf(" %d",&secretnumber);

  if (secretnumber > 99 || secretnumber < 0) {
    printf("Secret number cannot be greater than 99 or below 0.\n");
    continue;
    }
 break;
 }

printf( "Type the number of guesses that player 2 gets and press return: \n");
scanf(" %d",&guesses);

顺便说一句:您还应该测试从scanf() 获得的返回值,它是成功分配的数量,或者 -1 表示 EOF。

并且:你可以通过反转条件来简化上面的循环。


【讨论】:

  • 这不会有什么坏处,但是scanf() 格式字符串中的前导空格对于%d 来说是不必要的。
猜你喜欢
  • 2021-05-24
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多