以下程序的输出结果是:

main()
{ int x=2,y=1,z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
printf("%d\n",z);
}

A.3 B.2. C.1. D0
请说明 理由

{
int x=2,y=1,z=2 //赋值
if (x<y) //x=2,y=1所以x<y不成立
if(y<0) z=0; //由于前一个判断为否,这一条不执行。
else z+=1; //此条被认为是跟随第二个if语句,因为if语句根本没有执行,所以这一条也不执行。
printf("%d\n",z); //z没有被更改过, z=2
}
选B

程序实际运行的命令:
int x=2,y=1,z=3;
printf("%d\n",z);

这是一个编程时候常容易产生的错误情况。else 被编译器判定为跟随第二个if。所以如果要得到A的答案应该写为:
if (x<y)
{
if (y<0) z=0;
}else z+=1;
所以在遇到if嵌套时,一定要注意使用{},不要在 if后直接跟随第二个if而不加{}。否则容易引起人和编译器的歧义。
不要以为打多了空格,编译器就认识else跟哪个if了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-20
A.3
第2个回答  2010-10-20
a
第3个回答  2010-10-20
bbbbbbbbbbb

参考资料:经TC调试运行