为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2021-06-01 11:07:22
{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,这是在求和,不懂!!!】高手讲一下吧,小弟,刚刚自学,什么都不懂!
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

第一次
k = 5
然后m=0
然后第二重for循环
do something
然后第二次
k=4
然后m=0
然后第二重循环
do something
。。。。

到最后一次
k=1
然后m=0
然后第二重for循环
m=0+1*1 //m=1
m=1+1*2 //m=3
m=3+1*3 //m=6
m=6+1*4 //m=10
m=10+1*5 //m=15

所以最后输出15
关键在于你的m=0放在了第一个for循环里面
每次m都被重新赋值为0



查看完整回答
反对 回复 2021-06-07
?
慕村225694

TA贡献1880条经验 获得超4个赞

答案确实是: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-1
k=0不满足循环条件,跳出外层循环,所以最后输出m的值:15
其实这个程序可以简化为:
{
int k,j,m;
m=0;
for(j=1;j<=5;j++){
m=m+j;
}
printf("%d\n",m);
}



查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 342 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信