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

admin2019-04-24  27

问题 有以下程序
#include
main()
{  int  a, 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/2hRp777K
0

最新回复(0)