下面程序的运行结果是?

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:19:28
下面程序的运行结果是?()
#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

注意b--,是先使用b的值,再减1