请问运行后的输出结果为什么是m=6,看不懂哦,请教各位高手!!!

[复制链接]
查看11 | 回复5 | 2011-9-13 06:46:14 | 显示全部楼层 |阅读模式
#includestdio.hmain(){inti,j,m=1;for(i=1;i3;i){for(j=3;j0;j--){if(i*j3)break;m*=i*j;}}printf(\"m=%d\\n\",m);}
回复

使用道具 举报

千问 | 2011-9-13 06:46:14 | 显示全部楼层
m*=i*j;相当于:m=m*j*i;第一次循环,m=m*1*3,m初始是1,也就是说,现在m值时三了。第二次循环,m=3*1*2,得出m的值是6;第三次循环,m=6*1*1,m还是6;第四次循环,这个时候i=2,j=3,导致i*j3,执行break语句,跳出全部循环,最终m的值时6
回复

使用道具 举报

千问 | 2011-9-13 06:46:14 | 显示全部楼层
adsad
回复

使用道具 举报

千问 | 2011-9-13 06:46:14 | 显示全部楼层
可以这么算第一次循环i=1,j=3,m=3,下一次循环i=1,j=2,m=6,再下一次循环i=1,j=1,m=6,再下一次循环i=2,j=3,则跳出此循环进入到输出函数则m=6.
回复

使用道具 举报

千问 | 2011-9-13 06:46:14 | 显示全部楼层
i是控制外循环的,j则控制内循环,i进去后要把j的值循环完才进入下一个i值,根据内循环里的条件判断是否更新m值,以此下去,最终结果是6没错的
回复

使用道具 举报

千问 | 2011-9-13 06:46:14 | 显示全部楼层
a100是一个表达式它的值是true或者是false所以在c语言中false是0true是非零(用int型输出后就是1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行