关于for循环的一道题

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

}
答案是k=0,m=5
这题我不会做....请指教..谢谢

呵呵,兄弟呀,你要自己好好看看呀,这是个嵌套循环,
#include <stdio.h>
void main()
{int i,j,k=0,m=0;
for(i=0;i<2;i++) //这里,你看,不要循环到2时就退出了.所以i=2;
{ for (j=0;j<3;j++) //这里,j要循环到三也退出,虽然它是在i循环里面,但每次执行都会给0值.所以最后,j会到三.
k++; //这里是在j循环里面的,它每次都会自增到3,
k-=j; 虽然k会到三,但是这个不在那个j循环里面,退出的时候,k和j的值是相等的,k又被减到0了.
}
m=i+j; 上面已经看到了,i=2,j=3,那m自然等于五了
printf("k=%d,m=%d\n",k,m);

}

for (j=0;j<3;j++)
{
k++;
}
k-=j;
这里k++会执行3次,所以k=3,
但是k-=j执行时,因为j一定是3,所以k=0.
(外层会循环两次,不过结果和上面一样)

m=i+j; i是循环到2时,i<2不满足,退出循环,所以i=2
j是循环到2时,j<3不满足,退出循环,所以j=3
所以m=2+3=5

在执行第二个for循环结束后,K=3,接着每执行一次i的自增,k就增一次到3后 再减去j(j=3,即执行一次i++,便执行一次j的for循环直到j=3),即最后结果是K=0,而i=2,j=3,所以m=i+j=5。
或许说得有点小乱,不过应该能明白的。