谁能帮忙看一下关于在c语言中for语句循环,求解?

{
int k,j,m;
for(k=5;k>=1;k--)
{
m=0;
for(j=k;j<=5;j++)
m=m+k*j;
}
printf("%d\n",m);
}
答案是15,我的迷惑:m一直在第二个for里面循环,当j<=5不成立时,跳到第一个for,可是这个for没有m啊?怎么输出m的值的?有人给我说最后是1+2+3+4+5=15,这是在求和,不懂!!!】高手讲一下吧,小弟,刚刚自学,什么都不懂!

慕森王
浏览 345回答 2
2回答

慕标5832272

第一次k = 5然后m=0然后第二重for循环do something然后第二次k=4然后m=0然后第二重循环do something。。。。到最后一次k=1然后m=0然后第二重for循环m=0+1*1 //m=1m=1+1*2 //m=3m=3+1*3 //m=6m=6+1*4 //m=10m=10+1*5 //m=15所以最后输出15关键在于你的m=0放在了第一个for循环里面每次m都被重新赋值为0

慕村225694

答案确实是:15当k取5,4,3,2的时候,虽然第二个for循环会执行,但是在第二个for循环不满足条件的时候,会跳到外层循环中,执行外层循环的时候,m首先被赋值为:0,所以当k=1时,m开始值为0,执行第二个循环的过程是:j=k=1 时:m=0+1*1 j++j=2 时: m=1+1*2 j++j=3 时: m=3+1*3 j++j=4 时: m=6+1*4 j++j=5 时: m=10+1*5 j++j=6时:不满足条件跳出内层循环 同时k=k-1k=0不满足循环条件,跳出外层循环,所以最后输出m的值:15其实这个程序可以简化为:{int k,j,m;m=0;for(j=1;j<=5;j++){m=m+j;}printf("%d\n",m);}
打开App,查看更多内容
随时随地看视频慕课网APP