以下程序的输出结果是 main( ) { int x=10,y=10,i; for(i=0;x > 8;y=++i) printf("%d,%d ",x--,y)

以下程序的输出结果是

main( )
{ int x=10,y=10,i;
for(i=0;x > 8;y=++i)
printf("%d,%d ",x--,y);
}(3分)
A、 B、 C、 D、
A、 10 1 9 2
B、 9 8 7 6
C、10 9 9 0
D、10 10 9 1

D、10 10 9 1

第一次执行
for(i=0;x > 8;y=++i) // 此时x = 10, 这句y=++i要循环体执行完后执行,即执行完printf后,在执行到for时。
printf("%d,%d ",x--,y); // 先输出后计算,所以输出10,10,之后x执行减一,x=9.

第二次执行
for(i=0;x > 8;y=++i) // 此时x=9,i=1,y=1,
printf("%d,%d ",x--,y); // x=9,y=1输出9,1,结束后x=8.

第二次执行
for(i=0;x > 8;y=++i) //由于x=8,不满足条件所以退出循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-24
我简单的分析下:
x,y 均初始化为10,
第一次循环, i=0; (x=10)>8; y=1 输出10, 1;
第二次循环,i=1; (x=9)>8; y=2; 输出9, 2;
第三次(x=8)>8 不成立, 退出;

此题考察你 ++ 运算符,
x++ : 先运算x, 再+1;
++x : 先+1, 再运算x;

-- 运算符同理;

(另外说一句, 以后提问最好给分, 一般没人会高兴回答的)
第2个回答  2012-05-24
D、10 10 9 1 我补充一点 y出现过2次 y=10,y=++i 这是C函数变量作用域 外层代码块的变量总是有效的,除非内层的代码对该变量名进行了重新定义,如果内层代码对外层代码块中的变量名进行了重新定义,那么在此内层代码块中,外层代码块的变量就被隐藏
相似回答