它工作,直到它要求用户再次播放。它会提示用户,但会自动退出并返回命令行。有人能告诉我发生了什么事吗?它没有给我任何警告,我想不出为什么,我试过一些东西。我是新来的。

#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前放置一个空格,以确保忽略该换行符。

10-04 16:24