Logo

2025年12月 GESP C++ 2级

GESP · 2级 · 2025-12

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

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

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

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

1

近⽇,空中客车公司表⽰,约 $6000$ 架空客 A320 系列飞机需要紧急更换一种易受太阳辐射影响的飞行控制软件。空客表⽰,在对一起飞行事故分析后的结果显⽰,强烈的太阳辐射可能会损坏飞行控制系统所需的关键数据,导致判断失误,进⽽引发飞行异常。那这里的飞行控制系统执行判断的部件最可能是下面的( )。

2

小明最近为了备考 GESP,开始看 B 站上关于网络知识的视频。其中提到计算机网络系统有不同的划分标准,那他平时上学所在的教学楼内的网络是一个( )。

3

下面有关 C++ 变量的说法,正确的是( )。

4

一个小数是 $0.123123123\ldots$ 无限循环,其小数点后第 $1$ 位是 $1$,第 $2$ 位是 $2$,依此类推,求第 $N$ 位的值。横线处应填入的代码是( )。

int N;
cin >> N;
remainder = ______________;
if (remainder == 0)
    cout << 1;
else if (remainder == 1)
    cout << 2;
else
    cout << 3;
5

某同学执行 C++ 代码时 printf("%g\n", (3 + 3.1415926535)); 输出 $6.14159$,其原因最可能是( )。

6

某单位工号的编码规则:编码总长 $5$ 位,均为数字,前 $4$ 位依次整除以 $3$ 其值累加之和除以 $10$ 的余数为第 $5$ 位数字。如某工号为 $76587$,前 $4$ 位分别整除以 $3$ 后,商分别为 $2$、$2$、$1$、$2$,其累加之和为 $7$,除以 $10$ 的余数为 $7$,故第 $5$ 位为 $7$。下面代码依次输入前 $4$ 位后,两个横线处分别应填的是( )。

int rst = 0, N;
for (int i = 0; i < 4; i++){
    cin >> N;
    rst += ___________; // L1
}
cout << ___________; // L2
7

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

for (int i = -2; i < 2; i++)
    if (i % 2)
        printf("%d#", i);
8

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

int cnt = 0, N;
for (int i = 1; i < 10; i += 2)
    for (int j = 0; j < i; j++)
        cnt += 1;
cout << cnt;
9

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

int i,j;
for (i = 1; i < 12; i++){
    if (i % 2 == 0)
        continue;
    for (j = 0; j < i; j++)
        if (i * j % 2 == 0)
            break;
    if(j >= i)
        cout << i * j << " ";
}
if(i >= 12)
    cout << (i * j);
10

与下面 C++ 输出效果不一致的代码是( )。

int i;
for (i = 0; i < 10; i++)
    cout << i;
11

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

int num = 0;
while (num <= 5){
    num += 1;
    if (num % 3)
        continue;
    printf("%d#",num);
}
if(num > 5)
    printf("%d", num);
12

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

int cnt = 0;
for (int i = 0; i < 5; i++)
    for (int j = i; j < 4; j++)
        cnt += 1;
cout << cnt;
13

漂亮数的定义是:如果 $N$ 能被 $M$ 整除,或者某位是 $M$,或者 $N$ 的每位数之和能被 $M$ 整除,则说 $N$ 是 $M$ 的漂亮数。如果三个条件都满足,则是完整漂亮数。$123$ 是 $3$ 的完整漂亮数,因为 $123$ 能被 $3$ 整除,也含有 $3$,其每位数之和为 $6$ 也能被 $3$ 整除。下面的代码用于判断 $N$ 是否为 $M$ 的完整漂亮数并输出。相关说法正确的是( )。

int N, M, Flag, Sum, num;
cout << "请输入N,不等于0的正整数:";
cin >> N;
cout << "请输入M:M必须大于1小于9:";
cin >> M;
Sum = 0; // 记录各位数之和
Flag = 0; // 假设记录N不含有M
while (N != 0){
    num = N % 10;
    Sum += num;
    if (num == M)
        Flag = 1;
    N /= 10;
}
if ((N % M == 0) && (Flag == 1) && (Sum % M == 0)) // L1
    printf("%d 是 %d 的完整漂亮数", N, M);
else
    printf("%d 不是 %d 的完整漂亮数", N, M);
14

阅读下面的 C++ 代码。执行后如输入 $5$,其输出的字符图形是( )。

int n,i,j,k;
cin >> n;
for (i = 0; i < n; i++){
    for (j = 0; j < n-i-1; j++)
        cout << " ";
    for (k = 0; k < 2*i+1; k++)
        cout << "*";
    cout << endl;
}
15

某学校举办“十佳歌手大奖赛”,经过选拔最终参赛选手有 $25$ 人,评委 $10$ 人,最终计分规则去掉一个最高分去掉一个最低分作为该参赛选手的最终得分,并输出该得分。如果单个评委可给满分为 $10$ 分,则相关说法正确的是( )。

float total_score, max_score, min_score, now_score;
for (int i = 0; i < 25; i++){
    max_score = 0; // 记录最高分
    min_score = 10; // 记录最低分
    total_score = 0; // 记录总分
    for (int j = 0; j < 10; j++){
        cin >> now_score; // 录入评委打分
        max_score = max(max_score, now_score); // L1
        min_score = min(min_score, now_score); // L2
        total_score += now_score;
    }
    cout << (total_score - max_score - min_score);
}

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

16

鸿蒙是华为公司开发的一款操作系统,那么它能够将正确的源程序翻译成目标程序,并运行。( )

17

C++ 表达式 5 < 10 && 20 对应的逻辑值为 true。( )

18

C++ 表达式 10 / 0.333333 == 10 / (1 / 3) 的值为 true。( )

19

下面 C++ 代码中 $N$ 是整数,执行时无论输入负整数、$0$ 或正整数,其输出都将是 $0$。 ( )

cin >> N;
while (N)
    N /= 10;
cout << N;
20

下面的 C++ 代码执行后,其输出是 $4$ $0$。( )

int a,b;
a = 4;
b = a == 5;
cout << a << ' ' << b;
21

C++ 代码中对表达式 ('Z' - 'A') < ('z' - 'A') 的结果输出为 $0$。( )

22

下面的 C++ 代码可以用于判断正整数 $N$ 的位数(即几位数,如 $123$ 是 $3$ 位数,$12$ 为 $2$ 位数)。( )

int N, N10, i;
cin >> N;
N10 = 10, i = 1;
while (1) {
    if (N % N10 == N) {
        printf("%d 是 %d 位数", N, i);
        break;
    }
    i++, N10 *= 10;
}
23

计算交叉加减的结果,形如 $1-2+3-4+5-\dots$ 。下面 C++ 代码中的变量都是整型,则将 Flag = -Flag 改为 Flag -= Flag 效果相同。( )

cin >> N;
Flag = -1;
tnt = 0;
for (i = 1; i < N + 1; i++) {
    Flag = -Flag;
    tnt += Flag * i;
}
cout << tnt;
24

下列 C++ 代码段执行后将输出 $55$。( )

int cnt = 0;
for (i = 0; i < 10; i++)
    for (j = i; j < 10; j++)
        cnt += 1;
cout << cnt;
25

下面 C++ 代码执行后输出如下,因为代码 printf("\n") 没有任何可读内容,删除不影响输出效果。

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
for (int i = 1; i < 10; i++) {
    for (int j = 1; j < 10; j++)
        printf("%3d", i * j);
    printf("\n");
}

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

26
编程操作题 25分

试题名称:环保能量球

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

题目描述

小杨最近在玩一个环保主题的游戏。在游戏中,小杨每行走 1 公里就可以获得 1 点“环保能量”。

为了激励玩家,游戏设置了“里程奖励”:小杨每行走 $x$ 公里,游戏就会额外奖励 1 点能量。

现在已知小杨总共行走了 $n$ 公里,请你帮他计算,他一共能获得多少点环保能量?

输入格式

第一行包含一个正整数 $t$,代表测试数据组数。

对于每组测试数据:

  • 第一行包含一个正整数 $n$,代表行走的公里数。
  • 第二行包含一个正整数 $x$,代表奖励触发的间隔。

输出格式

对于每组测试数据,输出一个整数,代表小杨获得的环保能量总数。

样例输入 #1

3
5
2
10
3
2
5

样例输出 #1

7
13
2

说明/提示

样例解释

  • 对于第 1 组数据,$n = 5, x = 2$:小杨行走获得 $5$ 点能量。此外,他在第 $2$ 公里和第 $4$ 公里时各获得 $1$ 点额外奖励,总共 $5 + 2 = 7$ 点。
  • 对于第 2 组数据,$n = 10, x = 3$:行走获得 $10$ 点。他在第 $3$、$6$、$9$ 公里时各获得 $1$ 点额外奖励,总共 $10 + 3 = 13$ 点。
  • 对于第 3 组数据,$n = 2, x = 5$:行走获得 $2$ 点。由于行走路程不足 $5$ 公里,没有额外奖励,总共 $2$ 点。

数据范围

对于全部数据,保证:$1 \leq t \leq 100$,$1 \leq n, x \leq 1000$。

27
编程操作题 25分

试题名称:黄金格

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

题目描述

小杨在探险时发现了一张神奇的矩形地图,地图有 $H$ 行和 $W$ 列。每个格子的坐标是 $(r, c)$,其中 $r$ 表示行号从 $1$ 到 $H$,$c$ 表示列号 $1$ 到 $W$。

小杨听说地图中隐藏着一些“黄金格”,这些格子满足一个神秘的数学挑战:当格子坐标 $(r, c)$ 代入特定的不等式关系成立时,该格子就是黄金格。具体来说,黄金格的条件是:$\sqrt{r^2 + c^2} \leq x + r - c$。

例如,如果参数 $x = 5$,那么格子 $(4, 3)$ 就是黄金格。因为左边坐标平方和的平方根 $\sqrt{4^2 + 3^2}$ 算出来是 $5$,而右边 $5 + 4 - 3$ 算出来是 $6$,$5$ 小于等于 $6$,符合条件。

输入格式

三行,每行一个正整数,分别表示 $H,W,x$。含义如题面所示。

输出格式

一行一个整数,代表黄金格数量。

样例输入 #1

4
4
2

样例输出 #1

4

说明/提示

样例解释

:::align{center}

:::

图中标注为黄色的四个格子是黄金格,坐标分别为 $(1, 1)$,$(2, 1)$,$(3, 1)$,$(4, 1)$。

数据范围

对于所有测试点,保证给出的正整数不超过 $1000$。

已答 0/27