Почему мой код повторяется при получении ответа? - PullRequest
0 голосов
/ 01 февраля 2019

После этого я нахожу ответ. Я получаю 2 раза вопрос: «Отлично! .. нравится играть снова (у или нет) ;. Даже если я напишу у или п. Проблема не изменится на зависит от ответа. (Кстати, я прошу прощения за мой плохой английский).

Я пытался изменить положение этой записи (если (ответ ..) на первую строку в то время или в конце строки или что-то вроде того.Я пытался положить куда-то перерыв (я думаю, что проблема не в этом, но я пытался).

int main() {
    srand(time(NULL));
    int guess,number;
    char answer;
    number=1+(rand()%1000);
    printf("I have a number between 1 and 1000\n");
    printf("Could you guess my number?\n");
    printf("Please type your guess\n");
    while(1) {
        scanf("%d",&guess);
        if(guess==number) {
            printf("Excellent!You guessed the number!Would you like to play again(y or n)");
            scanf("%c",&answer);
            if(answer=='y') {
                number=1+(rand()%1000);
                printf("I have a number between 1 and 1000 \n");
                printf("Could you guess my number? \n");
                printf("Please type your guess \n");
            }
            else if(answer=='n') {
                return 1;
            }
        }
        else if(guess>number){
             printf("Too high.Try again.\n");
        }
        else if(guess<number){
            printf("Too low.Try again.\n");
        }
    }
}

1 Ответ

0 голосов
/ 01 февраля 2019

В вашем коде будут выполняться следующие два оператора, принимающие ввод из консоли:

scanf("%d",&guess);
...
scanf("%c",&answer);

Когда выполняется scanf("%d",&guess);, он будет читать число из стандартного ввода, но оставит последний новыйстрока (которую вы должны ввести в буферизованном stdin для завершения ввода) в буфере.Последующие scanf("%c",&answer); будут сразу же читать в этой новой строке в answer, не давая пользователю возможности вводить любые дальнейшие буквы.

Пишите ...

scanf(" %c",&answer); 

так, чтобылюбой пробел расходуется перед чтением в «фактическом» символе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...