为什么C程序为正整数给出错误的输出?

时间:2019-09-27 17:13:07

标签: c if-statement

下面的程序为负整数和零整数给出正确的结果,但是对于正整数,它给出错误的输出:

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");
}

6 个答案:

答案 0 :(得分:7)

你必须写

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");

,对于正数,您将获得两个输出。

答案 1 :(得分:4)

您的第二个if应该是else if。如果您有一个正数,则第一个条件和else都将运行。

答案 2 :(得分:3)

这是因为您正在使用if语句而没有遵循else块。一旦对第一个if进行了评估,它仍然对第二个if进行了评估,然后,如果输入为正,那么它将为false,因此else块将运行,并输出错误的输出。 / p>

答案 3 :(得分:1)

兄弟,如果因为代码检查了第一个检查,即a> 0为true,那么就必须使用else,否则它将继续进行,因为没有其他检查,则继续进行下一个if块,即a <0,为false所以它转到其他条件并打印数字为零。

为了避免它,如果只有一个块为真,则考虑使用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");

答案 4 :(得分:0)

您错过了条件,要使其满意,您必须使用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条件下的任何内容。请尝试上面的代码,您将获得正确的答案。

答案 5 :(得分:0)

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("zero");