
一、单选题 每题 2 分,共 30 分
| 1 | 答案:B 题干明确指出故障现象是「时序逻辑错误」导致「姿态解算结果异常」。姿态解算是飞行控制计算机中的核心计算任务,由CPU(中央处理器)执行运算与逻辑判断。高温可能引起 CPU 内部晶体管时序偏差、逻辑混乱,从而产生计算错误。A. 温度传感器:只能测量温度,不执行计算或判断,不会直接导致航向计算错误。C. 只读存储器(ROM):存储固定程序或数据,不受高温引起时序逻辑错误(ROM 通常是组合逻辑或存储单元,不参与复杂时序运算),且一般不会导致「计算过程出错」。D. 电动机驱动接口:属于输出/执行部件,不负责航向解算,即便出错也不会直接表现为计算逻辑错误。 |
| 2 | 答案:B A 错误:变量名不能以数字开头。B 正确:C++变量名可以以下划线或字母开头,后跟字母、数字或下划线, |
| 3 | 答案:C 计算机使用二进制浮点数(如 IEEE 754 标准)存储小数,而 1/3 在二进制中是无限循环小数,无法精确表示,因此存储的是一个近似值。 |
| 4 | 答案:D 在流程图中,不同形状的框代表不同的操作:椭圆形框(起止框):表示程序的开始或结束。平行四边形框(输入/输出框):表示输入或输出操作。菱形框(判断框):表示条件判断,根据条件成立与否选择不同的分支。矩形框(处理框):表示赋值、计算等处理操作。代码中标记 L1 的行为是: |
| 5 | 答案:B
|
| 6 | 答案:D 输入 2026,2026 % 3 = 1,不等于 0,因此不执行第 4 行。接着判断 |
| 7 | 答案:B 输入 |
| 8 | 答案:B 循环从 i = 1 到 i = 10。条件 |
| 9 | 答案:D 循环 i 从 -3 到 3(包括 -3 和 3)。条件 |
| 10 | 答案:B
|
| 11 | 答案:B 循环中 num 从 0 开始,每次先 +1。 |
| 12 | 答案:C A 错误:除以 6 写在输出中完全正确,不需要提前计算。B 错误:每位选手需重新初始化最高分、最低分和总分,因此这三行必须在每位选手的外层循环内,不能移出。C 正确: |
| 13 | 答案:A 循环条件 |
| 14 | 答案:C 本题中循环变量 i 从 0 开始,每次 +1,判断是否为偶数并累加,循环结束后 i 为 N+1。A 正确:输入 10,偶数 0+2+4+6+8+10 = 30,循环结束时 i = 11,输出 |
| 15 | 答案:C 王选院士是计算机文字信息处理专家,最突出的贡献是发明汉字激光照排系统,推动了中国出版印刷事业从铅字排版向数字化排版的革命。A 自动驾驶汽车与王选无关。B 创立培训学校不是其主要贡献。D 成立方正公司是在其技术成果基础上创办的企业,但最核心的贡献是技术发明本身(激光照排系统)。 |
二、判断题 每题 2 分,共 20 分
| 1 | 错误 平板电脑可能运行 iOS、Android、HarmonyOS 等多种操作系统,不一定装有 Windows。 |
| 2 | 错误
|
| 3 | 正确
|
| 4 | 错误
|
| 5 | 正确 外层循环 i 从 0 到 9,共执行 10 次。内层循环 j 从 0 开始,执行 |
| 6 | 错误 break 用于跳出当前循环,并非终止整个程序。说法不准确。 |
| 7 | 错误 3.0 是 double 类型,通常占 8 字节;3 是 int 类型,通常占 4 字节,存储空间不同。虽然值相等,但类型和内存占用不同。 |
| 8 | 错误
|
| 9 | 错误 输入 2026,代码执行过程:第1轮:flag=0,!flag 为真,输出 2026%10=6;N=202;flag=1第2轮:flag=1,!flag 为假,不输出;N=20;flag=0第3轮:flag=0,输出 20%10=0;N=2;flag=1第4轮:flag=1,不输出;N=0;flag=0最终输出 60,不是 6202。 |
| 10 | 正确 初始:x=1,y=1。i=1(奇数):y += x → y=2i=2(偶数):x += y → x=3i=3(奇数):y += x → y=5i=4(偶数):x += y → x=8最终:x + y = 8+5=13,不是 8。所以原命题说输出是 8 是错误的。 |
三、编程题
题目 A · 小杨的幸运数字
小杨有两个幸运数字 a 和 b(1≤a,b≤9),以及一个正整数 n。定义一个整数 x 是「幸运数」,当且仅当:x 的个位数字等于 a 或等于 b;并且 x 的十位数字(如果存在)不等于 a 且不等于 b。注意:如果 x 的十位数字不存在(即 x<10),则只判断条件1。输入:第一行一个整数 T(1≤T≤10),表示有 T 组数据。接下来 T 行,每行三个整数 n,a,b。输出:对于每组数据,输出一行一个整数,表示从 1 到 n 中幸运数的个数。
解题思路:
直接枚举法(因为 n ≤ 10000,完全可行)
对于 1 到 n 的每个数 i:
1. 取出个位数字 ge = i % 10
2. 取出十位数字 shi = (i / 10) % 10
3. 判断两个条件是否同时成立
4. 成立则计数器 +1
参考代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int T; // 数据组数
cin >> T;
while (T--) {
int n, a, b;
cin >> n >> a >> b;
int count = 0; // 幸运数计数器
// 遍历 1 到 n 的所有整数
for (int i = 1; i <= n; i++) {
int ge = i % 10; // 个位数字
int shi = (i / 10) % 10; // 十位数字(i<10 时为 0)
// 条件1:个位等于 a 或 b
// 条件2:十位不等于 a 且不等于 b(i<10 时 shi=0,自动满足)
if ((ge == a || ge == b) && (shi != a && shi != b)) {
count++;
}
}
cout << count << endl; // 输出当前组结果
}
return 0;
}
| 1 | 枚举每个数:遍历 1 到 n 的所有整数,对每个数分别判断是否满足幸运数条件。 |
| 2 | 提取个位和十位:个位 = i % 10,十位 = (i / 10) % 10。对于 i<10 的情况,十位自动为 0。 |
| 3 | 双条件判断:条件1:个位等于 a 或 b;条件2:十位不等于 a 且不等于 b。两个条件同时成立时计数器加1。 |
| 4 | 多组数据处理:外层 while(T--) 循环处理每组数据,每组独立计算并输出结果。 |
题目 B · 小杨的边框矩阵
小杨想要构造一个 m × m 的字符矩阵(m 为奇数,且 m ≥ 5)。共有三种模式:模式 1:矩阵的四条边框、中间行、中间列输出 +,其余输出 -。模式 2:矩阵的四条边框、主对角线输出 +,其余输出 -。模式 3:矩阵的四条边框、副对角线输出 +,其余输出 -。输入:第一行一个正整数 m(5 ≤ m ≤ 49,且 m 为奇数),第二行一个整数 mode(1 ≤ mode ≤ 3)。输出:输出 m 行,每行 m 个字符,字符之间没有空格。
核心思路:
1. 边框的判断:四条边框分别是第一行、最后一行、第一列、最后一列,用逻辑或连接。
2. 主对角线:行号等于列号,即 i == j。
3. 副对角线:行号加列号等于 m+1,即 i + j == m + 1。
4. 中间行/列:由于 m 是奇数,中间行和中间列是同一个位置,计算方式为 (m+1)/2。
5. 注意模式 1 的特殊性:模式 1 中,中间行和中间列是两条完整的线,中间行整行都是 +,中间列整列都是 +。
参考代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int m, mode;
cin >> m >> mode; // 输入矩阵大小和模式
int mid = (m + 1) / 2; // 中间行/列的位置
for (int i = 1; i <= m; i++) { // 遍历每一行
for (int j = 1; j <= m; j++) { // 遍历每一列
// 四条边框上的位置输出 +
bool ok = (i == 1 || i == m || j == 1 || j == m);
if (mode == 1) { // 模式1:加上中间行和中间列
if (i == mid || j == mid) ok = true;
} else if (mode == 2) { // 模式2:加上主对角线
if (i == j) ok = true;
} else { // 模式3:加上副对角线
if (i + j == m + 1) ok = true;
}
if (ok) {
cout << +;
} else {
cout << -;
}
}
cout << endl; // 每行结束后换行
}
return 0;
}
| 1 | 边框优先:无论哪种模式,四条边框(第一行、最后一行、第一列、最后一列)始终输出 +。这是基础规则。 |
| 2 | 模式分支:模式1额外标记中间行和中间列(i==mid 或 j==mid);模式2额外标记主对角线(i==j);模式3额外标记副对角线(i+j==m+1)。 |
| 3 | 双重循环遍历:外层循环 i 遍历行,内层循环 j 遍历列,对每个位置 (i,j) 判断是否满足当前模式的 + 条件。 |
| 4 | 输出格式:每行字符之间无空格,每行结束后输出换行。注意字符用单引号。 |
备考提示
本次 GESP 二级模拟题涵盖:计算机基础(CPU/ROM/流程图)、C++ 变量命名规则、浮点数精度与 printf 格式、switch 穿透效应、负数取余规则、类型转换与 ASCII 码、循环与条件判断、数组与矩阵图形输出等核心考点。建议重点掌握:负数取余的结果符号规则、switch 语句中 break 的作用、字符型数据参与运算时的隐式类型转换,以及双重循环处理矩阵问题的方法。
