Logo

2026年3月 GESP C++ 2级

GESP · 2级 · 2026-03

60:00
满分 100
时长 60 分钟
27

2026年3月 GESP C++ 2级认证考试真题(含编程操作题部分)

答题卡 已答 0/27
已答 正确 错误 编程题

单选题(共 15 题,每题 2 分)

1

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

2

下面代码用来找出输入的 $N$ 个正整数中最大的一个。如果将代码段用流程图来表⽰,则 L1 标记的代码行应该使用的图形是( )。

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

下面 C++ 代码可以执行,有关说法正确的是( )。

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

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

5

某同学执行C++代码cout << ((0.1 + 0.2) == 0.3)时输出 $0$,下面最可能的原因是( )。

6

下面的 C++ 代码段执行后其输出是( )。

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

下面的 C++ 代码执行之后的输出是( )。

for ( int i = -2; i < 2; i++)
    if (not i % 3)
        cout << i << "#";
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);
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);
10

下面 $4$ 个选项中,与下面 C++ 代码段具有相同效果的是( )。

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

下面 C++ 代码执行后输出是( )。

int n = 10;
while (n > 0){
    n -= 1;
    if (n % 3 == 0)
        continue;
    if (n == 5)
        break;
}
cout << n;
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;
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 << "不符合校验规则";
14

下面的 C++ 代码段正常执行后其输出的数字图形是( )。

for (i = 1; i < 5; i++){
    for (j = 1; j < i+1; j++)
        cout << j;
    cout << endl;
}
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;

判断题(共 10 题,每题 2 分)

16

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

17

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

18

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

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

下面C++代码段执行后将输出0-3-6-9-。 ( )

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

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

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

下面的 C++ 代码段可正常执行,删除continue不影响执行效果。( )

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

下面的 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;
23

下面的 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);
24

下列 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);
25

下面 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");
}

编程操作题(共 2 题,共 50 分)

26
编程操作题 25分

试题名称:数数

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

对于正整数 $n$,如果 $n$ 的所有数位中包含恰好 $3$ 个 $2$,Alice 会认为这个正整数是美丽的。例如,正整数 $24122$ 中包含 $3$ 个 $2$,所以 $24122$ 是美丽的;正整数 $132$ 中包含 $1$ 个 $2$,所以 $132$ 不是美丽的;正整数 $212322$ 中包含 $4$ 个 $2$,所以 $212322$ 不是美丽的。

Alice 想知道正整数 $L$ 到正整数 $R$(包括 $L$ 和 $R$)中有多少美丽的正整数,你能帮她数一数吗?

输入格式

输入共 $2$ 行,第一行为正整数 $L$,第二行为正整数 $R$。

输出格式

输出一行,包含一个整数 $C$,表示 $L$ 到 $R$ 中 $C$ 美丽数的数量。

样例输入 #1

2221
2223

样例输出 #1

2

说明/提示

样例解释

$2221$ 到 $2223$ 中,$2221$ 与 $2223$ 是美丽的,$2222$ 不是美丽的。

数据范围

保证 $1 \leq L \leq R \leq 10^6$。

27
编程操作题 25分

试题名称:画画

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

输入一个正整数 $n$,你需要绘制一个 $n$ 行 $n$ 列的正方形,绘制规则如下:

  • 正方形的四个顶点使用 + 绘制;
  • 除顶点外,第 $1$ 行与第 $n$ 行使用 - 绘制;
  • 除顶点外,第 $1$ 列与第 $n$ 列使用 | 绘制;
  • 正方形内部使用 * 绘制。

输入格式

一行,一个正整数 $n$。

输出格式

输出共 $n$ 行,表示对应的正方形。

样例输入 #1

5

样例输出 #1

+---+
|***|
|***|
|***|
+---+

说明/提示

数据范围

保证 $3 \leq n \leq 100$。

已答 0/27