有以下程序 #include <stdio.h> main() { int a, b; for( a=1,b=1; a<=100; a++ ) { if(b>=20) break;

admin2020-07-28  23

问题 有以下程序
    #include <stdio.h>
    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

答案C

解析 首先注意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. 因此C选项正确。
转载请注明原文地址:https://kaotiyun.com/show/JU3p777K
0

最新回复(0)