GESP 客观题评测系统

试卷解析 · 理解每一步

2025-06-Level-3

2025-06-Level-3

试卷解析总览,可直接查看每题答案与解析。

单选题

第 1 题(单选题,2 分)

8位二进制原码能表示的最小整数是:()

A.
-127
B.
-128
C.
-255
D.
-256

正确答案A

解析详情
答案 A原码表示范围
思路与推导
  1. 8位二进制原码,第1位为符号位,剩余7位为数值位。最大值为 `01111111` (+127),最小值为 `11111111` (-127)。

第 2 题(单选题,2 分)

反码表示中,零的表示形式有:

A.
1种
B.
2种
C.
8种
D.
16种

正确答案B

解析详情
答案 B反码中零的表示
思路与推导
  1. 在反码表示中,零有两种形式:正零 `00000000` 和负零 `11111111`。

第 3 题(单选题,2 分)

补码 1011 1011 对应的真值是()

A.
-69
B.
-59
C.
-68
D.
-58

正确答案A

解析详情
答案 A补码转真值
思路与推导
  1. 补码 `1011 1011` 首位为 1,是负数。转原码:先减 1 得 `1011 1010`,再取反(除符号位)得 `1100 0101`。1000101(2) = 64 + 4 + 1 = 69。故真值为 -69。

第 4 题(单选题,2 分)

若 X 的 8 位补码为 0000 1010,则 X/2 的补码是()。

A.
0000 0101
B.
1000 0101
C.
0000 0101 或 1000 0101
D.
算术右移后结果取决于符号位

正确答案A

解析详情
答案 A补码算术右移
思路与推导
  1. X 的补码为 `0000 1010` (10)。X/2 为 5。5 的补码为 `0000 0101`。对于正数,补码右移高位补 0。

第 5 题(单选题,2 分)

二进制数 1101.101 对应的十进制数是()

A.
13.625
B.
12.75
C.
11.875
D.
14.5

正确答案A

解析详情
答案 A二进制小数转十进制
思路与推导
  1. `1101.101`:整数部分 `1*8 + 1*4 + 0*2 + 1*1 = 13`;小数部分 `1*0.5 + 0*0.25 + 1*0.125 = 0.625`。总和为 13.625。

第 6 题(单选题,2 分)

补码加法中,若符号位无进位而次高位有进位,则说明()

A.
结果正确
B.
发生上溢
C.
发生下溢
D.
结果符号位错误

正确答案B

解析详情
答案 B补码加法溢出判断
思路与推导
  1. 补码加法中,符号位无进位而次高位有进位,意味着两个正数相加结果变成了负数,发生了正溢出(上溢)。

第 7 题(单选题,2 分)

八进制数35.6对应的十进制数是()

A.
29.75
B.
28.5
C.
27.625
D.
30.25

正确答案A

解析详情
答案 A八进制小数转十进制
思路与推导
  1. `35.6` (8):整数部分 `3*8 + 5 = 29`;小数部分 `6 * 8^-1 = 6/8 = 0.75`。总和为 29.75。

第 8 题(单选题,2 分)

二进制数 1010 | 1100 的结果是()

A.
1000
B.
1110
C.
1010
D.
1100

正确答案B

解析详情
答案 B位运算(按位或)
思路与推导
  1. `1010 | 1100`:对应位进行或运算,1|1=1, 0|1=1, 1|0=1, 0|0=0。结果为 `1110`。

第 9 题(单选题,2 分)

以下哪个位运算可以交换两个变量的值(无需临时变量)()

A.
a = a ^ b; b = a ^ b; a = a ^ b;
B.
a = a & b; b = a | b; a = a & b;
C.
a = a | b; b = a ^ b; a = a ^ b;
D.
a = ~a; b = ~b; a = ~a;

正确答案A

解析详情
答案 A异或运算交换变量
思路与推导
  1. 使用三次异或可以交换两个变量的值而不需要临时变量:1. a = a ^ b; 2. b = a ^ b (此时b变为原a); 3. a = a ^ b (此时a变为原b)。

第 10 题(单选题,2 分)

如何正确定义一个长度为5的整型数组()

A.
int array = new int[5];
B.
array int[5];
C.
int[] array = {1,2,3,4,5};
D.
int array[5];

正确答案D

解析详情
答案 DC++ 数组定义语法
思路与推导
  1. 在 C++ 中,定义固定长度数组的标准语法是 `类型 数组名[长度];`。例如 `int array[5];`。选项 C 虽然在某些环境下可行,但不是标准的固定长度数组定义方式。

第 11 题(单选题,2 分)

以下程序使用枚举法(穷举法)求解满足条件的三位数,横线处应该填入的是()

#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;
}
A.
int b = (i / 10) / 10;
B.
int b = (i / 10) % 10;
C.
int b = (i % 10) / 10;
D.
int b = (i % 10) % 10;

正确答案B

解析详情
答案 BC++ 整数拆位运算
思路与推导
  1. 提取三位数的十位数 `b`:`(i / 10) % 10`。先通过除以 10 舍弃个位,再对 10 取模获取当前的末位(即原十位)。

第 12 题(单选题,2 分)

以下程序模拟了一个简单的小球反弹过程,横线处应该填入的是()

#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;
}
A.
distance += height/2;
B.
distance += height;
C.
distance += height*2;
D.
distance += height+1;

正确答案B

解析详情
答案 BC++ 循环累加逻辑
思路与推导
  1. 模拟小球下落,每次落地后高度减半并累加到总路程。代码中 `height /= 2; distance += height;` 逻辑下,填入 `distance += height;` 符合该模拟题意(尽管物理模型可能有差异)。

第 13 题(单选题,2 分)

C++代码 string s = "GESP考试";,s占据的字节数是()

A.
10
B.
8
C.
8或10
D.
取决于计算机采用什么编码

正确答案D

解析详情
答案 D字符编码与内存占用
思路与推导
  1. `std::string` 中存储的中文字符占据的字节数取决于环境编码。UTF-8 下一个汉字通常占 3 字节,GBK 下占 2 字节。因此占据的字节数是不确定的。

第 14 题(单选题,2 分)

C++语句 string s="Gesp Test"; 执行s.rfind("e")以后,输出的是()

A.
1
B.
2
C.
6
D.
3

正确答案C

解析详情
答案 CC++ string rfind 函数
思路与推导
  1. `rfind` 函数从右向左查找字符第一次出现的位置(即最后一次出现的位置)。"Gesp Test" 中 'e' 出现在索引 1 和索引 6。`rfind` 返回 6。

第 15 题(单选题,2 分)

字符串"Gesp考试",字符数是()

A.
10
B.
8
C.
6
D.
字符数多少取决于编码

正确答案C

解析详情
答案 C字符串字符数统计
思路与推导
  1. 字符串 "Gesp考试" 由 4 个英文字符 ('G','e','s','p') 和 2 个中文字符 ('考','试') 组成,总字符数为 6。注意这里问的是“字符数”而非“字节数”。

判断题

第 1 题(判断题,2 分)

C++中 string 的 == 运算符比较的是字符串的内存地址,而非内容

正确答案错误

解析详情
答案 错误C++ string 比较运算符
思路与推导
  1. 在 C++ 中,`std::string` 的 `==` 运算符经过重载,比较的是字符串的内容是否相同,而不是内存地址(C 风格字符串比较地址需用 `==`,比较内容需用 `strcmp`)。

第 2 题(判断题,2 分)

string 的 substr(1, 3) 返回从下标1开始的3个字符的子串。

正确答案正确

解析详情
答案 正确C++ string substr 函数
思路与推导
  1. `substr(pos, len)` 返回从 `pos` 开始长度为 `len` 的子串。`substr(1, 3)` 即返回索引 1 开始的 3 个字符。

第 3 题(判断题,2 分)

x 是浮点数,(x >> 1) 等价于 x / 2

正确答案错误

解析详情
答案 错误C++ 位运算适用类型
思路与推导
  1. 位移运算符 `>>` 和 `<<` 只能应用于整型数据(int, char, long 等),不能应用于浮点数(float, double)。

第 4 题(判断题,2 分)

string("hello") == "hello" 的比较结果为true。

正确答案正确

解析详情
答案 正确C++ string 构造与比较
思路与推导
  1. `string("hello")` 创建了一个临时 string 对象,与字符串字面量 "hello" 比较时,会调用重载的 `==` 运算符比较内容。结果为 true。

第 5 题(判断题,2 分)

sort 可以直接用于排序 set 中的元素。

正确答案错误

解析详情
答案 错误STL 容器与排序算法
思路与推导
  1. `std::sort` 要求容器支持随机访问迭代器(如 vector, deque)。`std::set` 的元素是有序存储的,且其迭代器是双向迭代器,不支持随机访问,不能使用 `std::sort`。

第 6 题(判断题,2 分)

(x & 1) == 0 可以判断整数 x 是否为偶数。

正确答案正确

解析详情
答案 正确位运算判断奇偶性
思路与推导
  1. 偶数的二进制最后一位是 0,奇数是 1。`x & 1` 提取最后一位,若结果为 0 则 x 是偶数。

第 7 题(判断题,2 分)

string 的 substr(2, 10) 在字符串长度不足时会抛出异常。

正确答案错误

解析详情
答案 错误C++ string substr 边界处理
思路与推导
  1. 如果 `pos` 在字符串范围内,但 `len` 超过了剩余长度,`substr` 只会返回到字符串结尾的所有字符,而不会抛出异常。只有当 `pos > size()` 时才会抛出 `out_of_range` 异常。

第 8 题(判断题,2 分)

在数学纸面计算中,pow(2, 3) 的计算结果一定是8,但是在C++中,如果遇到数据类型是浮点数,那就不一定正确。

正确答案正确

解析详情
答案 正确C++ 浮点数精度问题
思路与推导
  1. `pow` 函数返回浮点数,且浮点数在计算机中存在精度误差。例如 `pow(2, 3)` 可能会得到 `7.999999`,转为整型时可能变成 7。因此在处理需要精确整数的场合需谨慎。

第 9 题(判断题,2 分)

在C++中,枚举的底层类型可以是非整型(如 float 或 double)。

正确答案错误

解析详情
答案 错误C++ 枚举底层类型
思路与推导
  1. C++ 中枚举(enum)的底层类型必须是整型(如 char, int, long long)。不能是浮点型。

第 10 题(判断题,2 分)

函数声明 double f(); 返回 int 时,会自动转换为 double

正确答案正确

解析详情
答案 正确C++ 函数返回值隐式转换
思路与推导
  1. 如果函数声明返回 `double`,但内部 `return` 了一个 `int`,编译器会自动执行隐式类型转换,将 `int` 提升为 `double`。