下面的程序为负整数和零整数给出正确的结果,但是对于正整数,它给出错误的输出:
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");
}
答案 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");