第10题  设有下面程序

c_choice10-01

则程序执行后的输出结果是

­      A    4

­      B    5

­      C    18

­      D    39

答案  B

解析

考查continue和break语句的作用。如果理解或记住了下面的知识点,就不难选择。

知识点

① for语句的格式:

­          for (表达式1;表达式2;表达式3)    循环体语句

② for语句的执行规则:

­      计算表达式1的值(仅1次),为循环做准备。计算表达式2的值,若表达式2的值不为0,则执行循环体语句,然后计算表达式3的值。再次计算表达式2的值,如此重复,直到表达式2的值变为0时循环结束。若第1次计算测试表达式2的值就为0,则根本不会进入循环(既不会执行循环体,也不会计算表达式3)。

若省略表达式1或表达式3,则不计算、无动作。

若省略表达式2,则视为非0常量、引起无限循环。这种无限循环一般通过语句break、return等手段来打破。

③ 位于for循环体内的continue语句会立即中止当前循环体的执行,转向计算表达式3,继而计算测试表达式2。

④ 位于for循环体内的break语句会立即结束for循环。

⑤ 在本题程序中,i初始值为4,sum初始值为0。接着执行下面的for语句

­              for (; i < 10; i++) {
­                  if (i % 2 == 0) continue;
­                  sum += i;
­                  break;
­              }

因表达式1缺省,故不计算、无动作。i当前值为4,一上来就计算表达式i < 10,因i<10为真,于是执行循环体:先执行if语句,因i % 2 == 0为真,即i除2余数等于0,于是执行continue语句,立即中止当前循环体,转向计算i++,使i变成5。继而计算i < 10,因i<10仍真,于是再次执行循环体:再次执行if语句,因i % 2 == 0为假,即i除2余数不等于0,故这次不会执行continue,而是继续执行下条语句sum += i;, 将i的当前值5累加于sum之中。因sum初值为0,故sum变成5。接着执行break语句,立即结束for循环。

接下来,执行语句printf(″%d\n″, sum);,输出sum的当前值5,因此选项B正确。

练习题

试为自己设计一道孪生题,举一反三。

孪生题  设有下面程序

c_choice10-02

则程序执行后的输出结果是

­      A    2

­      B    3

­      C    20

­      D    44

答案  B

返回