运行之后输出a的值为8。
第1次循环a=1,b=4;
第2次循环a=2,b=7;
第3次循环a=3,b=10;
第4次循环a=4,b=13;
第5次循环a=5,b=16;
第6次循环a=6,b=19;
第7次循环a=7,b=22;
第8次循环a=8,b=22。
#include
int main()
{
int a,b;
for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{b+=3;printf("a=%d,b=%d\n",a,b); continue; }
b-=5;
printf("a=%d,b=%d\n",a,b);
}
printf("a=%d,b=%d\n",a,b);
return 0;
}
扩展资料:
break语句和continue语句的区别
1.break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。
2.continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。
参考资料:
百度百科-break
好吧,我来分析吧:
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.
ps:楼上的做错了的,b=22时,a已经等于8了,此时判断b>=20条件成立,直接跳出,a还是等于8。一次完整的for循环应该是到a++执行完成。
测试后发现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成立,退出循环
a=8
b=22