Почему программа на С дает неправильный вывод для положительного целого числа? - PullRequest
0 голосов
/ 27 сентября 2019

Приведенная ниже программа дает правильный результат для отрицательного и нулевого целого числа, но для положительного целого, она дает неправильный вывод:

Enter the value of a : 6
The no is positive
The no is zero

Почему?

int main()
{   int a;
    printf("Enter the value of a : ");
    scanf("%d",&a);
    if(a>0)
        printf("The no is positive\n");
    if(a<0)
        printf("The no is negative\n");
    else
       printf("The no is zero\n");
}

Ответы [ 5 ]

5 голосов
/ 27 сентября 2019

Вы должны написать

if(a>0)
    printf("The no is positive\n");
else if(a<0)
    printf("The no is negative\n");
else
   printf("The no is zero\n");

В противном случае два оператора if выполняются независимо.

if(a>0)
    printf("The no is positive\n");

и

if(a<0)
    printf("The no is negative\n");
else
   printf("The no is zero\n");

и для положительного числа выполучит два выхода.

2 голосов
/ 27 сентября 2019

Ваш второй if должен быть else if.И первое условие, и else запускаются иначе, когда у вас есть положительное число.

1 голос
/ 27 сентября 2019

Это потому, что вы используете операторы if без следующих блоков else.Как только первый if оценен, он все еще оценил второй if, и тогда, когда он будет ложным, если вход положительный, блок else будет запущен, печатая неправильный вывод.

0 голосов
/ 27 сентября 2019

Вы пропустили условие, чтобы его удовлетворить, вы должны использовать if..else..if

int main()
{   
  int a;
  printf("Enter the value of a : ");
  scanf("%d",&a);
  if(a>0)
    printf("The no is positive\n");
  else 
  if(a<0)
    printf("The no is negative\n");
  else
   printf("The no is zero\n");
}

В вашем случае второе условие if не выполнялось, поэтому оно напрямую печатало все, что есть в else условие Пожалуйста, попробуйте код выше, вы получите правильный ответ.

0 голосов
/ 27 сентября 2019

Брат, ты должен использовать else, если, потому что код проверяет первую проверку, т. Е. A> 0, которая является истинной, то она идет после этого, поскольку больше ничего не присутствует, она переходит к следующему блоку if, то есть a <0, который является ложнымпоэтому он переходит к другому условию этого и печатает число ноль.Чтобы избежать этого, рассмотрите возможность использования else, если так, только один блок является истинным, то есть a> 0, и тогда программа завершает условный оператор

if(a>0)
    printf("The no is positive\n");
else if(a<0)
    printf("The no is negative\n");
else
    printf("The no is zero\n");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...