GESP 客观题评测系统
2025-06-Level-3
2025-06-Level-3
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
8位二进制原码能表示的最小整数是:()
正确答案A
解析详情
【答案】A 【考点】原码表示范围 【解析】8位二进制原码,第1位为符号位,剩余7位为数值位。最大值为 `01111111` (+127),最小值为 `11111111` (-127)。 【易错点】误以为原码可以表示 -128(这是补码的特性)。
第 2 题(单选题)
反码表示中,零的表示形式有:
正确答案B
解析详情
【答案】B 【考点】反码中零的表示 【解析】在反码表示中,零有两种形式:正零 `00000000` 和负零 `11111111`。 【易错点】忽略反码中符号位取反导致的两种零的表示。
第 3 题(单选题)
补码 1011 1011 对应的真值是()
正确答案A
解析详情
【答案】A 【考点】补码转真值 【解析】补码 `1011 1011` 首位为 1,是负数。转原码:先减 1 得 `1011 1010`,再取反(除符号位)得 `1100 0101`。1000101(2) = 64 + 4 + 1 = 69。故真值为 -69。 【易错点】补码转真值时的位运算步算错误。
第 4 题(单选题)
若 X 的 8 位补码为 0000 1010,则 X/2 的补码是()。
正确答案A
解析详情
【答案】A 【考点】补码算术右移 【解析】X 的补码为 `0000 1010` (10)。X/2 为 5。5 的补码为 `0000 0101`。对于正数,补码右移高位补 0。 【易错点】误认为符号位会影响正数的位移结果。
第 5 题(单选题)
二进制数 1101.101 对应的十进制数是()
正确答案A
解析详情
【答案】A 【考点】二进制小数转十进制 【解析】`1101.101`:整数部分 `1*8 + 1*4 + 0*2 + 1*1 = 13`;小数部分 `1*0.5 + 0*0.25 + 1*0.125 = 0.625`。总和为 13.625。 【易错点】小数部分位权计算错误(应为 2^-1, 2^-2, 2^-3)。
第 6 题(单选题)
补码加法中,若符号位无进位而次高位有进位,则说明()
正确答案B
解析详情
【答案】B 【考点】补码加法溢出判断 【解析】补码加法中,符号位无进位而次高位有进位,意味着两个正数相加结果变成了负数,发生了正溢出(上溢)。 【易错点】混淆上溢和下溢的触发条件。
第 7 题(单选题)
八进制数35.6对应的十进制数是()
正确答案A
解析详情
【答案】A 【考点】八进制小数转十进制 【解析】`35.6` (8):整数部分 `3*8 + 5 = 29`;小数部分 `6 * 8^-1 = 6/8 = 0.75`。总和为 29.75。 【易错点】八进制小数位权计算错误。
第 8 题(单选题)
二进制数 1010 | 1100 的结果是()
正确答案B
解析详情
【答案】B 【考点】位运算(按位或) 【解析】`1010 | 1100`:对应位进行或运算,1|1=1, 0|1=1, 1|0=1, 0|0=0。结果为 `1110`。 【易错点】将或运算 `|` 误认为与运算 `&` 或异或运算 `^`。
第 9 题(单选题)
以下哪个位运算可以交换两个变量的值(无需临时变量)()
正确答案A
解析详情
【答案】A 【考点】异或运算交换变量 【解析】使用三次异或可以交换两个变量的值而不需要临时变量:1. a = a ^ b; 2. b = a ^ b (此时b变为原a); 3. a = a ^ b (此时a变为原b)。 【易错点】记错异或交换的步骤顺序。
第 10 题(单选题)
如何正确定义一个长度为5的整型数组()
正确答案D
解析详情
【答案】D 【考点】C++ 数组定义语法 【解析】在 C++ 中,定义固定长度数组的标准语法是 `类型 数组名[长度];`。例如 `int array[5];`。选项 C 虽然在某些环境下可行,但不是标准的固定长度数组定义方式。 【易错点】混淆 C++ 与 Java 等其他语言的数组定义语法。
第 11 题(单选题)
以下程序使用枚举法(穷举法)求解满足条件的三位数,横线处应该填入的是()
#include <iostream>
using namespace std;
int main() {
int count = 0;
for (int i = 100; i <= 999; i++) {
int a = i / 100;
int c = i % 10;
if (a * a + b * b == c * c) {
count++;
}
}
cout << count << endl;
return 0;
}正确答案B
解析详情
【答案】B 【考点】C++ 整数拆位运算 【解析】提取三位数的十位数 `b`:`(i / 10) % 10`。先通过除以 10 舍弃个位,再对 10 取模获取当前的末位(即原十位)。 【易错点】操作顺序颠倒导致提取到错误的位数。
第 12 题(单选题)
以下程序模拟了一个简单的小球反弹过程,横线处应该填入的是()
#include <iostream>
using namespace std;
int main() {
int height = 10;
int distance = 0;
for (int i = 1; i <= 5; i++) { // 模拟5次落地
height /= 2;
distance += height;
}
cout << distance << endl;
return 0;
}正确答案B
解析详情
【答案】B 【考点】C++ 循环累加逻辑 【解析】模拟小球下落,每次落地后高度减半并累加到总路程。代码中 `height /= 2; distance += height;` 逻辑下,填入 `distance += height;` 符合该模拟题意(尽管物理模型可能有差异)。 【易错点】对题目给定的特定模拟逻辑理解不准。
第 13 题(单选题)
C++代码 string s = "GESP考试";,s占据的字节数是()
正确答案D
解析详情
【答案】D 【考点】字符编码与内存占用 【解析】`std::string` 中存储的中文字符占据的字节数取决于环境编码。UTF-8 下一个汉字通常占 3 字节,GBK 下占 2 字节。因此占据的字节数是不确定的。 【易错点】忽略了不同编码对非 ASCII 字符存储空间的影响。
第 14 题(单选题)
C++语句 string s="Gesp Test"; 执行s.rfind("e")以后,输出的是()
正确答案C
解析详情
【答案】C 【考点】C++ string rfind 函数 【解析】`rfind` 函数从右向左查找字符第一次出现的位置(即最后一次出现的位置)。"Gesp Test" 中 'e' 出现在索引 1 和索引 6。`rfind` 返回 6。 【易错点】混淆 `find`(从左找)与 `rfind`(从右找)。
第 15 题(单选题)
字符串"Gesp考试",字符数是()
正确答案C
解析详情
【答案】C 【考点】字符串字符数统计 【解析】字符串 "Gesp考试" 由 4 个英文字符 ('G','e','s','p') 和 2 个中文字符 ('考','试') 组成,总字符数为 6。注意这里问的是“字符数”而非“字节数”。 【易错点】将字符数与字节数概念混淆。
判断题(每题 2 分)
第 1 题(判断题)
C++中 string 的 == 运算符比较的是字符串的内存地址,而非内容
正确答案错误
解析详情
【答案】错误 【考点】C++ string 比较运算符 【解析】在 C++ 中,`std::string` 的 `==` 运算符经过重载,比较的是字符串的内容是否相同,而不是内存地址(C 风格字符串比较地址需用 `==`,比较内容需用 `strcmp`)。 【易错点】混淆 `std::string` 对象与 C 风格字符指针的比较行为。
第 2 题(判断题)
string 的 substr(1, 3) 返回从下标1开始的3个字符的子串。
正确答案正确
解析详情
【答案】正确 【考点】C++ string substr 函数 【解析】`substr(pos, len)` 返回从 `pos` 开始长度为 `len` 的子串。`substr(1, 3)` 即返回索引 1 开始的 3 个字符。 【易错点】记错 `substr` 的第二个参数含义(是长度而非结束索引)。
第 3 题(判断题)
x 是浮点数,(x >> 1) 等价于 x / 2
正确答案错误
解析详情
【答案】错误 【考点】C++ 位运算适用类型 【解析】位移运算符 `>>` 和 `<<` 只能应用于整型数据(int, char, long 等),不能应用于浮点数(float, double)。 【易错点】认为位运算可以像算术运算一样通用于所有数值类型。
第 4 题(判断题)
string("hello") == "hello" 的比较结果为true。
正确答案正确
解析详情
【答案】正确 【考点】C++ string 构造与比较 【解析】`string("hello")` 创建了一个临时 string 对象,与字符串字面量 "hello" 比较时,会调用重载的 `==` 运算符比较内容。结果为 true。 【易错点】误认为地址不同会导致结果为 false。
第 5 题(判断题)
sort 可以直接用于排序 set 中的元素。
正确答案错误
解析详情
【答案】错误 【考点】STL 容器与排序算法 【解析】`std::sort` 要求容器支持随机访问迭代器(如 vector, deque)。`std::set` 的元素是有序存储的,且其迭代器是双向迭代器,不支持随机访问,不能使用 `std::sort`。 【易错点】对不同 STL 容器支持的迭代器类型不熟悉。
第 6 题(判断题)
(x & 1) == 0 可以判断整数 x 是否为偶数。
正确答案正确
解析详情
【答案】正确 【考点】位运算判断奇偶性 【解析】偶数的二进制最后一位是 0,奇数是 1。`x & 1` 提取最后一位,若结果为 0 则 x 是偶数。 【易错点】习惯性只使用 `% 2 == 0` 而忽略位运算的等价写法。
第 7 题(判断题)
string 的 substr(2, 10) 在字符串长度不足时会抛出异常。
正确答案错误
解析详情
【答案】错误 【考点】C++ string substr 边界处理 【解析】如果 `pos` 在字符串范围内,但 `len` 超过了剩余长度,`substr` 只会返回到字符串结尾的所有字符,而不会抛出异常。只有当 `pos > size()` 时才会抛出 `out_of_range` 异常。 【易错点】认为长度不足必然导致异常。
第 8 题(判断题)
在数学纸面计算中,pow(2, 3) 的计算结果一定是8,但是在C++中,如果遇到数据类型是浮点数,那就不一定正确。
正确答案正确
解析详情
【答案】正确 【考点】C++ 浮点数精度问题 【解析】`pow` 函数返回浮点数,且浮点数在计算机中存在精度误差。例如 `pow(2, 3)` 可能会得到 `7.999999`,转为整型时可能变成 7。因此在处理需要精确整数的场合需谨慎。 【易错点】忽视浮点运算在极端情况下的精度损失。
第 9 题(判断题)
在C++中,枚举的底层类型可以是非整型(如 float 或 double)。
正确答案错误
解析详情
【答案】错误 【考点】C++ 枚举底层类型 【解析】C++ 中枚举(enum)的底层类型必须是整型(如 char, int, long long)。不能是浮点型。 【易错点】认为枚举可以映射到任何数值类型。
第 10 题(判断题)
函数声明 double f(); 返回 int 时,会自动转换为 double
正确答案正确
解析详情
【答案】正确 【考点】C++ 函数返回值隐式转换 【解析】如果函数声明返回 `double`,但内部 `return` 了一个 `int`,编译器会自动执行隐式类型转换,将 `int` 提升为 `double`。 【易错点】误认为返回类型不严格匹配会导致编译失败。