首页 > 试题广场 >

下列程序的输出结果是 #include void mai

[单选题]
下列程序的输出结果是()
#include <iostream>
using namespace std;

int main(void) {
    int x = 1, i = 1;
    for (; x < 50; i++) {
        if (x >= 10) 
            break;

        if (x % 2 != 0) {
            x += 3;
            continue;
        }
        x -= -1;
    }
    cout << x << ' ' << i << endl;
    return 0;
}


  • 12   7
  • 11   6
  • 12   6
  • 11   7
推荐

本题首先要看清楚一点:x-=-1

其次要知道break和continue的用法,break是直接跳出for循环,continue是,继续执行for循环而不是往下走。

继续分析

条件1:x>=10,结束循环

条件2:x%2!=0,即x与2取余不等于0,也就是x=1、3、5、7、9才会满足该表达式,只要continue一次x+=3,同时i++执行一次

条件3:只要执行x-=-1(相当于x+=1),也就是x=2、4、6、8才会执行该表达式,同时i++也会执行一次

那么

x=1,i=1 满足条件2 则:x=4,i=2

x=4,i=2 满足条件3 则:x=5,i=3

x=5,i=3 满足条件2 则:x=8,i=4

x=8,i=4 满足条件3 则:x=9,i=5

x=9,i=5 满足条件2 则:x=12,i=6

由于12>10,所以本次循环执行break,结束

所以x=12,i=6,答案:选C

编辑于 2019-06-18 14:55:58 回复(1)
选C
该题考察的是“break”和“continue”关键字在程序中的作用区别。
在循环过程中:
  • break:结束整个循环。
  • continue:结束当前满足条件的循环,继续进行下次循环。
根据题目,i 持续递增,1,2,3……;
i=1, x=1;  初始值
i=2, x=4;
i=3, x=5;
i=4, x=8;
i=5, x=9; 
i=6, x=12;  break结束整个循环

发表于 2019-06-17 19:32:02 回复(0)

break退出for循环之后,不再进行i++

发表于 2020-03-02 23:48:20 回复(1)
i++是在最后执行的
发表于 2019-09-18 11:23:50 回复(1)
有没有看成的
x = x-1 ;


发表于 2020-04-06 17:14:50 回复(1)
注意:主要有三点如下
         x-=-1;相当于x=x+1;
         执行continue是直接忽略其后面的语句,直接进行下一次for循环,是整个外围最大的for循环,而不是continue所在的子for循环
         执行break,直接结束循环,而且i++没有进行自增
发表于 2022-08-26 22:35:54 回复(0)
最后是break出来的 i没有再一次 i++ 所以是6
发表于 2022-03-16 10:57:12 回复(0)
原来是x-=-1
发表于 2021-03-31 10:19:24 回复(0)
答案为C选项,注意x-=-1;是加一而不是减一;continue只是跳出本次循环,继续下次循环,而break跳出整个for循环
发表于 2019-06-17 14:58:33 回复(0)
需要注意是求 i 的值,而不是 x 的值
发表于 2022-03-06 20:22:36 回复(0)