2012-01-16 125 views
1

我创建了一个简单的猜谜游戏程序。我的问题是,我不知道如何将程序循环回程序的开始,一旦用户猜错了一个数字。我希望程序继续询问用户一个号码,直到他得到正确的答案。有人能帮我吗?猜测游戏程序

#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; 
} 
+0

我想你需要一本好书:http://stackoverflow.com/q/562303/10077 – 2012-01-16 20:58:37

回答

0

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

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

当然,你应该修复它的情况下,人们输入Y而不是Y,但问题是,你需要在做包装你的程序while循环(它会执行至少一次)或一段时间循环(在输入条件之前获取初始值)以及初始启动条件。

1

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

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

无论这些应该是简单的查找在任何参考材料您正在使用,并且既可以用它来解决这个问题。

+0

不要忘记'goto'&'setjmp()'! – 2012-01-16 20:45:38

+0

“'goto'&'setjmp()'”&递归...在C中,'main'可以递归地调用:) – pmg 2012-01-16 20:50:59

5

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

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

然后,一旦某些条件为真,并要停止循环,就可以使用break语句退出循环:

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

    if (condition) break; 

    /* ... */ 
} 

这样,当用户猜测正确时,您可以将break移出循环。

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

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

    if (condition) isDone = true; 

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

希望这有助于!

+0

Downvoter-请您评论这个答案有什么问题?如果可能的话,我很乐意改进它。 – templatetypedef 2012-01-16 20:52:47

+0

另请注意,使用'false' /'true'时'#include '。 – Gandaro 2012-01-16 20:57:09

+0

就像它变得干净一样。 – theGrayFox 2013-08-02 23:41:35

1

试试这个:

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

你的预期计划是

#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"); 
} 
+0

@niklas你有没有。 – Mohanraj 2012-04-24 05:16:48