它工作,直到它要求用户再次播放。它会提示用户,但会自动退出并返回命令行。有人能告诉我发生了什么事吗?它没有给我任何警告,我想不出为什么,我试过一些东西。我是新来的。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
char goAgain='y';
int theNum=0;
int guess=0;
int max=0;
do{
do{
printf("Enter a number over 99: ");
scanf("%d", &max);
if(max <= 99) {
printf("Please enter a number over 99");
}
}while(max <= 99);
srand(time(NULL));
theNum = (rand() % max) + 1;
do{
printf("Please enter a guess:\n ");
scanf("%d", &guess);
if(guess > theNum) {
printf("Too high\n");
}
else if(guess < theNum) {
printf("Too high\n");
}
else {
printf("That's correct!\n");
}
}while(theNum != guess);
printf("Would you like to play again? (y/n): ");
scanf("%c", &goAgain);
}while(goAgain == 'y');
return(0);
}
最佳答案
scanf("%c", &goAgain);
应该是
scanf(" %c", &goAgain);
注意
%c
之前的空格,它忽略换行符(以及任何其他空格)。扫描整数时有一个换行符,您的
scanf("%c",&goAgain);
正在使用该换行符,因此请在格式说明符%c
前放置一个空格,以确保忽略该换行符。