C言语循环问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:07:51
#include<stdio.h>
void 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;
}
printf("%d\n",a);
}
我希望知道每次循环是什么样的,答案是8
if (b>=20) break; 在b=22时,break是到哪里,最后b=?

a=1,b=1
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=1+3=4
(因为有continue,所以直接进入下一次循环,下同)

a=2,b=4
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=4+3=7

a=3,b=7
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=7+3=10

a=4,b=10
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=10+3=13

a=5,b=13
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=13+3=16

a=6,b=16
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=16+3=19

a=7,b=19
(不满足b>=20)
(满足b%3==1)
执行b+=3;则b=19+3=22

a=8,b=22
(满足b>=20)
break;

break即跳出for循环语句。接下来就是执行for(){}后的语句了。

所以至此,执行printf,输出a值为8

第一次:a=1,b=1,此时,b%3==1,b=b+3,即1+3=4,于是b=4,a++,a=2;
第二次:a=2,b=4,此时,b%3=1,b=b+3,即4+3=7,于是b=7,a++,a=3;
第三次:a=3,b=7,此时,b%3=1,b=b+3,即7+3=10,于是b=10,a++,a=4;
第四次:a=4,b=10,此时,b%3=1,b=b+3,即10+3=13,于是b=13,a++,a=5;
第五次:a=5,b=13,此时,b%3=1,b=b+3,即13+3=16,于是b=16,a++,a=6;
第六次:a=6,b=16,此