GESP2025年12月认证C++二级真题与解析(单选题1-15)

🟡 第 1 题(答案:B)
1、题意:
飞机的“飞行控制系统”要做判断,是靠哪一个部件?
2、🧠 小故事理解
把飞机想象成一个超级聪明的机器人:
| 角色 | 功能 |
|---|---|
| 眼睛 | 传感器(看、感受) |
| 🧠 大脑 | 处理器(思考、判断) |
| 记事本 | 内存 |
| 嘴巴 | 输出设备 |
👉 “执行判断” = 思考 = 大脑
3、✅ 正确答案
B. 处理器
4、❌ 其他选项为什么不对?
- A 传感器:只负责“感知”,不负责“思考”
- C 内存:只负责“存数据”
- D 输出设备:只负责“显示或执行结果”

🟡 第 2 题(答案:B)
1、题意:
教学楼里的网络属于哪一类?
2、🧠 网络大小比一比
| 网络 | 范围 |
|---|---|
| PAN | 个人(蓝牙、手表) |
| ✅ LAN | 一个房子 / 一栋楼 |
| MAN | 一个城市 |
| WAN | 全国 / 全世界 |
3、✅ 正确答案
B. LAN(局域网)

🟡 第 3 题(答案:A)
1、题意:
关于 C++ 变量名,哪一个说法是对的?
2、🧠 变量名就像“名字”
- 有些名字是老师专用的
- 你不能抢着用
3、看选项 👀
✅ A 正确
for 是 C++ 关键字(保留字)
👉 不能当变量名
❌ B 错
int _tnt; ✔ 这是合法的!变量名可以以下划线开头
❌ C 错
_tnt_ 完全没问题,不会和减号混淆
❌ D 错
printf不是关键字,是函数名
👉 不能乱用

🟡 第 4 题(答案:B)
1、题意:
小数:
0.123123123... 问:第 N 位是多少?
2、🧠 找规律小游戏
| 位数 | 数字 |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 1 |
| 5 | 2 |
| 6 | 3 |
👉 每 3 位循环一次
3、✨ 技巧
- 第 1 位 →
(1-1)%3 = 0 - 第 2 位 →
(2-1)%3 = 1 - 第 3 位 →
(3-1)%3 = 2
4、✅ 正确答案
B. (N - 1) % 3

🟡 第 5 题(答案:B)
1、题意:
为什么输出 6.14159,而不是更精确的值?
2、🧠 解析
%g 的规则是:
默认输出 6 位有效数字
不是 运算错误!
不是电脑坏了!
是你 格式符没用对
3、📌 若想全输出:
printf("%.10f\n", (3+3.1415926535); 
🟡 第 6 题(答案:D)
1、题意:
工号规则:
- 前 4 位
- 每一位 除以 3 取商
- 商加起来
- 对 10 取余数
2、🧠 对应代码
(1)前4位依次整除以3其值累加之和
rst += N / 3; // 每一位除以3取商 和除以10的余数
rst % 10 3、✅ 正确答案 D
N / 3 rst % 10
🟠 第 7 题(答案:A)
1、📌 题目核心
这题不是考你“会不会写代码”,
而是考你 “程序最后会输出什么”。
2、🧠 我们先看代码结构
if ( i % 2) printf("%d#",i);只有奇数才能输出!(-1 和 1)
3、👉 经过代入计算,输出顺序为:
-1#1# 4、✅ 正确答案
A. -1#1#

🟡 第 8 题(答案:D)
这是一个循环 + 累加计数题
认真数循环执行的次数即可
1、📌 题目核心
这题考的是:
👉 for 循环到底执行了多少次?
🧮 关键点 1:外层循环 i 的变化
i = 1, 3, 5, 7, 9 👉 一共 5 次
2、🧮 关键点 2:内层循环 j 跑几次?
| i | j 的次数 |
|---|---|
| 1 | 1 次 |
| 3 | 3 次 |
| 5 | 5 次 |
| 7 | 7 次 |
| 9 | 9 次 |
3、➕ 总次数
1 + 3 + 5 + 7 + 9 = 25 4、✅ 正确答案
D(25)

🟠 第 9 题(答案:C)
1、📌 题目核心
👉 逻辑表达式 + 输出位置
2、🧠 程序关键点
- j = 0 -> (i * j % 2 == 0) -> break , j 的值始终为0。
- j >= i ? -> false 循环内始终没有输出
- 最后的 ( i * j ) = 0
3、🧮 程序分析
最终只会输出 一个 0
👉 不是 0 0
👉 不是 11
👉 不是 0 11
4、✅ 正确答案
C、 0


🟠 第 10 题(答案:B)
1、📌 题目问的是
哪一段代码的输出 和题目给的输出不一样?
👉 不是“哪段对”,
👉 是 “哪段不一样”
2、🧠 关键方法
对每段代码问一句话:
它到底输出了什么?
3、🔍 快速判断
- A:输出奇数,带
# - C:条件复杂,但最终结果一样
- D:
for(i=0;i<10)→ 输出0123456789
❗ 只有 B 输出的是“计数结果”,而不是直接打印序列
4、✅ 正确答案
B

🟠 第 11 题(答案:B)
1、📌 题目核心
👉 输出在循环里面,还是循环结束后?
2、🧠 输出结构分析
cout << i << "#"在循环里- 还有一次输出在循环后
3、🧮 实际输出顺序
3# 6# 6 👉 注意最后一个 没有 #
4、❗ 易错点
很多同学会选:
3#6#1#2#3#4#5#6#
但都 没看清输出位置
5、✅ 正确答案
B、 3#6#6


🟠 第 12 题(答案:B)
1、📌 这是一道循环题
它考的是:
计数器的功能
2、🧠 模拟操作:
1️⃣ 外循环:
0 , 1 , 2 , 3 , 4
2️⃣ 内循环:
(1)当外循环为0:
0 1 2 3
(2)当外循环为1:
1 2 3
(3)当外循环为2:
2 3
(3)当外循环为3:
3
(4)当外循环为4:
不符合内循环条件
3、🧮 所有代码的最终效果
👉 输出的 数字总个数是 10
j: 0,1,2,3 -> 1,2,3 -> 2,3 -> 3
4、✅ 正确答案
B、 10

🟠 第 13 题(答案:B)
1、📌 题目核心
👉 while 循环会不会把原来的 N“吃掉”?
2、🧠 关键代码
while (N != 0) { num = N % 10; N /= 10; } 3、👉 循环结束后:
N == 0 4、❗ 问题出在哪?
后面还用:
if (N % M == 0) 👉 这已经不是原来的 N 了!
5、🧠 正确做法
提前保存:
int oldN = N; 

🟠 第 14 题(答案:B)
1、📌 题目核心
👉 看清楚空格数量 + 星号数量
2、🧠 程序逻辑
for (i = 0; i < n; i++) { 打印 n-i-1 个空格 打印 2*i+1 个 * } 3、🧮 当 n = 5 时
| 行 | 空格 | 星号 |
|---|---|---|
| 1 | 4 | 1 |
| 2 | 3 | 3 |
| 3 | 2 | 5 |
| 4 | 1 | 7 |
| 5 | 0 | 9 |
4、✅ 正确答案 B
* *** ***** ******* ********* 
🟠 第 15 题(答案:C)
1、📌 题目核心
👉 if 和 ?: 能不能互换?
2、🧠 关键代码
max_score = max(max_score, now_score); 可以改成:
if (now_score > max_score) max_score = now_score; 或者:
max_score = (now_score > max_score ? now_score : max_score); 3、🎯 结论
- 逻辑一样
- 写法不同
- 都合法
4、✅ 正确答案
C、 total_score += now_score 不可以更改为 total_score = total_score + now_score 。