#1608. GESP-C++二级(2026-03)

GESP-C++二级(2026-03)

CCF GESP C++ 一级 (2026 年 03 月)

一、单选题(每题 2 分,共 30 分)

1. 2026年春节联欢晚会上⼀个武术表演节⽬《武 BOT》。节⽬中多个⼈形机器⼈会表演空翻,它们落地可能会 有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器⼈保持原来队列。如果将机器⼈视作 ⼀个计算机系统,那么在该计算机系统中下⾯哪⼀项不能作为输⼊设备( )。

{{ select(1) }}

  • 检测重⼼的重⼒传感器
  • 预装的AI算法程序
  • 接收动作指令的遥控器
  • 拍摄其他机器⼈的摄像头

2. 下⾯代码⽤来找出输⼊的N个正整数中最⼤的⼀个。如果将代码段⽤流程图来表⽰,则 L1 标记的代码⾏应 该使⽤的图形是( )。

int N, max=0, val;
cin >> N;
while(N){
    cin >> val;
    if(val > max) // L1
    max = val;
    N--;
}
cout << max;

{{ select(2) }}

  • 圆形框
  • 椭圆形框
  • 平⾏四边形框
  • 菱形框

3. 下⾯ C++ 代码可以执⾏,有关说法正确的是( )

double PI = 3.1415926;
cout << (PI);

{{ select(3) }}

  • 为了⽅便初学者, cout << (PI) 和 cout << (pi) 效果相同,即变量的⼤⼩写不敏感
  • cout << (PI) 修改为 cout << (Pi) 能正常执⾏
  • 不能⽤ PI 做变量名,因为要保存圆周率这个常量
  • 将程序中全部 PI 都改写为 Pai ,将能正常执⾏,不会报错

4. 下⾯选择项中,与C++表达式 !(x > 5 && y <= 10) 等价的是( )

{{ select(4) }}

  • x <= 5 && y > 10
  • x > 5 || y <= 10
  • x <= 5 || y > 10
  • ! x > 5 && ! y <= 10

5. 某同学执⾏C++代码 cout << ((0.1 + 0.2) == 0.3) 时输出 0 ,下⾯最可能的原因是( )

{{ select(5) }}

  • C++的 + 运算符在处理⼩数时存在bug
  • 0.1 、 0.2 和 0.3 在计算机中⽆法⽤⼆进制浮点数精确表⽰,导致 0.1 + 0.2 的结果与 0.3 存在微⼩误差
  • == 运算符不能⽤于⽐较浮点数,只能⽤于整数
  • 因为 0.1 + 0.2 的数学结果不等于 0.3

6. 下⾯的 C++ 代码段执⾏后其输出是( )

tnt = 0;
for (int i = 0; i < 5; i++){
    for (int j = 0; j < i; j++)
        tnt += 1;
    cout << tnt << "#";
}
cout << tnt;

{{ select(6) }}

  • 0#1#3#6#10#10
  • 1#2#3#4#5#6#7#8#9#10#10
  • 10#10
  • 10

7. 下⾯的 C++ 代码执⾏之后的输出是( )

for ( int i = -2; i < 2; i++)
    if (not i % 3)
        cout << i << "#";

{{ select(7) }}

  • 0#
  • -2#-1#1#
  • -1#0#
  • -2#0#1#

8. 下⾯的 C++ 代码执⾏后其输出是( )

int cnt = 0, i, j;
for (i =1; i < 5; i++){
    for (j =0; j < i; j++)
        cout << j << "#";
    break;
}
if(i >= 5)
    cout << (i*j);

{{ select(8) }}

  • 0#0#1#0#1#2#0#1#2#3#12
  • 0#0#1#0#1#2#0#1#2#3#
  • 0#
  • 1#

9. 下⾯ C++ 代码执⾏后其输出是( )

int count = 0;
for (int i = 1; i < 4; i++)
    for (int j = 1; j < 5; j++){
        if (j == 3)
            continue;
        if (i == 2)
            break;
        count += 1;
}
cout << (count);

{{ select(9) }}

  • 2
  • 4
  • 6
  • 8

10. 下⾯4个选项中,与下⾯ C++ 代码段具有相同效果的是( )

i = 0;
while (i < 5){
    cout << i;
    i += 1;
}

A.

for (i = 0; i < 5; i++)
    cout << i;

B.

for (i = 1; i < 5; i++)
    cout << i;

C.

for (i = 0; i < 6; i++)
    cout << i;

D.

for (i = 1; i < 6; i++)
    cout << i;

{{ select(10) }}

  • A
  • B
  • C
  • D

11. 下⾯ C++ 代码执⾏后输出是( )

int n = 10;
while (n > 0){
    n -= 1;
    if (n % 3 == 0)
        continue;
    if (n == 5)
        break;
}
cout << n;

{{ select(11) }}

  • 0
  • 5
  • 6
  • 7

12. 下⾯ C++ 代码段执⾏后,其输出是( )

int i, j, cnt;
cnt = 0;
for (i = 0; i < 5; i++){
    i = -i;
    for (j = i; j < -i; j++)
        cnt += 1;
    i = -i;
}
cout << cnt;

{{ select(12) }}

  • 5
  • 15
  • 20
  • 30

13. 某学校图书馆的借阅卡号由6位整数组成。前5位是顺序编号,第6位是校验码,⽤于防⽌输错。校验码规则 如下:将前5位数字相加,然后除以10的余数,就是第6位数字。如卡号 123455 的前5位之和为 15 ,除以 10 的余 数是5,故第6位为5。下⾯的C++代码段⽤于判断卡号是否正确,横线处应填⼊的代码是( )。####

cout << "请输入卡号:";
cin >> N;
order_num = N / 10; // 获得前5位顺序号,假设录入一定为6位正整数
check_num = N % 10; // 获得最后一位
tnt = 0; // 保存前5位之和
for (i = 0; i < 5; i++){
    ________________;
    order_num /= 10;
}
if (__________________)
    cout << "符合校验规则";
else
    cout << "不符合校验规则";

A.

tnt += order_num / 10
tnt / 10 == check_num

B.

tnt += order_num % 10
tnt % 10 == check_num

C.

tnt = order_num / 10 + tnt
tnt % 10 == check_num

D.

tnt = order_num % 10
tnt / 10 == check_num

{{ select(13) }}

  • A
  • B
  • C
  • D

14. 下⾯的 C++ 代码段正常执⾏后其输出的数字图形是( )

for (i = 1; i < 5; i++){
    for (j = 1; j < i+1; j++)
        cout << j;
    cout << endl;
}

A.

1
12
123
1234

B.

1
22
333
4444

C.

1
21
321
4321

D.

4
34
234
1234

{{ select(14) }}

  • A
  • B
  • C
  • D

15. 某学校举办“校园演讲⽐赛”,每位选⼿由8位评委打分(分数为 0~10 的整数),且每位评委必须打分。计 分规则:若⾄少有5位评委给出⼤于等于6分,则成绩有效,最终得分为所有8位评委的总分;如给出低于6分的评委 数量超过5位,则记为0分。以下核⼼程序段依次输⼊8个分数,并计算最终得分。横线处应填⼊( )。

total_score = 0; // 所有分数之和
high_count = 0; // ≥6分的评委数量
for (i = 0; i < 8; i++){
    cout << "请输入评委分数: ";
    cin >> score;
    ____________________;
    if (score >= 6)
    ________________;
}
if (high_count >= 5)
    cout << total_score;
else
    cout << 0;

A.

total_score += score
high_count += 1

B.

total_score += score
high_count += score

C.

high_count += 1
total_score += score

D.

total_score *= score
high_count *= 1

{{ select(15) }}

  • A
  • B
  • C
  • D

二、判断题(每题 2 分,共 20 分)

1. ⼩明的妈妈最近刚刚给他买了⼀块电话⼿表,除了可以看时间,⼩明也可以⽤它和妈妈打电话、收发信息, 那么可以推测这块⼿表中装有⼀款特定操作系统。( )

{{ select(16) }}

2. C++ 语句 cout << ('4' % '2' == '2' * '2' % 2); 执⾏后的输出是1。( )

{{ select(17) }}

3. 下⾯的 C++ 代码段执⾏时将报错,因为10是整数类型, a 是布尔类型。由于类型不同,不能进⾏加法运 算。( )

bool a = true;
cout << (10 + a);

{{ select(18) }}

4. 下⾯C++代码段执⾏后将输出 0-3-6-9- 。 ( )

for (int i = 0; i < 10; i++){
    if (i % 3)
        continue;
    cout << i << "-";
}

{{ select(19) }}

5. 执⾏下⾯的 C++ 代码段,如果N是基本数据类型,则语句 cout << (N); 将被执⾏ 0 次或⽆数次(即死循 环)。( )

cin >> N;
while (N)
    cout << (N);

{{ select(20) }}

6. 下⾯的 C++ 代码段可正常执⾏,删除 continue 不影响执⾏效果。( )

for (i = 0; i < 10; i++){
    i += 1;
    continue;
}
cout << (i);

{{ select(21) }}

7. 下⾯的 C++ 代码段⽤于计算1到N之间且包含N的所有数字中含有的3的个数,如1到40含有14个3, ⽽1到20则 只含有2个3。如果将 while (i != 0) 改为 while (abs(i)) ,则执⾏结果相同。( )

cout << "请输入正整数N:";
cin >> N;
cnt = 0; // 保存3的个数
for (k = 1; k < N + 1; k++){
    i = k;
    while (i != 0){
        if (i % 10 == 3)
            cnt += 1;
        i /= 10;
    }
}
cout << cnt;

{{ select(22) }}

8. 下⾯的 C++ 代码段执⾏将不会有输出,因为内层循环 j 总是 0 开始, i * j % 10 == 0 将会被满⾜,执 ⾏ break ,故⽽ i ⼩于 10 ,不会满⾜ if 判断条件。( )

for (i = 1; i < 10; i++)
    for (j = 0; j < i; j++)
        if (i * j % 10 == 0)
            break;
if(i >= 10)
    cout << (i*j);

{{ select(23) }}

9. 下列 C++ 代码执⾏后将输出 1#4#9#16#16 。( )

cnt = 0;
for (i = 1; i < 5; i++){
    for (j = 1; j < i + 1; j++)
        if (i * j % 10 == 0)
            break;
    if (j >= i + 1)
        cout << (i * j) << "#";
}
if(i >= 5)
    cout << (i * j);

{{ select(24) }}

10. 下⾯ C++ 代码执⾏后输出如左图所⽰,将 " %d" 修改为 "%3d" 即可实现右图输出。( )

/*
// 左图                         // 右图
1 2 3 4 5 6 7 8 9               1  2  3  4  5  6  7  8  9
2 4 6 8 10 12 14 16 18          2  4  6  8  10 12  14  16  18
3 6 9 12 15 18 21 24 27         3  6  9  12  15   18  21  24  27
4 8 12 16 20 24 28 32 36        4  8  12  16  20 24  28  32  36
5 10 15 20 25 30 35 40 45       5  10  15  20  25 30  35  40  45
6 12 18 24 30 36 42 48 54       6  12  18  24  30 36  42  48  54
7 14 21 28 35 42 49 56 63       7  14  21  28  35 42  49  56  63
8 16 24 32 40 48 56 64 72       8  16  24  32  40 48  56  64  72
9 18 27 36 45 54 63 72 81       9  18  27  36  45 54  63  72  81

*/
for (i = 1; i < 10; i++){
    for (j = 1; j < 10; j++)
        printf(" %d", i*j);
    printf("\n");
}

{{ select(25) }}