有以下程序 #include main() {inta,b; for(a=1,b=1;a<=100;a++) {if(b>=20)break; if(b%3==1){b=b+3;continue;} b=b-5; } printf("%d\n",a); }

admin2015-07-31  27

问题 有以下程序
#include
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1){b=b+3;continue;}
b=b-5;
}
printf("%d\n",a);
}
程序的输出结果是

选项 A、10
B、9
C、8
D、7

答案B

解析 首先注意for循环的控制条件当b>=20或者a>100则跳出for循环也即b<20且a<=100时执行for循环;第一次进入循环a=1,b=1均满足循环条件,但b%3==1条件满足,故执行b=b+3,得到b=4,注意有continue,所以后面语句不执行,直接跳转到a++这个语句,所以第一次循环完之后a=2,b=4;进入第二轮循环,b%3==1也是满足的,故再次b=b+3,此轮循环执行之后a=3,b=7,进入下一轮。此后和前面循环同理,都是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. 因此B选项正确。
转载请注明原文地址:https://kaotiyun.com/show/wIDp777K
0

最新回复(0)