Вложено, если структура не может работать ожидаемым образом - PullRequest
0 голосов
/ 09 июня 2019

Я начинающий программист, который сделал здесь небольшой код для угадывания чисел в качестве упражнения.Код c здесь не печатает «Правильно!»если пользователь угадает правильный номер.Почему это вложено, если структура не работает? сильный текст

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>

int main()
{
    int iRandomNum = 0;
    char cUserInput = 0;
    srand(time(NULL));
    iRandomNum = (rand() % 10) + 1;

    printf("Guess a number between 1 to 10:");
    scanf("%c", &cUserInput);

    if(isdigit(cUserInput))
    {
        if(cUserInput==iRandomNum)
          printf ("Correct!");
        else
          printf("The right answer was %d", iRandomNum);
    }
    else
      printf("You did not enter a digit.");

      return 0;

}

1 Ответ

0 голосов
/ 09 июня 2019

char используется для символов, поэтому, если вы введете 5, scanf назначит символ '5' переменной cUserInput. Если реализация C использует ASCII-кодирование для символов, тогда «5» будет равно 53, которое никогда не будет равно iRandomNum.

Решением является использование int, если вы хотите числа:

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>

int main()
{
    int iRandomNum = 0;
    int cUserInput = 0;
    srand(time(NULL));
    iRandomNum = (rand() % 10) + 1;

    printf("Guess a number between 1 to 10:");
    scanf("%d", &cUserInput);

    if(cUserInput>=1 && cUserInput<=10)
    {
        if(cUserInput==iRandomNum)
          printf ("Correct!");
        else
          printf("The right answer was %d", iRandomNum);
    }
    else
      printf("You did not enter a digit.");

      return 0;

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