C语言高手们帮帮忙呀

main()
{
char c1,c2;
for(c1='0',c2='9';c1<c2;c1++,c2--);
printf("%c%c",c1,c2);
printf("\n");
}
答案是:54
请解释一下

main() /*主题
{
char c1,c2; /*定义两个变量,C1和C2
for(c1='0',c2='9';c1<c2;c1++,c2--); /*C1的初始值为0,C2的初始值为9如果C1<C2,则C1进行自增,C2进行自减
printf("%c%c",c1,c2); /*输入C1C2的值
printf("\n"); /*输出回车(即换行)
}

明显,首先C1C2从09变成18,接着27,36,45,最后变成54,此时C1的值为5,C2的值为4,不满足C1<C2,不再进行循环,就把这个结果输出,所以输出是54

不过建议你检查一下细小的地方。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-08-26
FOR语句后面不能加分号
第2个回答  2007-08-26
c1=0,c2=9,c1<c2,所以,c1++,c2--
此时c1=1,c2=8,程序继续循环
c1=2,c2=7
c1=3,c2=6
c1=4,c2=5
c1=5,c2=4
此时c1>c2循环终止,跳出。
答案就是5和4
第3个回答  2007-08-26
因为你在FOR语句后面加了个分号,
所以你的printf("%c%c",c1,c2)是在循环完成后才输出数据,
循环的结果是C1小与C2,即当c1='5',c2='4'时不满足循环条件,
所以最后输出的是'54'了.
第4个回答  2007-08-26
for循环后的分号意味着循环体中内容为空,什么都不做,只是不断在改变循环条件,当循环条件不成立时,执行分号以后的语句
将for后的分号去掉就OK!
相似回答