C语言题目,不明白为什么选B吖,能详细地解说一遍吗?谢谢。

如题所述

第1个回答  2014-01-04
1、--b结果为9,a--表达式的值为10,输出后a的值变为9。因此第一行输出10,9
2、b=++k,因此b=1,此时a=9所以大于8,因此继续循环,--b此时为0,而a--的值为9,输出后a变为8;
3、b=++k,此时b变为2,但是由于a为8而不大于8,所以循环结束。

严格的说,你的选项中任何一个都不对,因为忽视了输出换行符。所以结果应该为:
10,9,
9,0,
第2个回答  2014-01-04
其实这个打印语句执行了两次。隐含的条件是a--;
第一次,a>8成立执行,打印语句,a--的意思是,先使用a的值,然后再将a的值减减,所以先打印了10,而b- -的意思是,先将b执行减减操作,然后打印b的值,即打印9
第二次,第一次执行完成后,a = 9,b = 1(由b = ++k这个语句得到),所以再执行一次打印 9 ,0
你可以这么看这段代码
int a =10,b = 10,k;
for(k =0; a>8; a--)
{
printf("%d,%d\n",a--,--b);
b=++k;
}本回答被提问者采纳
第3个回答  2014-01-04
在输出语句中,a--实际上看可以看成是a,只是在执行完那条语句后a再自减。而--b是在自减后再取其值输出。追问

这个我明白吖,第一次循环可以得到:a=10,b=0;第二次循环可以得到:a=9,b=1。所以a的输出结果是10和9,排除了选项ACD。但是我不明白答案b的输出结果是9和0?

追答

b的第一次输出是在吧经过一次自减后的输出,所以为9.
后一次是经过b=++kf赋值后,值变为1后再经过自减一次的输出结果