加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

main() {int a,b; for (a=1,b=1;a<=100;a++)

(2017-09-30 11:00:58)
分类: my_work
main()
{int a,b;
for (a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{b+=3; continue; }
b-=5; } }
程序的输出结果a的值为__________。

1、首先注意for循环的控制条件,当b>=20或者a>100则跳出for循环,也即b<20且a<=100时执行for循环,明白这点很重要。
2、其次,第一次进入循环,a=1,b=1均满足循环条件,但b%3==1条件满足,故执行b=b+3操作,得到b=4,注意有continue,所以后面语句不执行,直接跳转到a++这个语句,所以第一次循环完之后:a=2,b=4
3、再次,进入第二轮循环,b%3==1也是满足的,故再次b=b+3,此轮同上轮一样,执行之后:a=3,b=7,进入下一轮。
4、此后,和2、3两步同理,都是b%3==1满足,因为每次都是加3,而之后又去模3,且都跳过for后面语句直接执行a++,所以,一直循环到b=22跳出for循环。此时a为8.

综合起来就是,每次循环b增加3,a增加1,且当b>22时跳出循环,结束程序。所以b从1增加到22,有(22-1)/3=7,所以a=1+7=8.

测试后发现a=8,b=22,具体过程分析如下:
开始时:a=1;b=1
第一次:a=1;b=4
第二次:a=2;b=7
第三次:a=3;b=10
第四次:a=4;b=13
第五次:a=5;b=16
第六次:a=6;b=19
第七次:a=7;b=22
第八次:a=8,此时判断条件b>=20成立,退出循环

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有