格子优品:谁能帮帮我啊?这个题目怎么做啊?

来源:百度文库 编辑:高考问答 时间:2024/05/08 17:46:08
.有以下程序 a
?? main()
?? {
?? int a=3,b=4,c=5,d=2;
?? if(a>b)
?? if(b>c)
?? printf("%d",d++ +1);
?? else
?? printf("%d",++d +1);
?? printf("%d\n",d);
?? }
?? 程序运行后的输出结果是
?? A)2 B)3 C)43 D)44

该题答案为A;
相当于以下程序
main()
--{
-----int a=3,b=4,c=5,d=2;
-----if(a>b)
------{
--------if(b>c)
----------printf("%d",d++ +1);
--------else
----------printf("%d",++d +1);
-------}
-----printf("%d\n",d);
--}
其中,第一个if(a>b)后面相当于跟了一个复合语句。第一个条件a>b是不满足的,所以直接执行最后一条语句,即执行printf("%d\n",d);语句,所以运行结果为2

c

C
这个应该是第一个if控制范围的问题了..
因为没有括号,不太好判断...
但是由于没有括号,第一个if其实只控制到第六行..
所以else的内容会运行一次..
然后再运行一次最后的prinft..输出两次

第一次printf,++d = 3 最后输出4 ,此时d =3
第二次输出d, 结果 3
所以应该是 43

main()
{
--int a=3,b=4,c=5,d=2;
--if(a>b)
----if(b>c)
------printf("%d",d++ +1);
--else
----printf("%d",++d +1);
--printf("%d\n",d);
}
程序结构应该是这样子的..