【问题标题】:While loop failing to begin ignoring if statements and conditions as a resultWhile 循环未能开始忽略 if 语句和条件
【发布时间】:2017-04-06 01:59:58
【问题描述】:

我正在开发一个猜谜游戏程序。然而,用于识别个人是否猜到正确数字的循环甚至无法开始我得到这个:

Player 1: Type a number between 0 and 99 and press return:
1
Type the number of guesses that player 2 gets and press return:
1
Sorry you are out of guesses. You lose.

循环在它开始之前就终止了,我不知道如何让它工作。

这是循环的代码:

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

  while (remainingguesses != 0) {
    printf("Player 2: Type your guess and press return (guesses remaining:%d):\n",remainingguesses);
    scanf(" %d",&secretnumberguess);

    if (secretnumberguess > secretnumber) {
      printf("Your guess was greater than the secret number.\n");
      remainingguesses = guesses - 1;
    }

    else if (secretnumberguess < secretnumber){
        printf("Your guess was less than the secret number.\n");
        remainingguesses = guesses - 1;
    }

    else{
          printf("Your guess was equal to the secret number. You win!\n");
    }
  }

  if (remainingguesses == 0)
    printf("Sorry you are out of guesses. You lose.\n");

我对编程还很陌生,所以请原谅我的无知。

如果你想看的话,这里是完整的代码:

#include <stdio.h>

int main()
{

  int secretnumber;
  int guesses;
  int secretnumberguess;
  int remainingguesses;

  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);

  while (remainingguesses != 0) {
    printf("Player 2: Type your guess and press return (guesses remaining:%d):\n",remainingguesses);
    scanf(" %d",&secretnumberguess);

    if (secretnumberguess > secretnumber) {
      printf("Your guess was greater than the secret number.\n");
      remainingguesses = guesses - 1;
    }

    else if (secretnumberguess < secretnumber){
        printf("Your guess was less than the secret number.\n");
        remainingguesses = guesses - 1;
    }

    else{
          printf("Your guess was equal to the secret number. You win!\n");
    }
  }

  if (remainingguesses == 0)
    printf("Sorry you are out of guesses. You lose.\n");

  return 0;
}

【问题讨论】:

  • 剩余猜测最初是否设置为 0?
  • No remainingguesses 是猜测的结果 - 1. 它没有我设置的值。
  • scanf("%d",&guesses);添加这一行 printf("%i", remainingguesses );。打印什么值?
  • int 剩余猜测;最初没有设置值,因此它不会进入 while 循环。它需要一个初始值。
  • 您应该打开编译器警告,阅读它们并修复它们。这样做会指出与 cosmoonot 给出的相同原因,但是您只需要编译器,而不需要 StackOverflow 社区。​​span>

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


【解决方案1】:

您的剩余猜测导致您无法进入循环。也许不是将其用作检查,而是使用标志并在循环内部检查 if 循环中的剩余猜测。并在 if 循环内相应地更改标志。

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2019-10-22
    • 2023-02-15
    • 2021-05-31
    • 1970-01-01
    • 2013-06-09
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多