C语言求助!

int a,b,c,d,i,j,k;
a=10;b=c=d=5;i=j=k=0;
for (;a>b;++b)i++;
while (a>c++)j++;
do k++;while(a>d++);
当执行程序后,i的值是5,j的值是4,k的值是6。

请问这三个值是怎么求出来?

int a,b,c,d,i,j,k;
a=6;//我们把 a=10 改为 a=6, 简化计算

b=c=d=5;

i=j=k=0;
for (;a>b;++b)

{

    i++;

}

这个简单,b-a=1 所以 i 自加一次  i=1,b在 a》b 执行之后马上自加。


while (a>c++)

{

    j++;

}

这个原理同上  a-b =1 所以 j自加一次。  但是你的答案是错误的,我已经验算过。  
do 

{

    k++;

}while(a>d++);

这个答案是2  

之所以会比 j 大一, 原因就是do-while要比 while 语句 多执行一次。 所以k 的自加次数要多1次。  

我把a改为了6.  现在改回10.

答案是 5 ,5 ,6.  你的答案是错误的, 我验算过了。 

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-08
因为a=10,for循环要进行,1次i++ i=1 b=6
2次i=2 b=7 3.i=3 b=8 4.i=4 b=9 5.i=5 b=10 此时10不大于10结束for i=5
while同for只不过是计算出c的值才对j++,计算了c=5,6,7,8,9,5次j=5
do while先进行k++,再判断当d=10时判断失败此时执行了d=5,6,7,8,9,10,6次k++ k=6追问

i++不是应该先引用再加1吗?那第一次执行for(;a>b;++b)i++时,i的值是取0吗?

追答

结束后就变成1了。

追问

那b可以取6 7 8 9 10,i 就对应 0 1 2 3 4吧?

追答

唉。怎么会对应0 1 2 3 4你?自己在看看书吧

本回答被提问者采纳
第2个回答  2013-09-08
楼主j的结果应当等于5吧?有初始值知a=10,b=5,c=5,d=5,i=0,j=0,k=0依次执行for语句便可得i=5。执行while语句得j=5。而后面的do...while语句则需要先执行一次k++语句,也就是在判断最后一次while(a>d++)不满足时,k++已经执行了一次,所以会有最后结果为6。
第3个回答  2020-01-13
相似回答