【202609】C++三级
从PDF导入:GESP 2026年09月_C++3级试卷
C++
120分钟
总分 100.0
27 题
试卷题目预览
第1题
中级
2.0分
单选
关于计算机的数据编码,下面说法不正确的是( )。
第2题
中级
2.0分
单选
关于进制转换,下面说法不正确的是( )。
第3题
中级
2.0分
单选
下面程序的运行结果是( )。

第4题
中级
2.0分
单选
关于计算机编码中补码,下面说法错误的是( )。
第5题
中级
2.0分
单选
下面程序执行的结果是( )。

第6题
中级
2.0分
单选
关于位运算,下面说法错误的是( )。
第7题
中级
2.0分
单选
计算 3 & 7 | 15 ^ ~11(a=3,b=7,c=15,d=11):( )。
第8题
中级
2.0分
单选
下面函数是一个加密解密的函数,横线处应该填入的程序段是( )。

第9题
中级
2.0分
单选
下列程序是分别判断输入的 N 个数是否可能是二进制、八进制、十进制、十六进制,横线处应该填入的是( )。

第10题
中级
2.0分
单选
下面的程序是位掩码技术实现权限的组合管理。首先定义四个权限常量,分别对应读、写、修改、删除,每个权限占用整数的一个独立二进制位。初始化权限掩码 mask 为 0,代表没有任何权限。如果想实现如下的操作:添加读权限;添加写权限;清除该权限(读),其他位不变;添加删除权限。则横线处应该填入的是( )。

第11题
中级
2.0分
单选
下面选项中提到的变量都是正整数,关于位运算,下面说法错误的是( )。
第12题
中级
2.0分
单选
已知:a=8,b=2,c=11,d=7,e=5,表达式 !a & b << c ^ d | e 的结果是( )。
第13题
中级
2.0分
单选
关于 string 的成员函数,下面说法错误的是( )。
第14题
中级
2.0分
单选
以下数组定义,符合 C++ 语法的是( )。
第15题
中级
2.0分
单选
三进制有个奇妙的应用。有 1000 个酒缸,恰好 1 缸有毒。毒酒喝下后 24 小时毒发死亡;无毒酒无影响。总共有 48 小时,可以做两轮实验,每轮可以重新安排老鼠喝酒。有三种情况,这只老鼠两轮都不喝这缸酒;这只老鼠第一轮喝这缸酒;这只老鼠第二轮喝这缸酒。要保证找出毒酒,最少需要多少只老鼠?( )
第16题
中级
2.0分
判断
对于计算机编码运算,补码做加法运算时,如果最高位产生进位,需要把该进位循环加到结果的最低位。
第17题
中级
2.0分
判断
求 -13 的补码,可以对正 13 的二进制,从右向左扫描,遇到第一个 1 之后,右边所有位全部取反,左边保持不变。
第18题
中级
2.0分
判断
一个 8 位二进制原码表示的有符号数,可表示的数值范围是 -128 到 +127。
第19题
中级
2.0分
判断
这段代码执行后,能够将数组中所有大于 0 的元素赋值为 0。

第20题
中级
2.0分
判断
a 是 int 有符号整型,若 (a & 1) == 1 结果为 true,则 a 一定是正奇数。
第21题
中级
2.0分
判断
char str[4] = "GESP"; 将在内存空间中给 str[4] 分配 5 个字节。
第22题
中级
2.0分
判断
判断字符串中字符是否是 '0' 或者 '1',可以写条件:if(str[i]==0 || str[i]==1) 。
第23题
中级
2.0分
判断
下面程序执行后,将输出 98 。

第24题
中级
2.0分
判断
枚举可以在保证不漏解的前提下缩小枚举范围,不是必须遍历全部。
第25题
中级
2.0分
判断
下面流程图逻辑:初始化 sum ← 0,i ← 0;当 i < n 成立时,执行 sum ← sum + a[i],再执行 i ← i + 1;循环结束输出 sum。该流程图可以正确计算一维数组 a[0] ~ a[n] 全部元素的总和。

第26题
中级
25.0分
编程
公共二进制位
试题名称:公共二进制位
时间限制:1.0 s
内存限制:512.0 MB
小红有 n 个非负整数 a1, a2, …, an。她将每个整数转换为二进制后,想知道有多少个二进制位在所有整数中均为 1。
二进制位从右向左编号为 0, 1, 2, …。若某个整数的二进制表示中没有第 k 位,则认为它的第 k 位为 0。
请你求出满足条件的二进制位数量。
2 ≤ n ≤ 200000,0 ≤ ai ≤ 10⁹。
【输入格式】
第一行一个整数 n,表示整数的个数。 第二行 n 个非负整数 a1, a2, …, an。
【输出格式】
输出一个整数,表示所有整数的二进制表示中均为 1 的二进制位数量。
【输入样例 1】 3 13 7 15 【输出样例 1】 2 【样例解释 1】 三个整数的二进制表示分别为 (1101)2、(0111)2 和 (1111)2。其中第 0 位和第 2 位均为 1,因此答案为 2。 【数据范围】 2 ≤ n ≤ 200000,0 ≤ ai ≤ 10⁹。
第27题
中级
25.0分
编程
分割字符串
试题名称:分割字符串
时间限制:1.0 s
内存限制:512.0 MB
小明拿到了一段字符串文本。小明希望用下面的规则分割这个字符串:
1.小明从左到右扫描字符串,遇到第一个空格后停止,并将字符串分割为左右两个部分(舍弃用于分割的这个空格);
2.对于上次分割后右侧的字符串,小明继续扫描,第一次遇到连续两个空格后停止,并将字符串分割为左右两个部分(舍弃用于分割的这两个空格);
3.对于上次分割后右侧的字符串,小明继续扫描,第一次遇到连续三个空格后停止,并将字符串分割为左右两个部分(舍弃用于分割的这三个空格);
4.以此类推,小明每分割一次,下一次分割就需要更长的连续空格;直到字符串无法再次分割。
最后输出每次分割的左侧的字符串,以及最后一次分割的右侧字符串。
如果字符串完全无法进行任何一次分割,直接输出其本身。
字符串长度不超过 1000。字符串中只会包含大写字母、小写字母、数字,或空格,且输入字符串不会以空格结尾。
特别强调:输入仅一行,但可能包含若干空格。
【输入格式】
输入一行,一个字符串。
【输出格式】
输出若干行。每行为分割后的一个字符串,注意依次输出:第一次分割左侧的字符串、第二次分割左侧的字符串、…、最后一次分割左侧的字符串、最后一次分割右侧的字符串。
【输入样例 1】 sdfd 55 55 99312 【输出样例 1】 sdfd 55 55 55 55 99312 【样例解释 1】 第一次分割将字符串分割为 sdfd 和 55 55 55 99312; 第二次分割将字符串分割为 55 55 和 55 99312。 对于第二次分割,注意 55 和 55 之间虽然有空格,但是第二次分割需要连续两个空格才行; 另外,55 55 和 99312 之间有三个空格,第二次分割只需要两个,所以会分割为 55 55 和 (一个空格)99312,也就是右侧会留下一个空格;因为只留下了一个空格,所以不再满足第三次分割要求。 【输入样例 2】 AbCd 999 【输出样例 2】 AbCd 999 【样例解释 2】 第一次分割将字符串分割为 AbCd 和 (两个空格)999; 第二次分割将字符串分割为空字符串和 999。 由于 AbCd 和 999 之间有三个空格,第一次分割消耗掉一个,因此还能进行第二次分割,这个时候会分割出空字符串,因此输出中会输出一个空行(不能省略)。 【数据范围】 字符串长度不超过 1000。字符串中只会包含大写字母、小写字母、数字,或空格,且输入字符串不会以空格结尾。 特别强调:输入仅一行,但可能包含若干空格。
计算机科学中,单位换算默认 1K
数字 1101
可以分解为:1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13(十进制)
数字 42Q 可以分解为:4×8¹ + 2×8⁰ = 32 + 2 = 34(十进制)
数字 2BEH 可以分解为:2×16² + 11(






