返回试卷目录

需要电子版时点「打印 / 保存为 PDF」,在打印对话框的「目标打印机」里选择「另存为 PDF」即可下载。登录后可下载,每天 10 次

GESP C++ 编程三级 · 2026 年 6 月卷

GESP · C++ · 共 27 题 · 满分 100 分

姓名:____________日期:____________得分:____________

  1. 1.单选题2 分

    关于计算机的数据编码,下面说法正确的是()。们如何解释它。

    • A.机器数1000 1101B的真值可能是-13(如果它是原码)或141(如果它是无符号数)等数,这取决于我
    • B.计算机中,所有数据最终都以二进制、八进制、十六进制的形式存储和运算。
    • C.字节(Byte)是计算机中最小的数据单位。位(bit)是计算机中最小的存储单位。
    • D.计算机中,1k字节是1000字节的意思。
  2. 2.单选题2 分

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

    • A.1000×1000×1000×1000÷1024÷1024÷1024b = 931Gb
    • B.1000×1000×1000×1000÷1024÷1024÷1024B = 931GB
    • C.1024×1024×1024×1024÷1000÷1000÷1000÷1024B = 1049GB
    • D.1000×1024×1024×1024÷1024÷1024÷1024b = 977Gb
  3. 3.单选题2 分

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

    • A.12D、34D
    • B.12Q、34Q
    • C.12H、34H
    • D.00010011B、00110101B
  4. 4.单选题2 分

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

    • A.负数的补码,一个快速方法是从右往左扫描正数的二进制形式,遇到第一个1之后,左边的所有位都取
    • B.对于一个位的二进制数:最大表示范围:。
    • C.反码减法可以统一为加法。符号位可以直接参与运算。
    • D.反码表示中,的表示不唯一:0000 0000B和1111 1111B。1 / 9
  5. 5.单选题2 分

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

    • A.GCSR
    • B.RSCG
    • C.GCSA
    • D.BCSR
  6. 6.单选题2 分

    关于位运算,下列说法错误的是()。5](唯一数是9)。

    • A.找唯一数:数组中唯一出现一次的数,其余出现两次,全部异或结果即为该数。例如:数组[5, 7, 9, 7,
    • B.交换两个数:a ^= b; b ^= a; a ^= b;(无需临时变量)。
    • C.将二进制位整体左移位,高位溢出舍弃,低位补0;等价于num乘以。
    • D.对每一个二进制位取反,包括符号位,简单运算规则是~n = -n - 1。
  7. 7.单选题2 分

    关于字符串和字符数组,下列说法正确的是()。上面程序能够正确执行,len1与len2相等。这段程序将能够正确执行。这段程序即使能够运行,但是存在覆盖数组以外的内存空间的行为,可能会引起严重错误。这段程序能够正确执行,不存在数组越界行为。

    • A.char str[] = "GESP"; int len1 = sizeof(str); int len2 = strlen(str);
    • B.char str1[4] = "GESP"; char str2[4] = {'G', 'E', 'S', 'P'};
    • C.char str2[4] = {'G', 'E', 'S', 'P'}; strcpy(str2, "HELLO,GESP"); cout << str2 << endl;
    • D.char dest[4] = {'G', 'E', 'S', 'P'}; char src[] = "HELLO"; strcat(dest, src); cout << dest << endl;
  8. 8.单选题2 分

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

    • A.16384
    • B.20000 2 / 9
    • C.2000
    • D.2048
  9. 9.单选题2 分

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

    • A.~6的结果是5。
    • B.按位取反满足公式~n = -n - 1。
    • C.~0的结果是1。
    • D.~(-2)的结果是-1。
  10. 10.单选题2 分

    关于计算机中的二进制编码表示,下列说法错误的是()。余位为数值位(真值的绝对值)。码相同;负数的补码是将其对应正数的原码按位取反(得到反码),然后加1。反。

    • A.原码是最直观的一种有符号数表示方法。最高位(最左边的位)为符号位:0表示正数,1表示负数,其
    • B.补码完美解决了原码和反码的缺陷,是现代计算机中表示有符号整数的标准方式。正数的补码与其原码、反
    • C.计算补码的一个更快的技巧:从右往左扫描正数的二进制形式,遇到第一个1之后,左边的所有位都取
    • D.对于一个位的二进制数,补码最大表示范围为。
  11. 11.单选题2 分

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

    • A.num & 1,结果为1则奇数,0则偶数(仅看最低位)。
    • B.num & 0xFF保留低位。
    • C.num & b的结果一定小于等于num。
    • D.若num左移导致高位溢出(如超过整型范围),结果符合乘法规律。
  12. 12.单选题2 分

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

    • A.0
    • B.15
    • C.7
    • D.14
  13. 13.单选题2 分

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

    • A.size():返回字符串长度(字符个数,不含'\0')。
    • B.length()与size()功能完全一致,返回字符串长度。
    • C.empty():判断字符串是否为空(非空返回true,空返回false)。
    • D.s.append(s2, 0, 3);从s2下标0开始,截取3个字符。
  14. 14.单选题2 分

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

    • A.int [10] a;
    • B.int b['&'];
    • C.int c[*];
    • D.double d[10.0]; 3 / 9
  15. 15.单选题2 分

    现在有一个数,请你分别判断它们是否可能是二进制、八进制、十进制、十六进制。例如,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; } 'F') << endl; 'F') << endl; << endl; << endl;

    • A.cout << (max >= '1') << " " << (max >= '7') << " " << (max >= '9') << " " << (max >=
    • B.cout << (max <= '1') << " " << (max <= '7') << " " << (max <= '9') << " " << (max <=
    • C.cout << (max = '1') << " " << (max = '7') << " " << (max = '9') << " " << (max = 'F')
    • D.cout << (max < '1') << " " << (max < '7') << " " << (max < '9') << " " << (max < 'F')
  16. 16.判断题2 分

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

  17. 17.判断题2 分

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

  18. 18.判断题2 分

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

  19. 19.判断题2 分

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

  20. 20.判断题2 分

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

  21. 21.判断题2 分

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

  22. 22.判断题2 分

    下列程序如果能够正确执行,那么输出的结果是GESP。4 / 9 int main() { string name = "GESP"; cout << name[false] << name[true] << name[1 << 1] << name[7 >> 1] << endl; }

  23. 23.判断题2 分

    某个初学 C++ 的学生,在对照参考程序写了一个程序以后,信心满满地进行编译,他敲进编译器的全部代码如下,这个程序能够正常编译运行。 1 #include<bits/stdc++.h> 2 using namespace std; 3 int main() { 4 cout << "Hello world!" << endl; 5 return 0; 6 }

  24. 24.判断题2 分

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

  25. 25.判断题2 分

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

  26. 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 个数字。 输出格式:输出加密后的数字。也就是:把输入第二行里的每个数字,都按照输入第三行的密码本换掉后输出。 输入样例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 样例解释1:密码本第 1 个数字 9 表示 0 加密后变成 9,第 2 个数字 0 表示 1 加密后变成 0,依此类推。因此 0 2 0 3 4 1 9 依次变成 9 1 9 2 3 0 8。 数据范围:需要加密的数字个数不超过 20000 个,且均为 0 到 9;密码本中的数字不重复,且均为 0 到 9。

    第 26 题配图第 26 题配图

    作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。

  27. 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** 样例解释1:原来的字符是 aBc98。从左到右一个一个看:a 是小写字母,所以变成 A;B 是大写字母,所以变成 b;c 是小写字母,所以变成 C;9 是数字,所以变成 *;8 是数字,所以变成 *。所以最后输出 AbC**。 数据范围:字符个数不会超过 1000 个。每个字符只会是大写字母、小写字母或数字。

    第 27 题配图第 27 题配图第 27 题配图第 27 题配图

    作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。