GESP C++ 2025年12月二级详细分析讲解及备考建议
GESP C++ 2025年12月二级认证选择题共15道,命题严格依据《GESP C++ 二级考试大纲(2026年1月28日修订版)》,聚焦计算机系统基础、C++语法细节与逻辑推理能力,强调对“循环控制”“取模运算”“布尔值转换”等易错点的准确掌握。以下为15道选择题的完整解析,并整合相关核心知识点:
第1题
题目:飞机的“飞行控制系统”要做判断,是靠哪一个部件?
A. 辐射传感器 B. 处理器 ✅ C. 内存单元 D. 输出设备
解析:
• 考点:计算机组成原理
• 核心概念:
• 处理器(CPU):负责逻辑判断(如 if 条件)和算术运算,是程序执行的核心。
• 传感器:仅采集外部信息(如太阳辐射),不参与计算。
• 内存:临时存储数据,不执行指令。
• 输出设备:执行结果(如舵面偏转),不参与决策。
• 结论:飞行控制系统的“判断”功能由处理器完成。
第2题
题目:教学楼内的网络属于哪一类?
A. PAN B. LAN ✅ C. MAN D. WAN
解析:
• 考点:计算机网络分类
• 核心概念:
• LAN(局域网):覆盖范围小(如一栋楼、校园),典型如家庭/学校 Wi-Fi。
• WAN(广域网):跨城市/国家(如互联网)。
• MAN(城域网):覆盖城市范围。
• PAN(个域网):个人设备互联(如蓝牙耳机)。
• 结论:教学楼网络属于 LAN。
第3题
题目:以下关于 C++ 变量的说法,正确的是?
A. 不可以用 for 作为变量名,因为 for 是关键字 ✅
B. _tnt 不可以是变量名,因为首字符必须是字母
C. _tnt_ 不可以是变量名,因末字符易与减号混淆
D. 可用 printf 作为变量名,因为它是关键字
解析:
• 考点:标识符与关键字规则
• 核心规则:
• 关键字(保留字):如 for、if、int 等,不能用作变量名。
• 变量命名:
• 首字符可为字母或下划线(_tnt 合法)
• 末字符无特殊限制(_tnt_ 合法)
• printf 是标准库函数名,不是关键字,可用作变量名(但不推荐)
• 结论:A 正确。
第4题
题目:小数 0.123123123…(循环节“123”),求小数点后第 N 位的值。横线处应填?
int N; cin >> N;
remainder = ______________;
if(remainder==0) cout<<1;
else if(remainder==1) cout<<2;
else cout<<3;
A. N%3 B. (N-1)%3 ✅ C. N/3 D. (N-1)/3
解析:
• 考点:循环节与取模运算
• 分析:
• 第1位 → 1 → remainder=0
• 第2位 → 2 → remainder=1
• 第3位 → 3 → remainder=2
• 第4位 → 1 → remainder=0
• 规律:remainder = (N-1) % 3
• 结论:B 正确。
第5题
题目:执行 printf("%g\n", (3 + 3.1415926535)); 的输出是?
A. 6 B. 6.14159 ✅ C. 6.141593 D. 6.14
解析:
• 考点:printf 格式化输出
• 核心规则:
• %g:自动选择 %f 或 %e 中较短的形式,默认保留6位有效数字。
• 3 + 3.1415926535 = 6.1415926535 → 6位有效数字为 6.14159
• 结论:B 正确。
第6题
题目:以下代码中 j 循环总共执行多少次?
int cnt = 0;
for(int i = -2; i <= 2; i++) {
for(int j = 1; j <= 2*i+5; j++)
cnt++;
}
A. 20 B. 25 ✅ C. 30 D. 35
解析:
• 考点:嵌套循环计数
• 计算过程:
• i=-2 → j 上限 = 2*(-2)+5=1 → 1 次
• i=-1 → 2*(-1)+5=3 → 3 次
• i=0 → 5 → 5 次
• i=1 → 7 → 7 次
• i=2 → 9 → 9 次
• 总计:1+3+5+7+9 = 25
• 结论:B 正确。
第7题
题目:对于整数 i 从 -2 到 1,i % 2 的布尔值依次为?
A. false, true, false, true ✅
B. true, false, true, false
C. false, false, true, true
D. true, true, false, false
解析: • 考点:负数取模与布尔转换 • 计算过程: |
i |
i % 2 |
布尔值 |
| -2 |
0 |
false |
| -1 |
-1 |
true |
| 0 |
0 |
false |
| 1 |
1 |
true |
• 核心规则:C++ 中 a % b 的符号与 a 相同;非零即真。
• 结论:A 正确。
第8题
题目:字符 'A' 的 ASCII 编码是多少?
A. 64 B. 65 ✅ C. 96 D. 97
解析:
• 考点:ASCII 编码规则
• 核心记忆:
• 'A' = 65, 'Z' = 90
• 'a' = 97, 'z' = 122
• '0' = 48, '9' = 57
• 空格 = 32
• 应用示例:
• 判断大写字母:if (c >= 'A' && c <= 'Z')
• 大小写转换:c = c - 'A' + 'a'
• 结论:正确答案为 B。
第9题
题目:表达式 10 * 4 % 6 和 10 * 2 % 3 的结果是否相同?
A. 相同 B. 不相同 ✅
解析:
• 考点:运算符优先级与结合性
• 计算过程:
• 10 * 4 % 6 → 40 % 6 → 4
• 10 * 2 % 3 → 20 % 3 → 2
• 核心规则:
• *(乘)与 %(取模)同优先级,且左结合(从左到右计算)。
• 结论:两表达式结果不同。
第10题
题目:以下代码执行后将输出什么?
int i;
for(i = 0; i < 10; i++)
if(i % 3 == 0) continue;
else break;
cout << i;
A. 0 B. 1 ✅ C. 3 D. 10
解析:
• 考点:continue 与 break 的执行逻辑
• 逐步模拟:
• i = 0:0 % 3 == 0 → 执行 continue → 跳过本次循环剩余部分,进入 i++ → i = 1
• i = 1:1 % 3 != 0 → 执行 else break → 立即跳出整个 for 循环
• 此时 i = 1,cout << i; 输出 1
• 结论:输出为1。
第11题
题目:在 C++ 中,bool 类型的变量可以存储任意整数值。( )
A. 正确 B. 错误 ✅
解析:
• 考点:布尔类型(bool)的取值范围
• 核心规则:
• bool 变量只能存储 true 或 false,在内存中分别以 1 和 0 表示。
• 虽然任何非零整数在逻辑判断中视为 true,但赋值给 bool 变量时会被隐式转换为 1 或 0。
• 结论:bool 不能存储任意整数值。
第12题
题目:cin >> a >> b; 可以连续读取两个变量的值。( )
A. 正确 ✅ B. 错误
解析:
• 考点:C++ 输入流(cin)的链式操作
• 核心机制:
• cin 是一个输入流对象,>> 是重载的提取运算符
• cin >> a >> b; 等价于 (cin >> a) >> b;,即先读入 a,再读入 b
• 结论:该语句合法且常用。
第13题
题目:C++中,if (x = 5) 是一个合法的条件判断语句。( )
A. 正确 ✅(但逻辑通常错误) B. 错误
解析:
• 考点:赋值运算符(=)与相等运算符(==)的混淆
• 语法层面:
• x = 5 是赋值表达式,其值为 5(非零)
• if (5) 条件为真,因此语法合法
• 逻辑陷阱:
• 此处本意应为 if (x == 5)(判断是否等于 5)
• if (x = 5) 会先将 x 赋值为 5,再判断,导致逻辑错误
• 结论:语法正确,但属于典型编程错误。
第14题
题目:C++程序中,// 注释可以跨越多行。( )
A. 正确 B. 错误 ✅
解析:
• 考点:C++ 注释语法
• 核心规则:
• //:单行注释,从 // 开始到行尾结束
• /* ... */:多行注释,可跨越多行
• 结论:// 不能跨行。
第15题
题目:对于负整数 i,表达式 i % 2 的结果在C++中总是0或1。( )
A. 正确 B. 错误 ✅
解析:
• 考点:C++ 中取模运算对负数的处理
• 核心规则:
• C++ 标准规定:a % b 的符号与 a 相同
• 例如:(-1) % 2 = -1,(-2) % 2 = 0
• 布尔转换:
• -1 在布尔上下文中为 true(非零即真)
• 但 i % 2 的实际值可能是 -1,并非总是 0 或 1
• 结论:该说法错误。
GESP C++ 二级选择题核心知识体系总结
| 知识模块 |
易错点与核心规则 |
| 计算机系统 |
CPU 负责计算/判断;LAN/WAN 区分;内存 vs 存储 |
| 数据类型 |
bool 非零即真;%g 保留6位有效数字;ASCII 编码规则 |
| 运算符 |
* 与 % 同优先级、左结合;负数取模符号与被除数相同;逻辑短路求值 |
| 控制结构 |
嵌套循环计数;for 循环三要素;循环变量作用域 |
| 数组与字符串 |
数组下标从0开始;越界访问危险;字符串以 \0 结尾 |
| 算法基础 |
排序稳定性;时间复杂度估算;递归基本原理 |
备考建议
-
强化概念辨析:重点区分 LAN/WAN、CPU/内存、关键字/函数名等易混点。
-
动手验证:对不确定的代码(如负数取模、嵌套循环)编写小程序测试输出。
-
真题训练:通过 [GESP官网真题解析栏目] 反复练习,熟悉命题风格。
GESP C++ 2025年12月二级认证的判断题共10道,命题严格依据《GESP C++ 二级考试大纲(2026年1月28日修订版)》,聚焦计算机系统基础、C++语法细节与逻辑推理能力,强调对“循环控制”“取模运算”“布尔值转换”等易错点的准确掌握。以下为10道判断题的完整解析,并整合相关核心知识点:
第1题
题目:在C++中,for(int i = 9; i > -1; i--) 和 for(int i = 0; i < 10; i++) 的执行结果一定相同。( )
答案:❌ 错误
解析:
• 考点:循环变量顺序对程序逻辑的影响
• 核心概念:
• 前者 i 从9递减到0(顺序:9,8,...,0)
• 后者 i 从0递增到9(顺序:0,1,...,9)
• 关键点:若循环体内涉及依赖顺序的操作(如数组访问、累加顺序敏感的计算),结果可能不同。
• 结论:仅当循环体与 i 的顺序无关时结果才相同,题目未说明此前提,故判断为错误。
第2题
题目:C++表达式 10 * 4 % 6 和 10 * 2 % 3 的结果相同。( )
答案:❌ 错误
解析:
• 考点:运算符优先级与结合性
• 计算过程:
• 10 * 4 % 6 → 40 % 6 → 4
• 10 * 2 % 3 → 20 % 3 → 2
• 核心规则:
• *(乘)与 %(取模)同优先级,且左结合(从左到右计算)。
• 结论:两表达式结果不同。
第3题
题目:以下C++代码执行后将输出0。( )
int i;
for(i = 0; i < 10; i++)
if(i % 3 == 0) continue;
else break;
cout << i;
答案:❌ 错误
解析:
• 考点:continue 与 break 的执行逻辑
• 逐步模拟:
• i = 0:0 % 3 == 0 → 执行 continue → 跳过本次循环剩余部分,进入 i++ → i = 1
• i = 1:1 % 3 != 0 → 执行 else break → 立即跳出整个 for 循环
• 此时 i = 1,cout << i; 输出 1
• 结论:输出为1,非0。
第4题
题目:在C++中,bool 类型的变量可以存储任意整数值。( )
答案:❌ 错误
解析:
• 考点:布尔类型(bool)的取值范围
• 核心规则:
• bool 变量只能存储 true 或 false,在内存中分别以 1 和 0 表示。
• 虽然任何非零整数在逻辑判断中视为 true,但赋值给 bool 变量时会被隐式转换为 1 或 0。
• 结论:bool 不能存储任意整数值。
第5题
题目:C++中,char 类型只能存储英文字母。( )
答案:❌ 错误
解析:
• 考点:字符类型(char)的存储范围
• 核心概念:
• char 本质是8位整数,可存储 ASCII 码 0~127(或扩展 ASCII 0~255)
• 可表示:英文字母、数字字符('0'~'9')、标点符号('!', '@', '#' 等)、控制字符('\n', '\t')
• 结论:char 可存储多种字符,不仅限于英文字母。
第6题
题目:cin >> a >> b; 可以连续读取两个变量的值。( )
答案:✅ 正确
解析:
• 考点:C++ 输入流(cin)的链式操作
• 核心机制:
• cin 是一个输入流对象,>> 是重载的提取运算符
• cin >> a >> b; 等价于 (cin >> a) >> b;,即先读入 a,再读入 b
• 结论:该语句合法且常用。
第7题
题目:C++中,if (x = 5) 是一个合法的条件判断语句。( )
答案:✅ 正确(但逻辑通常错误)
解析:
• 考点:赋值运算符(=)与相等运算符(==)的混淆
• 语法层面:
• x = 5 是赋值表达式,其值为 5(非零)
• if (5) 条件为真,因此语法合法
• 逻辑陷阱:
• 此处本意应为 if (x == 5)(判断是否等于 5)
• if (x = 5) 会先将 x 赋值为 5,再判断,导致逻辑错误
• 结论:语法正确,但属于典型编程错误。
第8题
题目:C++程序中,// 注释可以跨越多行。( )
答案:❌ 错误
解析:
• 考点:C++ 注释语法
• 核心规则:
• //:单行注释,从 // 开始到行尾结束
• /* ... */:多行注释,可跨越多行
• 结论:// 不能跨行。
第9题
题目:在C++中,变量名可以包含空格。( )
答案:❌ 错误
解析:
• 考点:变量命名规则
• 核心规则:
• 变量名必须由字母、数字、下划线组成
• 不能包含空格、标点符号(如 +、-、*、/、@ 等)
• 必须以字母或下划线开头(不能以数字开头)
• 结论:变量名不可含空格。
第10题
题目:对于负整数 i,表达式 i % 2 的结果在C++中总是0或1。( )
答案:❌ 错误
解析:
• 考点:C++ 中取模运算对负数的处理
• 核心规则:
• C++ 标准规定:a % b 的符号与 a 相同
• 例如:(-1) % 2 = -1,(-2) % 2 = 0
• 布尔转换:
• -1 在布尔上下文中为 true(非零即真)
• 但 i % 2 的实际值可能是 -1,并非总是 0 或 1
• 结论:该说法错误。
GESP C++ 二级判断题核心知识体系总结
| 知识模块 |
易错点与核心规则 |
| 控制结构 |
continue 跳过本次循环,break 终止整个循环;循环顺序影响结果 |
| 运算符 |
* 与 % 同优先级、左结合;=(赋值)≠ ==(相等);负数取模符号与被除数相同 |
| 数据类型 |
bool 仅存 0/1;char 存 ASCII 码(非仅字母) |
| 语法规范 |
变量名无空格/符号;// 单行注释,/* */ 多行注释 |
| I/O 操作 |
cin 支持链式输入(cin >> a >> b) |
备考建议
-
强化概念辨析:重点区分赋值/相等、单行/多行注释、正/负数取模等易混点。
-
动手验证:对不确定的代码(如第3题循环、第10题负数取模)编写小程序测试输出。
-
真题训练:通过 [GESP官网真题解析栏目] 反复练习,熟悉命题风格。
GESP C++ 2025年12月二级认证共包含两道编程题,分别为《环保能量球》和《黄金格》。以下将对这两题进行完整解析,并结合 GESP C++ 二级能力要求(依据2026年1月28日修订大纲)进行知识点整合与能力评估。
一、编程题1:环保能量球
题目描述
小杨参加环保活动,每走1公里获得1点能量;若该公里数能被整数 X 整除,则额外再获得1点能量。
已知小杨共走了 N 公里,求他最终获得的总能量。
输入格式
• 第一行:正整数 N(1 ≤ N ≤ 1000)
• 第二行:正整数 X(1 ≤ X ≤ N)
输出格式
• 一行,一个整数,表示总能量。
样例输入
4
2
样例输出
6
解释:
> 第1公里:+1 → 累计1
> 第2公里:+1(基础) +1(2%2 == 0) → 累计3
> 第3公里:+1 → 累计4
> 第4公里:+1 +1(4%2==0) → 累计6
解题思路
-
遍历每一公里(从1到N)。
-
每公里至少加1点能量。
-
若当前公里数 i 能被 X 整除(即 i % X == 0),则再加1点。
-
累加总和即可。
参考程序
#include <iostream>
using namespace std;
int main() {
int N, X, total = 0;
cin >> N >> X;
for (int i = 1; i <= N; ++i) {
total += 1; // 基础能量
if (i % X == 0) total++; // 额外奖励
}
cout << total << endl;
return 0;
}
考查知识点(对应二级能力要求)
| 能力维度 |
具体内容 |
| 控制结构 |
for 循环遍历、if 条件判断(⭐⭐⭐⭐) |
| 运算符 |
取模运算 % 判断整除(⭐⭐⭐) |
| 变量与累加 |
使用整型变量累计结果(⭐⭐⭐) |
| 问题建模 |
将生活场景(走路得能量)转化为程序逻辑(⭐⭐⭐⭐) |
✅ 符合二级大纲要求:
> - 掌握多层嵌套控制结构(此处为单层循环+条件)
> - 熟悉基本数学运算与取模应用
> - 能处理简单模拟类问题
二、编程题2:黄金格
题目描述
小杨发现一张 H 行 W 列的矩形地图。地图上每个格子有一个整数值。
一个格子被称为“黄金格”,当且仅当:
• 它不是边界格子(即不在第一行、最后一行、第一列、最后一列);
• 它的值严格大于其上下左右四个相邻格子的值。
请统计地图中“黄金格”的数量。
输入格式
• 第一行:两个正整数 H, W(3 ≤ H, W ≤ 100)
• 接下来 H 行:每行 W 个整数,表示地图各格子的值(绝对值 ≤ 1000)
输出格式
• 一行,一个整数,表示黄金格的数量。
样例输入
3 3
1 2 1
2 5 2
1 2 1
样例输出
1
解释:中心格子 5 大于上下左右的 2,2,2,2,且非边界,故为黄金格。
解题思路
-
读入二维数组 grid[H][W]。
-
遍历所有非边界格子:行范围 [1, H-2],列范围 [1, W-2](0-indexed)。
-
对每个格子 (i, j),检查是否满足:
grid[i][j] > grid[i-1][j] && // 上
grid[i][j] > grid[i+1][j] && // 下
grid[i][j] > grid[i][j-1] && // 左
grid[i][j] > grid[i][j+1] // 右
- 若满足,计数器
cnt++。
参考程序
#include <iostream>
using namespace std;
const int MAX = 105;
int grid[MAX][MAX];
int main() {
int H, W, cnt = 0;
cin >> H >> W;
for (int i = 0; i < H; ++i)
for (int j = 0; j < W; ++j)
cin >> grid[i][j];
for (int i = 1; i < H - 1; ++i)
for (int j = 1; j < W - 1; ++j) {
if (grid[i][j] > grid[i-1][j] &&
grid[i][j] > grid[i+1][j] &&
grid[i][j] > grid[i][j-1] &&
grid[i][j] > grid[i][j+1])
cnt++;
}
cout << cnt << endl;
return 0;
}
考查知识点(对应二级能力要求)
| 能力维度 |
具体内容 |
| 二维数组 |
声明、输入、按行列访问(⭐⭐⭐⭐) |
| 边界处理 |
正确确定非边界区域(⭐⭐⭐⭐) |
| 逻辑组合 |
四个方向同时满足“大于”条件(&& 连接)(⭐⭐⭐) |
| 枚举与模拟 |
遍历所有候选位置并验证条件(⭐⭐⭐⭐) |
✅ 符合二级大纲要求:
> - 掌握二维数组的基本操作
> - 能处理带边界条件的矩阵问题
> - 具备多条件逻辑判断能力
三、GESP C++ 二级核心能力要求整合(2026年1月28日修订版)
根据最新大纲,C++ 二级考生应具备以下能力:
| 能力模块 |
具体要求 |
| 计算机基础 |
理解存储(RAM/ROM)、网络(LAN/WAN)、操作系统作用 |
| 数据类型 |
掌握 int, double, char, bool;理解 ASCII 编码 |
| 控制结构 |
熟练使用 if-else、for、while,支持多层嵌套 |
| 数组 |
一维、二维数组的声明、初始化、遍历与应用 |
| 数学函数 |
使用 abs, sqrt, max, min, rand 等标准库函数 |
| 问题解决 |
能通过枚举、模拟、简单数学建模解决实际问题 |
🔍 2025年12月真题与大纲匹配度分析:
> - 《环保能量球》:完美体现“模拟+取模+循环”能力(二级核心)
> - 《黄金格》:典型二维数组+边界处理+多条件判断(二级重点题型)
四、备考建议
-
强化二维数组训练:重点练习矩阵遍历、边界判断、方向扩展(上下左右)。
-
掌握取模应用场景:如周期性奖励、数字各位提取、整除判断等。
-
注重输入输出规范:使用 cin/cout 或 scanf/printf 保持一致性,避免超时。
-
真题实战:在 [GESP官网真题解析栏目] 提交代码验证。