【问题标题】:Guessing Game Program猜谜游戏程序
【发布时间】:2012-01-16 20:42:57
【问题描述】:

我创建了一个简单的猜谜游戏程序。我的问题是一旦用户猜错了数字,我不确定如何将程序循环回程序的开头。我希望程序继续向用户询问一个数字,直到他正确为止。有人可以帮我吗?

#include <stdio.h>

int main (void) {
    int value = 58;
    int guess;

    printf("Please enter a value: ");
    scanf("%i", &guess);

    if (guess == value) {
        printf("Congratulations, you guessed the right value");
    }
    else if (guess > value) {
        printf("That value is too high. Please guess again: ");
        scanf("%i", &guess);
    }
    else if (guess < value) {
        printf("That value is too low. Please guess again: ");
        scanf("%i", &guess);
    }

    return 0;
}

【问题讨论】:

标签: c


【解决方案1】:

这看起来是while 循环和break 语句的好地方。您可以像这样使用while 循环来无限循环:

while (true) {
    /* ... /*
}

然后,一旦某个条件为真并且您想停止循环,您可以使用break 语句退出循环:

while (true) {
     /* ... */

     if (condition) break;

     /* ... */
}

这样,当用户猜对时,你可以break跳出循环。

或者,您可以使用do ... while 循环,其条件检查循环是否应该退出:

bool isDone = false;
do {
    /* ... */

    if (condition) isDone = true;

    /* ... */
} while (!isDone);

希望这会有所帮助!

【讨论】:

  • Downvoter-您能否评论一下这个答案有什么问题?如果可能的话,我很想改进它。
  • 另请注意,使用false/true时必须#include &lt;stdbool.h&gt;
  • 这样干净利落。
【解决方案2】:

C 语法中有许多循环结构。它们是:

  • for()
  • while()
  • do/while()

这两种方法中的任何一种都应该很容易在您使用的任何参考资料中查找,并且任何一种都可以用来解决这个问题。

【讨论】:

  • 别忘了goto & setjmp()
  • "goto & setjmp()" & 递归 ... 在 C 中,main 可以递归调用:)
【解决方案3】:

试试这个:

printf("Please enter a value: ");
do {
    scanf("%i", &guess);

    if (guess == value) {
        printf("Congratulations, you guessed the right value");
    }
    else if (guess > value) {
        printf("That value is too high. Please guess again: ");
    }
    else if (guess < value) {
        printf("That value is too low. Please guess again: ");
} while (guess != value);

【讨论】:

    【解决方案4】:

    使用do { /*your code*/ } while(condition);

    do {
    /*your code*/
    char wannaPlayAgain;
    wannaPlayAgain = getchar();
    } while(wannaPlayAgain=='y');
    

    当然你应该修复它以防人们输入 Y 而不是 y,但关键是你需要将你的程序包装在一个 do while 循环(它将至少执行一次)或一个 while 循环(获取初始值在您输入条件之前)具有初始启动条件。​​

    【讨论】:

      【解决方案5】:

      你期望的程序是

      #include <stdio.h>
      
      void main (void) {
          int value = 58;
          int guess;
      
          do
          {
              printf("please enter a value : ");
              scanf("%i", &guess);
              if(guess > value)
                  printf("this value is too big, ");
              else if(guess < value)
                  printf("this value is too small, ");
          }while(guess != value);
      
          printf("Congradulation You Guessed The Right Number. \n");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-15
        • 2020-11-22
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多