下述程序的输出结果是( )

来源:百度知道 编辑:UC知道 时间:2024/05/31 18:09:27
#include<stdio.h>
main()
{
int k=0,m=0;
int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
k++;
k-=j;
}
m=i+j;
printf("k=%d,m=%d",k,m);
}

要详细的说明哦,谢谢

for(j=0;j<3;j++)k++ ; 而K初值也是0
这个地方其实你可以看成for(j=0,k=0;j<3;j++,k++)
可见j与k是同时在自加的,所以k=k-j的值不管怎么循环都是0

i=2的时候循环由于不符合i<2循环结束,
j=3的时候循环由于不符合j<3循环结束,
所以m=i+j=2+3=5

1. k++ 此时j=0
2. k-=j 此时k=1
-----------------------------------就这样执行了你的循环次数3*3次

从总体来看 k++执行了3*3次 然后 减了 (0+1+2)*2 应该结果是5
j呢每次循环完了都是3 i每次完了都是2

结果也就知道了~~~

说的不对的地方告诉我下哦
我没有用编译器执行
就是看出来的

一起学习

测试结果:
k=0,m=5

i=2结束循环,j=3结束循环。所以最终i=2,j=3;
j++同时k++;所以最终k=3;但是每次加了都要-j,即-0,1,2 最后一个3结束循环了.不减.所以k最终为3-0-1-2=0;