首页 > 试题广场 >

有以下程序,程序的输出结果是?

[单选题]

有以下程序

#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);
}

程序的输出结果是?

  • 10
  • 9
  • 8
  • 7
推荐
首先注意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选项正确。
编辑于 2015-04-27 14:39:20 回复(0)
      我认为此题主要考察break和continue;
执行到continue后,a++仍要执行;
执行到break后,a++  不执行;
发表于 2016-04-13 22:26:27 回复(2)
要注意计算,不能马虎呀,a的起始值为1,当循环7次后,a的值为8
发表于 2016-05-18 21:54:55 回复(3)
出现continue 跳出循环,此后程序不再执行
发表于 2017-11-20 19:23:36 回复(0)
在a到7的时候,b由19到22,但是还会执行一次a++
发表于 2017-10-09 16:50:24 回复(0)
for(表达式1;表达式2;表达式3) for循环只在一开始执行表达式1,之后的执行顺序为:表达式2 ☞for语句块(包括continue后跳出该次循环的情况) ☞表达式3 遇到break后结束该循环,不再执行表达式3
发表于 2019-02-15 18:53:01 回复(0)
lgg,;_#.)(# lgg 8#9 .?
发表于 2018-06-06 20:22:03 回复(0)
这里的b=b-5,其实没什么大的作用,或者说没有执行过


发表于 2018-04-01 16:00:48 回复(0)
说一下自己错误地方,错在了大意,b的变化是1.4.7.10.13.16.19.22。而我没注意,1.4.7.11.14.17.20。所以只有6次,然后a变成+6=7
发表于 2017-07-31 10:04:57 回复(0)
for循环先判断后执行
a = 8 循环过程如下:
第一次:a = 1, b = 4 (a++是在判断a<=100之后进行的,算作第二次循环的内容)
第二次后:a = 2, b =  7
...
第7次后 a = 7, b = 22
第八次时,进入循环查看:a在第七次循环之后++,变为8,b尚未改变,仍未22,由于b>20直接跳出循环,此时a = 8


编辑于 2017-05-22 22:21:35 回复(0)
注意a的初始值是1就行了
发表于 2017-04-01 13:08:42 回复(0)
continue 用于跳过本次循环余下的语句,转去判断是否需要执行下次循环,continue终止此次循环,不会终止if。
发表于 2017-03-08 08:30:18 回复(0)
Continue 就不执行后面的语句了
发表于 2016-09-09 22:54:13 回复(0)
当b值为22时跳出循环,不会再次执行a++,所以此时a为8,不是9.
发表于 2016-08-22 10:08:54 回复(0)
a的值:1    2    3     4    5      6     7     8
b的值:1    4    7    10    13    16    19    22
当b值为22时跳出循环,当然也不会再次执行a++,所以此时a为8

发表于 2016-07-28 10:30:22 回复(0)
a++是先执行表达式后再自增 ,执行表达式时使用的是a的原值
++a是先自增再执行表达示,执行表达式时使用的是自增后的a。
例:
int a=0
printf("%d",a++); //输出0,执行完后a=1

int a=0
printf("%d",++a);//输出1,执行完后a=1
发表于 2016-03-13 20:41:07 回复(0)