C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因

下面程序的输出结果是( )。

#include <stdio.h>

void main( )

{

int
x=5,a=0,b=0;

if(x!=(a+b))
printf("x=5\n");

else
printf("a=b=0\n");

}

A)有语法错,不能通过编译 B)通过编译,但不能连接

C)x=5 D)a=b=0

答案:A

int x=5,a=0,b=0; //设置 x=5,设置a=0,设置b=0
if (x!=(a+b)) printf("x=5\n"); //如果 (a+b不等于5),那么(输出x=5)
else //否则
printf("a=b=0\n"); //输出a=b=0

一个简单的逻辑判断。a和b都是0,加起来也是0,当然不可能等于5,所以输出x=5
else语句之后的语句只有当前一个条件(a+b不等于5)不成立的情况下才执行,所以在这个情况下不执行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-17
#include <stdio.h>
void main( ){
int x=5,a=0,b=0;
if(x!=(a+b))
printf("x=5\n");
else
printf("a=b=0\n");
}
没有错误答案 C
如果有错误的话,就是因为程序空格的问题来自:求助得到的回答
第1个回答  2013-03-17
按照现在的一般标准看,这道题应该选C。如果是严格按照C语言的规范,那这个程序肯定是错的,严格的说,main函数必须有返回值,类型是int,在程序末尾加上return 0;表示程序正常结束,返回非0值表示非正常结束。所以这道题要看你用什么编译器编译了。我所知道的,在微软开发的一些编译器上,void main( )是允许的。其他的编译器有的对这个有要求。所以这道题选A也是没错的。
第2个回答  2013-03-17
选C啊,输出是X=5。