编程未来 Coding Future

2026年6月 GESP C++ 3级

GESP · 3级 · 2026-06

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

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

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

1

关于计算机的数据编码,下面说法正确的是( )。

2

计算机⼚商为了计算方便,一般采用 1000 进制。如果我们买的⼚商标注的是 1 TB 的硬盘,它实际的存
储容量是( )。

3

低 位、高 位压缩技术,适用于数据仅使用字节的一部分(如仅用低 位)的场景。字节结构:一个字节
为 位,分为高 位(高位)和低 位(低位)。当数据是十六进制数( ,即 0x0 到 0xF),每个值仅需
位表⽰,高 位全为 0。将两个相邻的 位值合并为一个字节。四个数据 0x1、0x2、0x3、0x4 采用上述压
缩技术压缩以后是( )。

4

关于计算机编码中反码和补码,下面说法错误的是( )。

5

一种加密方式是字符数组与密钥 KEY、运算方式分开传输,比如字符数组 char text[4] = {'G', 'E',
'S', 'P'}; 由一种传输方式发送,密钥 KEY = 2026 通过另一种发送方式发送,运算方式 char function[4]
= {'|', '-', '^', '+'}; ⼜是另一种发送方式发送。三种数据都到达目的地以后,分别进行例如 'G' |
6、'E' - 2、'S' ^ 0、'P' + 2 等计算,来得到相应的真实内容,上述 GESP 通过这种加密方式,加密以后
最终的内容是( )。

6

关于位运算,下列说法错误的是( )。

7

关于字符串和字符数组,下列说法正确的是( )。

8

计算机中的 2 KB 等于多少 bit( )。

9

在 C++ 中,对于 位有符号整数 int 类型数据 n,关于按位取反运算符 ~,下列说法正确的是( )。

10

关于计算机中的二进制编码表⽰,下列说法错误的是( )。

11

下面选项中提到的变量都是正整数,关于位运算,下面说法错误的是( )。

12

a=7, b=3, c=14, d=15, e=8,对于运算表达式 !a << b & c ^ d | e 的结果是( )。

13

关于 string 的成员函数,下面说法错误的是( )。

14

以下数组定义,符合 C++ 语法的是( )。

15

现在有一个数,请你分别判断它们是否可能是二进制、八进制、十进制、十六进制。例如,6AFF 就只可
能是十六进制,⽽ 1011 则是四种进制皆有可能。输入 N(保证 ),表⽰有 N 个数让你进行判断,
接下来输入 N 个字符串(保证所有字符串长度不超过 10),判断可能是四个进制当中的哪个进制数。输出 N
行,每行 4 个数,用空格隔开,分别表⽰给定的字符串是否可能表⽰一个二进制数、八进制数、十进制数、十六进
制数。使用 1 表⽰可能,使用 0 表⽰不可能。下面程序横线处可以满足这个要求的是( )。

#include <iostream>
using namespace std;
int main() {
    int n = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        char str[11];
        cin >> str;
        char max = '0';
        for (int i = 0; str[i] != '\0'; i++)
        if (str[i] > max)
        max = str[i];
        ___________________________________________
    }
    return 0;
}

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

16

反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。

17

-11 的补码的一种计算方式是从右往左扫描正数的二进制形式,遇到第一个 1 之后,左边的所有位都取
反。

18

一个 位的二进制数补码,最大的表⽰范围是从 到 。

19

判断某个数是否是质数,枚举范围可适当缩小(遍历到 ⽽非 ),提升效率。

20

如果 a 为 int 类型的变量,且表达式 ((a & 1) == 1) 的值为 true,则说明 a 是奇数。

21

十六进制数 CCF 对应的二进制数、八进制数、十进制数分别是:110011001111、6317、3269。

22

下列程序如果能够正确执行,那么输出的结果是 GESP。

int main() {
    string name = "GESP";
    cout << name[false] << name[true] << name[1 << 1] << name[7 >> 1] << endl;
}
23

某个初学 C++ 的学生,在对照参考程序写了一个程序以后,信心满满地进行编译,他敲进编译器的全部代
码如下,这个程序能够正常编译运行。

1 #include<bits/stdc++.h>
2 using namespace std;
3 int main() {
    4 cout << "Hello world!" << endl;
    5 return 0;
    6 }
24

代码逐行复刻手⼯运算步骤,中间不能增加任何判断逻辑,否则就不属于模拟算法。

25

判断一个 int 型数字 s[i] 是不是在 0 和 9 之间(可以是 0 和 9),判断条件可以写为 if (s[i]

= '0' && s[i] <= '9')。

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

26
编程操作题 25分

试题名称:加密

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

题目描述

小杨同学有一串数字,想把它们变成另一串数字,这个过程叫做加密

他有一本密码本,密码本告诉你:每个数字应该变成哪个数字。

数字一共有 $10$ 个:$0$、$1$、$2$、$3$、$4$、$5$、$6$、$7$、$8$、$9$。

密码本会依次告诉你:

  • $0$ 要变成什么
  • $1$ 要变成什么
  • $2$ 要变成什么
  • ……
  • $9$ 要变成什么

请你按照密码本,把原来的每个数字都换成新的数字,然后输出。

输入格式

输入共有 $3$ 行。

第一行:一个整数,表示有多少个数字需要加密;

第二行:这些需要加密的数字;

第三行:密码本,一共 $10$ 个数字。

这 $10$ 个数字的意思是:

  • 第 $1$ 个数字:表示 $0$ 加密后变成什么;
  • 第 $2$ 个数字:表示 $1$ 加密后变成什么;
  • 第 $3$ 个数字:表示 $2$ 加密后变成什么;
  • ……
  • 第 $10$ 个数字:表示 $9$ 加密后变成什么。

输出格式

输出加密后的数字。

也就是:把输入第二行里的每个数字,都按照输入第三行的密码本换掉后输出。

样例输入 #1

7
0 2 0 3 4 1 9
9 0 1 2 3 4 5 6 7 8

样例输出 #1

9 1 9 2 3 0 8

说明/提示

第二行要加密的数字是:
$$0 \ 2 \ 0 \ 3 \ 4 \ 1 \ 9$$

第三行密码本是:
$$9 \ 0 \ 1 \ 2 \ 3 \ 4 \ 5 \ 6 \ 7 \ 8$$

它的意思是:

  • $0$ 变成 $9$
  • $1$ 变成 $0$
  • $2$ 变成 $1$
  • $3$ 变成 $2$
  • $4$ 变成 $3$
  • $5$ 变成 $4$
  • $6$ 变成 $5$
  • $7$ 变成 $6$
  • $8$ 变成 $7$
  • $9$ 变成 $8$

所以:

  • $0$ 变成 $9$
  • $2$ 变成 $1$
  • $0$ 变成 $9$
  • $3$ 变成 $2$
  • $4$ 变成 $3$
  • $1$ 变成 $0$
  • $9$ 变成 $8$

最后得到:
$$9 \ 1 \ 9 \ 2 \ 3 \ 0 \ 8$$

数据范围

需要加密的数字个数不超过 $20000$ 个,且均为 $0$ 到 $9$;密码本中的数字不重复,且均为 $0$ 到 $9$。

27
编程操作题 25分

试题名称:字符转换

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

题目描述

小杨同学有一串字符,里面可能有:

  • 大写字母,比如 $A$、$B$、$C$
  • 小写字母,比如 $a$、$b$、$c$
  • 数字,比如 $0$、$1$、$2$

现在小杨同学想把这串字符变一变,规则如下:

  1. 如果是大写字母,就变成对应的小写字母;
  2. 如果是小写字母,就变成对应的大写字母;
  3. 如果是数字,就变成 *

请你按照这个规则,帮小杨把整串字符转换好。

输入格式

输入一共有 $2$ 行。

第一行:一个整数,表示这串字符一共有多少个字符。

第二行:一串连续的字符,中间没有空格。

输出格式

输出转换后的字符。

注意:输出时字符之间不要加空格。

样例输入 #1

5
aBc98

样例输出 #1

AbC**

说明/提示

原来的字符是:

aBc98

从左到右一个一个看:

  1. $a$ 是小写字母,所以变成 $A$;
  2. $B$ 是大写字母,所以变成 $b$;
  3. $c$ 是小写字母,所以变成 $C$;
  4. $9$ 是数字,所以变成 *
  5. $8$ 是数字,所以变成 *

所以最后输出:

AbC**

数据范围

字符个数不会超过 $1000$ 个。

每个字符只会是大写字母、小写字母或数字。

已答 0/27