#Z0003. C++阶段测试(第 20 节 ~ 第 26 节)

C++阶段测试(第 20 节 ~ 第 26 节)

C++ 阶段测试(第 20 节 ~ 第 26 节)

共 40 题,全部为单项选择题,每题 2.5 分,满分 100 分。建议用时 45 分钟。

第 1 题

1.阅读下面的程序片段,执行后输出的结果是( )。

int s = 0;
for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) continue;
    s += i;
}
cout << s;

{{ select(1) }}

  • 20
  • 25
  • 30
  • 55

第 2 题

2.阅读下面的程序片段,执行后输出的结果是( )。

int cnt = 0;
for (int i = 1; i <= 100; i++)
    if (i % 3 == 0 && i % 5 == 0) cnt++;
cout << cnt;

{{ select(2) }}

  • 6
  • 5
  • 7
  • 33

第 3 题

3.阅读下面的程序片段,关于输出结果描述正确的是( )。

for (int i = 1; i <= 4; i++) {
    for (int j = 1; j <= i; j++) cout << "*";
    cout << endl;
}

{{ select(3) }}

  • 输出 1 行,共 4 个星号
  • 输出 4 行,每行星号个数依次为 4、3、2、1
  • 输出 4 行,每行星号个数依次为 1、2、3、4
  • 输出 4 行,每行都是 4 个星号

第 4 题

4.阅读下面的程序片段,执行后输出的结果是( )。

int a = 0;
for (int i = 1; i <= 5; i++)
    for (int j = 1; j <= i; j++)
        a++;
cout << a;

{{ select(4) }}

  • 15
  • 10
  • 25
  • 5

第 5 题

5.阅读下面的程序片段,执行后输出的结果是( )。

int cnt = 0;
for (int y = 1900; y <= 2000; y++)
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) cnt++;
cout << cnt;

{{ select(5) }}

  • 23
  • 24
  • 26
  • 25

第 6 题

6.阅读下面的程序片段,执行后输出的结果是( )。

int s = 0;
for (int i = 1; i <= 5; i++) {
    for (int j = 1; j <= 5; j++) {
        if (i * j > 6) break;
        s += i * j;
    }
}
cout << s;

{{ select(6) }}

  • 45
  • 42
  • 48
  • 55

第 7 题

7.下列四段程序中,会出现死循环的是( )。 {{ select(7) }}

  • int i = 1; while (i <= 5) { cout << i; i++; }
  • int i = 5; while (i > 0) { i--; }
  • int i = 1; while (i <= 5) { i++; }
  • int i = 1; while (i <= 5) { cout << i; }

第 8 题

8.阅读下面的程序片段,执行后输出的结果是( )。

int i = 1, s = 0;
while (i <= 10) {
    s += i;
    i += 2;
}
cout << s;

{{ select(8) }}

  • 25
  • 20
  • 30
  • 55

第 9 题

9.阅读下面的程序片段,执行后输出的结果是( )。

int n = 100, cnt = 0;
while (n > 0) {
    n = n / 2;
    cnt++;
}
cout << cnt;

{{ select(9) }}

  • 6
  • 8
  • 50
  • 7

第 10 题

10.阅读下面的程序片段,执行后输出的结果是( )。

int i = 10;
while (i > 0) i -= 3;
cout << i;

{{ select(10) }}

  • 1
  • 0
  • -1
  • -2

第 11 题

11.阅读下面的程序片段,执行后输出的结果是( )。

int i = 0, s = 0;
while (true) {
    i++;
    if (i % 3 == 0) continue;
    if (i > 8) break;
    s += i;
}
cout << s;

{{ select(11) }}

  • 36
  • 30
  • 27
  • 19

第 12 题

12.关于 while 循环,下列说法正确的是( )。 {{ select(12) }}

  • while 循环的循环体至少会被执行一次
  • while(1) 一定会一直执行下去,无法用 break 跳出
  • while 循环必须和 for 语句配合使用
  • while 循环先判断条件,条件为真时才执行循环体

第 13 题

13.24 和 36 的最大公约数是( )。 {{ select(13) }}

  • 12
  • 6
  • 24
  • 72

第 14 题

14.12 和 18 的最小公倍数是( )。 {{ select(14) }}

  • 6
  • 54
  • 216
  • 36

第 15 题

15.阅读下面的程序片段,执行后输出的结果是( )。

int a = 56, b = 42;
while (b != 0) {
    int t = a % b;
    a = b;
    b = t;
}
cout << a;

{{ select(15) }}

  • 7
  • 21
  • 14
  • 42

第 16 题

16.阅读下面的程序片段,执行后输出的结果是( )。

int a = 8, b = 12, g = 1;
for (int i = 1; i <= a && i <= b; i++)
    if (a % i == 0 && b % i == 0) g = i;
cout << a / g * b;

{{ select(16) }}

  • 4
  • 48
  • 24
  • 96

第 17 题

17.已知两个正整数的最大公约数是 6,最小公倍数是 36,那么这两个数的乘积是( )。 {{ select(17) }}

  • 216
  • 42
  • 108
  • 6

第 18 题

18.阅读下面的程序片段,执行后输出的结果是( )。

int a = 36, b = 24;
while (a != b) {
    if (a > b) a = a - b;
    else b = b - a;
}
cout << a;

{{ select(18) }}

  • 12
  • 24
  • 6
  • 36

第 19 题

19.阅读下面的程序片段,执行后输出的结果是( )。

int n = 2025, s = 0;
while (n > 0) {
    s += n % 10;
    n /= 10;
}
cout << s;

{{ select(19) }}

  • 9
  • 7
  • 11
  • 2025

第 20 题

20.阅读下面的程序片段,执行后输出的结果是( )。

int n = 987654, cnt = 0;
while (n > 0) {
    cnt++;
    n /= 10;
}
cout << cnt;

{{ select(20) }}

  • 5
  • 6
  • 7
  • 9

第 21 题

21.阅读下面的程序片段,执行后输出的结果是( )。

int n = 1204, cnt = 0;
while (n > 0) {
    if ((n % 10) % 2 == 1) cnt++;
    n /= 10;
}
cout << cnt;

{{ select(21) }}

  • 4
  • 2
  • 0
  • 1

第 22 题

22.阅读下面的程序片段,执行后输出的结果是( )。

int s = 0, i = 1;
while (s < 50) {
    s += i;
    i++;
}
cout << s << " " << i;

{{ select(22) }}

  • 50 10
  • 55 10
  • 55 11
  • 45 10

第 23 题

23.阅读下面的程序片段,执行后输出的结果是( )。

int n = 91, i = 2;
while (i * i <= n) {
    if (n % i == 0) break;
    i++;
}
if (i * i > n) cout << "prime";
else cout << "no";

{{ select(23) }}

  • prime
  • no
  • 91
  • 没有任何输出

第 24 题

24.阅读下面的程序片段,执行后输出的结果是( )。

long long f = 1;
int i = 1;
while (i <= 10) {
    f *= i;
    i++;
}
cout << f;

{{ select(24) }}

  • 1024
  • 362880
  • 3628800
  • 39916800

第 25 题

25.常量 3.5e3 的值是( )。 {{ select(25) }}

  • 350
  • 35
  • 35000
  • 3500

第 26 题

26.常量 2e-3 的值是( )。 {{ select(26) }}

  • 0.0002
  • 0.002
  • 200
  • 2000

第 27 题

27.下列写法中,属于合法的科学计数法常量的是( )。 {{ select(27) }}

  • 1.5*10^5
  • 1.5e
  • e5
  • 1.5e5

第 28 题

28.阅读下面的程序片段,执行后输出的结果是( )。

int i = 5;
do {
    cout << i << " ";
    i++;
} while (i < 3);

{{ select(28) }}

  • 5
  • 什么都不输出
  • 5 6
  • 死循环,不停输出

第 29 题

29.阅读下面的程序片段,执行后输出的结果是( )。

int i = 0, s = 0;
do {
    i += 2;
    s += i;
} while (i < 7);
cout << s;

{{ select(29) }}

  • 12
  • 2
  • 20
  • 30

第 30 题

30.关于 do-while 循环,下列说法正确的是( )。 {{ select(30) }}

  • do-while 先执行一次循环体再判断条件,循环体至少执行一次
  • while 循环的循环体至少会被执行一次
  • do-while 与 while 在任何情况下都完全等价
  • do-while 的条件为假时,循环体会一直执行下去

第 31 题

31.阅读下面的程序片段,执行后输出的结果是( )。

int n = 12345;
while (n > 0) {
    cout << n % 10;
    n /= 10;
}

{{ select(31) }}

  • 12345
  • 54321
  • 1234
  • 5432

第 32 题

32.阅读下面的程序片段,执行后输出的结果是( )。

int n = 1200, r = 0;
while (n > 0) {
    r = r * 10 + n % 10;
    n /= 10;
}
cout << r;

{{ select(32) }}

  • 2100
  • 21
  • 0021
  • 12

第 33 题

33.阅读下面的程序片段,执行后输出的结果是( )。

double d = 3.99;
int x = d;
cout << x;

{{ select(33) }}

  • 4
  • 3
  • 3.99
  • 0

第 34 题

34.阅读下面的程序片段,执行后输出的结果是( )。

double d = 5.67;
int x = (int)(d + 0.5);
cout << x;

{{ select(34) }}

  • 5
  • 5.67
  • 6
  • 7

第 35 题

35.阅读下面的程序片段,执行后输出的结果是( )。

double x = 12.3456;
int a = (int)x;
int b = (int)(x * 100) % 100;
cout << a << " " << b;

{{ select(35) }}

  • 12 35
  • 12 34
  • 12 3456
  • 1234 56

第 36 题

36.对于整数 n,反复执行操作:n 是偶数就除以 2,n 是奇数就乘 3 再加 1,直到 n 变成 1 为止。阅读下面的程序片段,当 n 的初值为 10 时,输出的结果是( )。

int n = 10, cnt = 0;
while (n != 1) {
    if (n % 2 == 0) n = n / 2;
    else n = n * 3 + 1;
    cnt++;
}
cout << cnt;

{{ select(36) }}

  • 5
  • 7
  • 6
  • 10

第 37 题

37.一口井深 10 米,一只蜗牛从井底往上爬,白天爬 3 米,晚上下滑 1 米。若从第 1 天白天开始计算,蜗牛第几天能爬出井口( )。 {{ select(37) }}

  • 4
  • 5
  • 6
  • 10

第 38 题

38.小明第 1 天存 1 元,第 2 天存 2 元,……第 n 天存 n 元。阅读下面的程序片段,输出结果是( )。

int s = 0, d = 0;
while (s <= 100) {
    d++;
    s += d;
}
cout << d << " " << s;

{{ select(38) }}

  • 13 91
  • 13 105
  • 14 100
  • 14 105

第 39 题

39.某种细胞每过 1 分钟就由 1 个分裂成 2 个,开始时瓶中有 1 个细胞。阅读下面的程序片段,输出的结果是( )。

int n = 1, m = 0;
while (n <= 1000) {
    n *= 2;
    m++;
}
cout << m;

{{ select(39) }}

  • 9
  • 11
  • 10
  • 12

第 40 题

40.关于“模拟算法”,下列理解正确的是( )。 {{ select(40) }}

  • 用数学公式一步算出结果,不需要使用循环
  • 按照题目描述的过程一步一步执行,用程序把整个过程重现出来
  • 只能用于解决纯数字计算类的问题
  • 必须使用递归函数才能实现