下面程序的运行结果是?

下面程序的运行结果是?()
#include<stdio.h>
main()
{int i,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b- ->=0) k++;
}
printf(“%d,%d”,k,b);
}

A)3,-1
B)8,-1
C)3,0
D)8,-2

答案是D,为什么我老走不对?谁能把运行的过程写一遍?谢谢!

#include<stdio.h>
main()
{int i,b,k=0;
for(i=1;i<=5;i++)
{b=i%2;
while(b- ->=0) k++;
}
printf(“%d,%d”,k,b);
}
for循环第一次运行时:i=1,b=i%2;所以b=1; 在while循环中b--满足条件(1>=0),b变为0,所以k++执行一次,变为1,然后(0>=0),此时b=-1;所以又满足循环条件k=2;第三次执行b--的时候(注意这条语句已经执行!!)所以-1>=0不成立,不执行k++,但是b本身减一得-2;
for循环第二次运行时:i=2,b=i%2=0,那么k=3;
for循环第三次运行时:同第一次执行后k=5
for循环第四次运行时:同第二次执行后k=6
for循环第五次运行时:同第一次执行后k=8 b=-2
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-03
注意b--,是先使用b的值,再减1
相似回答