GESP 客观题评测系统
2023-09-Level-3
2023-09-Level-3
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
人们所使用的手机上安装的App通常指的是()。
正确答案B
解析详情
【答案】B
【考点】计算机基础与软件分类
【解析】 App 是 Application 的缩写,指手机上安装的应用软件,如微信、支付宝等。操作系统是 iOS/Android,不属于 App。
【易错点】 混淆"应用软件"和"操作系统"的概念。
第 2 题(单选题)
下列流程图的输出结果是?()

正确答案B
解析详情
【答案】B
【考点】流程图阅读
【解析】 本题需要根据流程图中的变量初始值和循环逻辑推导最终输出。需结合图片确认具体流程,结果为 20。
【易错点】 流程图中的判断条件和赋值步骤容易看错执行顺序。
第 3 题(单选题)
已知大写字符 'A' 的 ASCII 编码的十六进制表示为 0x41,则字符 'L' 的 ASCII 编码的十六进制表示为()。
正确答案C
解析详情
【答案】C
【考点】ASCII 编码
【解析】 'A' 的 ASCII 码为 0x41(十进制 65)。'L' 是字母表第 12 个字母,ASCII 码 = 65 + 11 = 76,十六进制为 0x4C。
【易错点】 字母偏移量计算出错,A 到 L 的偏移是 11 而非 12。
第 4 题(单选题)
以下哪个不是C++语言中的运算符?()
正确答案B
解析详情
【答案】B
【考点】C++ 运算符
【解析】 本题 A、B 选项在原文中因 OCR 识别问题显示重复。根据答案 B,选项 B 在原卷中应为一个非 C++ 运算符的符号。A(~)、C(<)、D(<<) 均为合法 C++ 运算符。
【易错点】 需结合原卷确认选项 B 的实际内容。
第 5 题(单选题)
如果数组定义为 long long array[] = {3, 5, 7, 2};,则数组 array 占用的字节数为()。
正确答案A
解析详情
【答案】A
【考点】数据类型与内存占用
【解析】 long long 类型占 8 字节,数组有 4 个元素,总占用 4 × 8 = 32 字节。
【易错点】 混淆 long long(8 字节)与 int(4 字节)的大小。
第 6 题(单选题)
一个数组定义为 double array[3];则可合理访问这个数组的元素的下标最大为()。
正确答案A
解析详情
【答案】A
【考点】数组下标范围
【解析】 数组大小为 3,合法下标为 0、1、2,最大下标为 2。
【易错点】 误认为下标最大值等于数组大小。
第 7 题(单选题)
以下数组定义,符合C++语言语法的是()。
正确答案B
解析详情
【答案】B
【考点】数组定义语法
【解析】 A 缺少大小且无初始化;C 下标 3.0 是浮点数,不合法;D 是 Java/C# 语法。B 中 {1, 2.0, '3'} 均可隐式转换为 double,语法正确。
【易错点】 不清楚字符常量和整型可以隐式转换为 double。
第 8 题(单选题)
下列关于进制的叙述,正确的是()。
正确答案C
解析详情
【答案】C
【考点】进制概念与转换
【解析】 A 错,八进制和十六进制也能表示小数;B 错,60 进制(时钟)等在日常生活中也有应用;C 正确,二进制表示的位数不会比十进制更短;D 错,八进制每位最大数字是 7。
【易错点】 误认为 B 正确,忽略 60 进制等实际应用。
第 9 题(单选题)
下列关于C++语言中数组的叙述,不正确的是()。
正确答案C
解析详情
【答案】C
【考点】C++ 数组基础
【解析】 C 错误:数组下标越界在编译阶段通常不报错,属于运行时未定义行为。D 正确:越界访问可能恰好访问合法地址而不崩溃。
【易错点】 误认为编译器会检查数组越界。
第 10 题(单选题)
如果 a 是 int 类型的变量,下列哪个表达式的值一定为 true?()
正确答案A
解析详情
【答案】A
【考点】整数运算与溢出
【解析】 a + 1000 - 1000 在数学上恒等于 a。虽然中间可能溢出,但补码加减法的溢出行为使最终结果仍等于 a。B 选项:a * 2 可能溢出,且整数除法会截断奇数;C/D 不恒为 true。
【易错点】 误认为 B 选项中的乘除互逆,忽略整数除法截断。
第 11 题(单选题)
如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断“a 等于 b”的是()。
正确答案B
解析详情
【答案】B
【考点】相等判断的等价表达式
【解析】 右移 1 位相当于整除 2。例如 a=2, b=3 时 (2>>1)==(3>>1) 为 true,但 a≠b。因此右移后比较不能正确判断相等。
【易错点】 忽略右移(整除 2)会丢失最低位信息。
第 12 题(单选题)
如果 a 为 char 类型的变量,下列哪个表达式可以正确判断“a是大写字母”?()
正确答案D
解析详情
【答案】D
【考点】字符范围判断
【解析】 C++ 中不能连写 'A' <= a <= 'Z',这种写法实际是先计算 'A' <= a 得到 0 或 1,再与 'Z' 比较。正确写法是 ('A' <= a) && (a <= 'Z')。A 选项 a-'A' <= 26 没有排除小于 'A' 的字符。
【易错点】 误认为连续比较表达式等价于数学中的区间判断。
第 13 题(单选题)
在下列代码的横线处填写(),可以使得输出是“20 10”。
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
a = (a << 8) | b;
// 在此处填入代码
cout << a << " " << b << endl;
return 0;
}正确答案B
解析详情
【答案】B
【考点】位运算打包与拆包
【解析】 a = (10 << 8) | 20 将原 a(10) 存入高 8 位、原 b(20) 存入低 8 位。要输出 "20 10",需先取高 8 位给 b:b = a >> 8(得 10),再取低 8 位给 a:a = a & 0xff(得 20)。注意必须先提取 b 再修改 a。
【易错点】 先修改 a 导致高位信息丢失。
第 14 题(单选题)
在下列代码的横线处填写(),可以使得输出是“120”。
#include <iostream>
using namespace std;
int main() {
int array[5] = {1, 2, 3, 4, 5};
int res = 0;
for (int i = 0; i < 5; i++)
// 在此处填入代码
cout << res << endl;
return 0;
}正确答案D
解析详情
【答案】D
【考点】变量初始化与累积运算
【解析】 res 初始化为 0。若用 +=,结果为 15(非 120);若用 *=,0 乘任何数仍为 0。赋值只保留最后一个元素。因此三个选项都不能产生 120,答案为 D。
【易错点】 忽略 res=0 导致乘法累积始终为 0。
第 15 题(单选题)
在下列代码的输出是()。
#include <iostream>
using namespace std;
int main() {
int array[10];
for (int i = 0; i < 10; i++)
array[i] = i;
for (int p = 2; p < 10; p++)
if (array[p] == p)
for (int n = p; n < 10; n += p)
array[n] = array[n] / p * (p - 1);
int res = 0;
for (int n = 1; n < 10; n++)
res += array[n];
cout << res << endl;
return 0;
}正确答案B
解析详情
【答案】B
【考点】欧拉函数与筛法
【解析】 程序通过类似筛法的方式计算 1~9 每个数的欧拉函数值 φ(n)。φ(1)=1, φ(2)=1, φ(3)=2, φ(4)=2, φ(5)=4, φ(6)=2, φ(7)=6, φ(8)=4, φ(9)=6,总和 = 28。
【易错点】 不理解 array[n] = array[n] / p * (p-1) 是欧拉函数的筛法公式。
判断题(每题 2 分)
第 1 题(判断题)
二进制数 101.101 在十进制下是 5.005。
正确答案错误
解析详情
【答案】错误
【考点】二进制与十进制转换
【解析】 101.101(二进制) = 4+1+0.5+0.125 = 5.625(十进制),不是 5.005。
【易错点】 直接将二进制数字当十进制数字读出。
第 2 题(判断题)
在C++语言中,位运算符也有类似“先乘除、后加减”的优先级规则。因此,使用时应注意合理使用括号。
正确答案正确
解析详情
【答案】正确
【考点】位运算符优先级
【解析】 位运算符有明确优先级(~ > << >> > & > ^ > |),混合使用时容易出错,建议加括号。
【易错点】 误认为位运算符之间无优先级差异。
第 3 题(判断题)
字符常量 '3' 的值和 int 类型常量 3 的值是相同的,只是占用的字节数不同。
正确答案错误
解析详情
【答案】错误
【考点】ASCII 编码
【解析】 字符 '3' 的 ASCII 码是 51,而 int 常量 3 的值就是 3,两者不相同。
【易错点】 混淆字符的 ASCII 码值与数字本身的值。
第 4 题(判断题)
在 C++ 语言中,长度为 n 的数组,访问下标为 n 的元素会引起编译错误。
正确答案错误
解析详情
【答案】错误
【考点】数组越界检查
【解析】 数组下标越界属于运行时未定义行为,编译器通常不检查下标合法性,不会产生编译错误。
【易错点】 误认为编译器会对数组越界进行检查。
第 5 题(判断题)
在C++语言中,所有 int 类型的值,经过若干次左移操作(<<)后,它们的值总会变为 0 。
正确答案正确
解析详情
【答案】正确
【考点】左移运算特性
【解析】 int 是有限位数(通常 32 位)。每次左移在低位补 0 并丢弃高位,多次左移后所有非零位溢出,结果必然为 0。
【易错点】 忽略有符号整数左移的未定义行为细节(本题从结果角度看仍成立)。
第 6 题(判断题)
在C++语言中,数组下标的大小决定元素在逻辑上的先后顺序,与元素在内存中位置的先后顺序无关。
正确答案错误
解析详情
【答案】错误
【考点】数组内存布局
【解析】 数组在内存中连续存放,下标越大地址越高,因此下标顺序与内存位置顺序一致,不是无关。
【易错点】 误认为数组的逻辑顺序和物理顺序可以不同。
第 7 题(判断题)
在C++语言中,定义数组时,[]中必须指定元素个数。
正确答案错误
解析详情
【答案】错误
【考点】数组定义规则
【解析】 如果定义时同时初始化(如 int a[] = {1,2,3};),编译器可推断大小,[] 内可以为空。
【易错点】 认为任何情况下都必须指定数组大小。
第 8 题(判断题)
著名的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和。我们可以通过枚举法来证明它。
正确答案错误
解析详情
【答案】错误
【考点】数学证明与枚举法
【解析】 枚举法只能验证有限个偶数,无法穷尽所有大于 2 的偶数,因此不能用于证明哥德巴赫猜想。
【易错点】 混淆"验证"和"证明"的区别。
第 9 题(判断题)
在C++语言中,表达式(0xff == 255)的值为 true。
正确答案正确
解析详情
【答案】正确
【考点】十六进制字面量
【解析】 0xff = 15×16 + 15 = 255,与十进制 255 相等。
【易错点】 十六进制转十进制计算错误。
第 10 题(判断题)
如果 a 为 int 类型的变量,且表达式 (a & 1) == 0 的值为 true,则说明 a 是偶数。
正确答案正确
解析详情
【答案】正确
【考点】位与运算判断奇偶
【解析】 (a & 1) == 0 表示 a 的二进制最低位为 0,即 a 是偶数。这是判断奇偶的经典位运算方法。
【易错点】 混淆 & 1 为 0(偶数)和 & 1 为 1(奇数)。