编程未来 Coding Future

2026年6月 GESP C++ 1级

GESP · 1级 · 2026-06

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

2026年6月 GESP C++ 1级认证考试真题(客观题部分)

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

1

学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测⼟壤的湿度变化,
并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿
度传感器所发挥的作用,类似于计算机系统中的哪一类组件?( )

2

在使用某集成开发环境(比如 Dev-C++)来编辑源代码文件时,程序员经常需要在编辑区中对代码进行各种
修改。以下关于在编辑区中执行的操作描述不正确的( )。

3

有关如下 C++ 代码的说法,正确的是( )。
1 float a = 3 + 3.5;
2 cout << a;

4

下列 C++ 表达式与 - 2 * 2 % 4 的值不同的是( )。

5

执行如下 C++ 代码片段,其输出是( )。

int a = 3;
int b = a;
a = 4;
printf("%d %d", a, b);
6

如下 C++ 代码执行时输入 2026-6-27,下列说法正确的是( )。

int N;
cin >> N;
cout << N;
7

如下 C++ 代码执行时,其说法错误的是( )。

int N, M;
cin >> N >> M;

if (N > M)
cout << "A " << (N - M);
else
cout << "B " << (M - N);
8

阅读如下 C++ 代码,下列说法错误的是( )。

int cnt = 0;
for (int i = 0; i < 5; i++)
cnt += 1;
cout << cnt;
9

如下 C++ 代码执行后输出是 1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8
9 10 11 5 6 7。横线处应该先后依次填入的运算符是( )。

int num = 1;
for (int i = 0; i < 35; i++) {
    printf("%d ", num);
    if (num _______ 10)
    num _______ 2;
    else
    num _______ 1;
}
10

如下 C++ 代码可以执行,其输出是( )。

int i;
for (i = 1; i < 5; i++)
if (i % 2 == 0) {
    continue;
    cout << i << "#";
}

cout << i << "END#";
11

如下 C++ 代码执行时,下列说法正确的是( )。

int N, i;
cin >> N;
for (i = 2; i < N; i++)
if (N % i == 0) {
    cout << "1#";
    break;
} else
cout << "0#";
12

有关如下 C++ 代码,下列说法中错误的是( )。

int i, tot;
i = 0, tot = 0;
while (0 <= i && i < 10) {
    tot += 1;
    i += 1;
}

cout << tot;
13

以下 C++ 代码可以找出千位、百位、十位和个位满足特定条件的四位数(例如各位数字的四次方和等于原
数,即“四叶玫瑰数”),横线处应该填入的是( )。

int count = 0;
for (int n = 1000; n <= 9999; n++) {
    int a = n / 1000;
    int b = (n / 100) % 10;
    _________________________ // L1
    int d = n % 10;
    if (a * a * a * a + b * b * b * b + c * c * c * c + d * d * d * d == n) { // 特定条件
        count++;
    }
}
14

下面的 C++ 代码用于计算经过 n 秒后的秒针位置( ),两处横线处分别应填入的代码是( )。

int start, n, pos;
cout << "当前秒数(0-59): ";
cin >> start;
cout << "经过多少秒: ";
cin >> n;

pos = ____________; // L1
if (____________) // L2
cout << n << "秒后回到12点方向" << endl;
else
cout << n << "秒后指向" << pos << "秒刻度" << endl;
15

如果正整数 N 只能被 1 和它本身整除,则它是一个质数(或素数)。下面的 C++ 代码用于判断正整数
N 是否为质数(素数)。若 N 是质数,输出 YES,否则输出 NO。横线处不应填入的代码是( )。

int N, i;
cin >> N;
if (N <= 1) {
    cout << "NO";
    return 0;
}

for (i = 2; ______; i++) {
    if (N % i == 0) {
        cout << "NO";
        return 0;
    }
}

cout << "YES";

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

16

⼜到期末考试周,小明发现这次许多闭卷考试不仅禁⽌携带手机、平板电脑,还有最近比较时髦的各类 AI
眼镜(也有叫智能眼镜)也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝⽛连
接。

17

如果 n 为大于 的整数,则 C++ 表达式 (n / 10) % 10 与 (n % 100) / 10 的结果相同。

18

下面 C++ 代码执行后将输出 19。

int i;
for (i = 0; i < 20; i += 3)
if (i % 3 != 0)
break;
cout << i;
19

在数学中, 称之为 的阶乘,其含义是 到 之积,包括 。如 。如下 C++ 代码能
输出 的结果。

int N;
cout << "请输入正整数:";
cin >> N;
int rst = 0;
for (int i = 1; i < N + 1; i++)
rst *= i;
cout << rst;
20

如下 C++ 代码能实现输出正整数 N 的各位数字。

int N;
cin >> N;
while (N > 0) {
    cout << (N % 10) << endl;
    N = N / 10;
}
21

将如下 C++ 代码中的 printf("\n") 更换为 printf("%c", '\n'),输出效果相同。

for (int i = 0; i < 100; i++) {
    if (i % 5 == 0)
    printf("\n");
    printf("%2d ", i);
}
22

C++ 代码 cout << (2.5 % 2) 能够生成可执行代码,但执行时将报错,因为 % 只能适用于正整数。

23

下面的 C++ 代码执行后将输出 24。

int total;
for (int n = 1; n <= 4; n++) {
    total *= n;
}

cout << total;
24

如果 a 是 C++ 的整型变量,值为 4,则表达式 (a % 2 == 0) + (a / 2) 的值为 4。

25

删除下面 C++ 代码中的 continue 后,其输出与原来相同。

int x = 0;
while (x < 4) {
    x++;
    if (x == 2) continue;
    cout << x << ",";
}

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

26
编程操作题 25分

试题名称:去旅行

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

题目描述

快暑假了,小杨同学正在计划出去旅行,前往目的地的方案多种多样,小杨同学想知道如何前往目的地最便宜。

小杨同学住在 $A$ 市,旅行目的地是 $B$ 市,小杨同学前往目的地有三种方案:

  1. 从 $A$ 市直飞 $B$ 市;
  2. 从 $A$ 市坐高铁到 $C$ 市,然后坐飞机到 $B$ 市;
  3. 从 $A$ 市坐高铁到 $C$ 市,然后坐高铁到 $B$ 市。

请帮小杨同学求出最便宜的出行方案的价格。

输入格式

输入包含 $4$ 行,每行一个正整数:

  • 第 $1$ 行的正整数表示「从 $A$ 市直飞 $B$ 市」的价格;
  • 第 $2$ 行的正整数表示「从 $A$ 市坐高铁到 $C$ 市」的价格;
  • 第 $3$ 行的正整数表示「从 $C$ 市坐飞机到 $B$ 市」的价格;
  • 第 $4$ 行的正整数表示「从 $C$ 市坐高铁到 $B$ 市」的价格。

输出格式

输出一个正整数,表示 $3$ 种方式中,最便宜的出行方案的价格。

样例输入 #1

999
105
699
588

样例输出 #1

693

样例输入 #2

9
3
8
7

样例输出 #2

9

说明/提示

样例解释 1

方案 $1$. 直飞价格为 $999$;

方案 $2$. 高铁转飞机价格为 $105 + 699 = 804$;

方案 $3$. 高铁的价格为 $105 + 588 = 693$;

因此最便宜的价格是 $693$。

样例解释 2

方案 $1$. 直飞价格为 $9$;

方案 $2$. 高铁转飞机价格为 $3 + 8 = 11$;

方案 $3$. 高铁的价格为 $3 + 7 = 10$;

因此最便宜的价格是 $9$。

数据范围

所有输入均为正整数,且不超过 $10000$。

27
编程操作题 25分

试题名称:交税

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

题目描述

根据国家税收相关规定,劳务报酬需要按月预交个税,预交税率如下:

  1. 劳务报酬不超过 $800$ 的,不需要预交个税;
  2. 劳务报酬超过 $800$ 的,仅超过 $800$ 的部分按照 $20\%$(即 $0.2$)税率预交个税(不超过 $800$ 的部分不需要预交个税);

例如,月劳务报酬为 $1000.0$,则按照规则 $2$ 需要预交个税 $(1000.0 - 800.0) \times 20\% = 40.00$。

现在给定小杨同学 $12$ 个月的月度劳务报酬,请帮小杨同学计算他这 $12$ 个月应预交个税的总和。

输入格式

输入 $12$ 行,每行一个浮点数,表示小杨同学 $12$ 个月中每个月的劳务报酬。

每个浮点数恰好有一位小数。

输出格式

输出 $1$ 行,一个浮点数,保留两位小数,表示小杨同学 $12$ 个月应预交个税的总和。

样例输入 #1

932.0
1634.3
1790.4
2172.9
378.1
283.4
2761.9
3583.5
10.1
2324.9
1111.6
3812.3

样例输出 #1

2584.76

说明/提示

样例解释 1

  1. $932.0$ 符合规则 $2$,超过 $800$ 的部分为 $132.0$,按照 $20\%$ 预交为 $132.0 \times 20\% = 26.40$;
  2. $1634.3$ 符合规则 $2$,超过 $800$ 的部分为 $834.3$,按照 $20\%$ 预交为 $834.3 \times 20\% = 166.86$;
  3. $1790.4$ 符合规则 $2$,超过 $800$ 的部分为 $990.4$,按照 $20\%$ 预交为 $990.4 \times 20\% = 198.08$;
  4. $2172.9$ 符合规则 $2$,超过 $800$ 的部分为 $1372.9$,按照 $20\%$ 预交为 $1372.9 \times 20\% = 274.58$;
  5. $378.1$ 符合规则 $1$,不需要预交个税;
  6. $283.4$ 符合规则 $1$,不需要预交个税;
  7. $2761.9$ 符合规则 $2$,超过 $800$ 的部分为 $1961.9$,按照 $20\%$ 预交为 $1961.9 \times 20\% = 392.38$;
  8. $3583.5$ 符合规则 $2$,超过 $800$ 的部分为 $2783.5$,按照 $20\%$ 预交为 $2783.5 \times 20\% = 556.70$;
  9. $10.1$ 符合规则 $1$,不需要预交个税;
  10. $2324.9$ 符合规则 $2$,超过 $800$ 的部分为 $1524.9$,按照 $20\%$ 预交为 $1524.9 \times 20\% = 304.98$;
  11. $1111.6$ 符合规则 $2$,超过 $800$ 的部分为 $311.6$,按照 $20\%$ 预交为 $311.6 \times 20\% = 62.32$;
  12. $3812.3$ 符合规则 $2$,超过 $800$ 的部分为 $3012.3$,按照 $20\%$ 预交为 $3012.3 \times 20\% = 602.46$;

总和为 $2584.76$。

数据范围

小杨同学每月劳务报酬收入均为正,且恰好有一位小数,且不超过 $4000.0$。

已答 0/27