GESP_2026年06月_C++三级试卷

从PDF导入:GESP_2026年06月_C++三级试卷

C++ 120分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
关于计算机的数据编码,下面说法正确的是()。
A. 机器数10001101B的真值可能是-13(如果它是原码)或141(如果它是无符号数)等数
B. 计算机中,所有数据最终都以二进制、八进制、十六进制的形式存储和运算
C. 字节(Byte)是计算机中最小的数据单位
D. 计算机中,1k字节是1000字节的意思
第2题 中级 2.0分 单选
计算机厂商为了计算方便,一般采用1000进制。如果我们买的厂商标注的是1TB的硬盘,它实际的存储容量是()。
A. 931Gb
B. 931GB
C. 1049GB
D. 977Gb
第3题 中级 2.0分 单选

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

A. 12D、34D
B. 12Q、34Q
C. 12H、34H
D. 00010011B、00110101B
第4题 中级 2.0分 单选
关于计算机编码中反码和补码,下面说法错误的是()。
A. 负数的补码,一个快速方法是从右往左扫描正数的二进制形式,遇到第一个1之后,左边的所有位都取反
B. 对于一个n位的二进制数:最大表示范围[-2^(n-1)-1, +2^(n-1)-1]
C. 反码减法可以统一为加法。符号位可以直接参与运算
D. 反码表示中,0的表示不唯一:00000000B和11111111B
第5题 中级 2.0分 单选

一种加密方式是字符数组与密钥 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题 中级 2.0分 单选
关于位运算,下列说法错误的是()。
A. 找唯一数:数组中唯一出现一次的数,其余出现两次,全部异或结果即为该数
B. 交换两个数:a^=b; b^=a; a^=b;(无需临时变量)
C. 将二进制位整体左移n位,高位溢出舍弃,低位补0;等价于num乘以2^n
D. 对每一个二进制位取反,包括符号位,简单运算规则是~n=-n-1
第7题 中级 2.0分 单选
关于字符串和字符数组,下列说法正确的是()。

char str[] = "GESP";
int len1 = sizeof(str);
int len2 = strlen(str);
上面程序能够正确执行,len1与len2相等。
char str1[4] = "GESP";
char str2[4] = {'G', 'E', 'S', 'P'};
这段程序将能够正确执行。
char str2[4] = {'G', 'E', 'S', 'P'};
strcpy(str2, "HELLO,GESP");
cout << str2 << endl;
这段程序即使能够运行,但是存在覆盖数组以外的内存空间的行为,可能会引起严重错误。
char dest[4] = {'G', 'E', 'S', 'P'};
char src[] = "HELLO";
strcat(dest, src);
cout << dest << endl;
这段程序能够正确执行,不存在数组越界行为。

第8题 中级 2.0分 单选
计算机中的2KB等于多少bit()。
A. 16384
B. 20000
C. 2000
D. 2048
第9题 中级 2.0分 单选
在C++中,对于32位有符号整数int类型数据n,关于按位取反运算符~,下列说法正确的是()。
A. ~6的结果是5
B. 按位取反满足公式~n=-n-1
C. ~0的结果是1
D. ~(-2)的结果是-1
第10题 中级 2.0分 单选
关于计算机中的二进制编码表示,下列说法错误的是()。
A. 原码是最直观的一种有符号数表示方法。最高位为符号位:0表示正数,1表示负数
B. 补码完美解决了原码和反码的缺陷,是现代计算机中表示有符号整数的标准方式
C. 计算补码的一个更快的技巧:从右往左扫描正数的二进制形式,遇到第一个1之后,左边的所有位都取反
D. 对于一个n位的二进制数,补码最大表示范围为[-2^(n-1), +2^(n-1)]
第11题 中级 2.0分 单选
下面选项中提到的变量都是正整数,关于位运算,下面说法错误的是()。
A. num&1,结果为1则奇数,0则偶数(仅看最低位)
B. num&0xFF保留低8位
C. num&b的结果一定小于等于num
D. 若num左移导致高位溢出(如超过整型范围),结果符合乘法规律
第12题 中级 2.0分 单选
a=7, b=3, c=14, d=15, e=8,对于运算表达式!a<<b&c^d|e的结果是()。
A. 0
B. 15
C. 7
D. 14
第13题 中级 2.0分 单选
关于string的成员函数,下面说法错误的是()。
A. size():返回字符串长度(字符个数,不含'\0')
B. length()与size()功能完全一致,返回字符串长度
C. empty():判断字符串是否为空(非空返回true,空返回false)
D. s.append(s2,0,3):从s2下标0开始,截取3个字符
第14题 中级 2.0分 单选
以下数组定义,符合C++语法的是()。
A. int [10] a;
B. int b['&'];
C. int c[*];
D. double d[10.0];
第15题 中级 2.0分 单选
判断字符串可能是哪个进制数,横线处应填入()。

#include 
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;
}

A. cout<<(max>='1')<<" "<<(max>='7')<<" "<<(max>='9')<<" "<<(max>='F')<
B. cout<<(max<='1')<<" "<<(max<='7')<<" "<<(max<='9')<<" "<<(max<='F')<
C. cout<<(max=='1')<<" "<<(max=='7')<<" "<<(max=='9')<<" "<<(max=='F')<
D. cout<<(max<'1')<<" "<<(max<'7')<<" "<<(max<'9')<<" "<<(max<'F')<
第16题 中级 2.0分 判断
反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。
T. 正确
F. 错误
第17题 中级 2.0分 判断
-11的补码的一种计算方式是从右往左扫描正数的二进制形式,遇到第一个1之后,左边的所有位都取反。
T. 正确
F. 错误
第18题 中级 2.0分 判断
一个8位的二进制数补码,最大的表示范围是从-127到+127。
T. 正确
F. 错误
第19题 中级 2.0分 判断
判断某个数是否是质数,枚举范围可适当缩小(遍历到√i而非i),提升效率。
T. 正确
F. 错误
第20题 中级 2.0分 判断
如果a为int类型的变量,且表达式((a&1)==1)的值为true,则说明a是奇数。
T. 正确
F. 错误
第21题 中级 2.0分 判断
十六进制数CCF对应的二进制数、八进制数、十进制数分别是:110011001111、6317、3269。
T. 正确
F. 错误
第22题 中级 2.0分 判断
下列程序如果能够正确执行,那么输出的结果是GESP。

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

T. 正确
F. 错误
第23题 中级 2.0分 判断
某个初学C++的学生,代码中cou拼写错误,这个程序能够正常编译运行。

#include 
using namespace std;
int main() {
cou << "Hello world!" << endl;
return 0;
}

T. 正确
F. 错误
第24题 中级 2.0分 判断
代码逐行复刻手工运算步骤,中间不能增加任何判断逻辑,否则就不属于模拟算法。
T. 正确
F. 错误
第25题 中级 2.0分 判断
判断一个int型数字s[i]是不是在0和9之间,判断条件可以写为if(s[i]>='0' && s[i]<='9')。
T. 正确
F. 错误
第26题 中级 25.0分 编程
加密


【题目描述】小杨同学有一串数字,想把它们变成另一串数字,这个过程叫做加密。他有一本密码本,密码本告诉你每个数字应该变成哪个数字。数字一共有10个:0、1、2、3、4、5、6、7、8、9。密码本会依次告诉你0要变成什么,1要变成什么……9要变成什么。请你按照密码本,把原来的每个数字都换成新的数字,然后输出。

【输入格式】输入共有3行。第一行:一个整数,表示有多少个数字需要加密;第二行:这些需要加密的数字;第三行:密码本,一共10个数字。

【输出格式】输出加密后的数字。

【样例】
7
0203419
9012345678
【样例解释】
9192308
【数据范围】需要加密的数字个数不超过20000个,且均为0到9;密码本中的数字不重复,且均为0到9。
第27题 中级 25.0分 编程
字符转换


【题目描述】小杨同学有一串字符,里面可能有:大写字母、小写字母、数字。现在小杨同学想把这串字符变一变,规则如下:1.如果是大写字母,就变成对应的小写字母;2.如果是小写字母,就变成对应的大写字母;3.如果是数字,就变成*。

【输入格式】输入一共有2行。第一行:一个整数,表示这串字符一共有多少个字符。第二行:一串连续的字符,中间没有空格。

【输出格式】输出转换后的字符。输出时字符之间不要加空格。

【样例】
5
aBc98
【样例解释】
<pre class="inline-code">AbC**
【数据范围】字符个数不会超过1000个。每个字符只会是大写字母、小写字母或数字。
💬