GESP2026年9月认证C++二级( 第一部分选择题(1~7题)精讲



🌟 第1题:IDE到底是什么?

题目问:

关于 IDE 功能的描述,错误的是哪一个?

选项:

A. 可以提供代码自动补全,提高编程效率

B. 可以提供辅助信息,帮助排查程序逻辑错误

C. 可以直接控制机器人电机转动

D. 支持语法高亮,使代码更易阅读

答案:C


① 什么是 IDE?

IDE 是:

Integrated Development Environment------集成开发环境

这个名字看起来很吓人,其实可以把它理解成:

🏫 "程序员的超级学习桌"

我们写 C++ 的时候,需要很多工具:

  • ✏️ 写代码

  • 🔍 检查代码

  • ▶️ 运行程序

  • 🐛 调试程序

  • 🎨 给代码上颜色

  • 💡 自动提示代码

如果这些工具全部放在一个地方,这就是 IDE。

例如我们平时使用的某些 C++ 编程软件,就属于 IDE 或具有 IDE 功能。


② A 对不对?

A. 代码自动补全

比如你输入:

复制代码
cou

编辑器可能会提示:

复制代码
cout

这就像:

🤖 "小朋友,我猜你想输入的是 cout!"

所以:

A 正确。


③ B 对不对?

B. 帮助排查程序逻辑错误

IDE 可以提供:

  • 断点

  • 单步执行

  • 查看变量

  • 调试信息

例如:

复制代码
int a = 10;
int b = 20;
int c = a - b;

我们可以一步一步运行,看看:

复制代码
a = 10
b = 20
c = -10

帮助我们寻找程序的问题。

所以:

B 正确。


④ D 对不对?

D. 语法高亮

比如:

复制代码
int a = 10;
cout << a;

不同的东西显示成不同颜色,可以让程序更容易阅读。

所以:

D 正确。


⑤ C为什么错?

C. 可以直接控制机器人电机转动

这是一个很容易掉坑的地方!

IDE 是:

写程序、编译程序、调试程序的工具。

它本身并不是机器人电机控制器。

真正控制机器人,需要:

复制代码
程序
 ↓
控制系统
 ↓
硬件接口
 ↓
电机

所以:

❌ IDE ≠ 电机控制器


因此答案是:

⭐ 第1题:C

🧠 小口诀

IDE管代码,不直接管电机。



🚀 第2题:Cache到底是什么?

答案:B

题目问 Cache 的说法中,正确的是哪一个。试卷给出的选项和答案见原题。


① 先认识电脑里的"储物柜"

可以把电脑想象成一个仓库。

里面有不同大小、不同速度的储物空间:

复制代码
CPU寄存器
   ↓
Cache 高速缓存
   ↓
主存 RAM
   ↓
硬盘/SSD

一般来说:

越靠近 CPU,速度越快,但容量越小。


② Cache是什么?

Cache 可以翻译成:

高速缓存

CPU 经常需要使用一些数据。

如果每一次都跑到比较慢的主存那里去拿,就会浪费时间。

于是就在 CPU 附近准备一个:

⚡ "小而快的储物柜"

这就是 Cache。


③ B为什么正确?

B:

Cache 通常用于暂存 CPU 频繁访问的数据。

想象:

小明正在做数学题。

他最常用的橡皮、尺子、铅笔,就放在手边。

不用每次都跑到书包里找。

Cache 就有点像:

🧰 CPU 手边的小工具箱。

所以:

B 正确。


④ A为什么错?

A说:

Cache 容量比主存大,速度比主存快。

错在:

Cache 通常比主存小得多。

但是速度更快。

所以应该记成:

复制代码
Cache:
容量小
速度快

⑤ C为什么错?

C说:

Cache 断电后数据不会丢失。

错。

Cache 属于易失性存储器。

断电之后:

💥 数据就没了。


⑥ D为什么错?

D说:

Cache 比 CPU 寄存器还快。

通常不是这么理解的。

一般来说:

复制代码
寄存器 > Cache > 主存

越靠近 CPU,速度越快。


🧠 小口诀

Cache:小、快、离 CPU 近,断电数据丢。

所以:

⭐ 第2题:B



🎯 第3题:3 和 3.0 相等吗?

题目代码:

复制代码
cout << (3 == 3.0);

选项:

A. 1

B. 1.0

C. 0

D. -1

答案:

⭐ A


① 关键:== 是什么?

注意:

复制代码
=

是赋值。

而:

复制代码
==

是:

比较两个东西是否相等。

所以:

复制代码
3 == 3.0

是在问:

"3 和 3.0 相等吗?"

答案:

相等!


② 为什么?

3 是整数:

复制代码
int

而:

复制代码
3.0

是浮点数。

虽然它们的数据类型不同,但是数值都是:

复制代码
3

所以比较结果为:

复制代码
true

③ true 输出什么?

C++ 默认情况下:

复制代码
true  → 1
false → 0

所以:

复制代码
cout << (3 == 3.0);

输出:

复制代码
1

⚠️ 小心一个超级大坑

很多初学者会想:

"一个是 int,一个是 double,怎么可能相等?"

这是错误思维。

比较时重点看:

数值是否相等。

例如:

复制代码
5 == 5.0    // true
2 == 2.0    // true
7 == 7.0    // true


🎯 第4题:三个 bool 加起来是多少?

题目:

复制代码
cout << (bool(5) + bool(-5) + bool(5.0));

选项:

A. 0

B. 1

C. 2

D. 3

答案:

⭐ D

这道题非常值得掌握。


① 什么是 bool?

bool 只有两种状态:

复制代码
true
false

而在 C++ 中:

复制代码
true  = 1
false = 0

② bool(5) 是什么?

5 是一个非零数字。

C++ 中:

非零 → true

所以:

复制代码
bool(5)

就是:

复制代码
true

也就是:

复制代码
1

③ bool(-5)呢?

注意:

负数也是非零!

所以:

复制代码
bool(-5)

也是:

复制代码
true

即:

复制代码
1

④ bool(5.0)呢?

5.0 也是非零:

复制代码
true

即:

复制代码
1

所以原式相当于:

复制代码
1 + 1 + 1

得到:

复制代码
3

所以答案:

⭐ D


🧠 必须背下来的规律

对于数字转 bool:

复制代码
0       → false → 0
非0数字 → true  → 1

例如:

复制代码
bool(0)      // 0
bool(10)     // 1
bool(-10)    // 1
bool(3.14)   // 1

🌟 魔法口诀

零是假,非零是真。

这是以后学习 if、逻辑运算时非常重要的一条规则。



🌈 第5题:如何判断闰年?

答案:

⭐ A

题目给出的规则是:

能被 4 整除但不能被 100 整除,或者能被 400 整除。

选项 A:

复制代码
(N % 4 == 0 && N % 100 != 0) || (N % 400 == 0)

① 先理解"能不能整除"

C++ 中:

复制代码
%

叫:

取模 / 求余数

比如:

复制代码
10 % 3

结果是:

复制代码
1

因为:

复制代码
10 ÷ 3 = 3 ...... 1

如果:

复制代码
12 % 4

结果:

复制代码
0

说明:

12 能被 4 整除。

所以:

复制代码
N % 4 == 0

就是:

N 能被 4 整除。


② 闰年的两条路

题目实际上说:

第一条路:

复制代码
能被4整除
并且
不能被100整除

对应:

复制代码
N % 4 == 0 && N % 100 != 0

第二条路:

复制代码
能被400整除

对应:

复制代码
N % 400 == 0

两条路满足其中一条即可。

所以用:

复制代码
||

连接。

完整答案:

复制代码
(N % 4 == 0 && N % 100 != 0)
||
(N % 400 == 0)

③ 为什么 B 错?

B:

复制代码
N % 4 == 0 && N % 100 == 0 || N % 400 == 0

注意这里:

复制代码
N % 100 == 0

表示:

能被 100 整除。

但题目第一条要求的是:

不能被 100 整除。

所以应该:

复制代码
!=

而不是:

复制代码
==

④ C为什么错?

C使用的是:

复制代码
N / 4 == 0

这里是:

复制代码
/

不是:

复制代码
%

一个是:

除法

一个是:

求余数

判断"能不能整除"应该想到:

%

而不是 /。


⑤ D为什么错?

D:

复制代码
(A) && (B)

它要求两部分:

同时成立

但是闰年规则是:

第一种情况成立 或者 第二种情况成立。

所以必须使用:

复制代码
||

🧠 闰年万能模板

以后看到闰年,直接想到:

复制代码
(N % 4 == 0 && N % 100 != 0)
||
(N % 400 == 0)


🔥 第6题:if(i)到底是什么意思?

题目代码:

复制代码
int tot, i;
tot = 0;

for (i = 0; i < 10; i++)
    if (i)
        tot += 1;

cout << tot;

答案:

⭐ C. 9

原题代码位于试卷第 2 页。

这道题的核心只有一句:

复制代码
if (i)

是什么意思?


① if(i)就是判断 i 是否为真

还记得刚才的口诀吗?

零是假,非零是真。

所以:

复制代码
if(i)

相当于:

复制代码
if(i != 0)

② 循环到底执行哪些 i?

复制代码
for (i = 0; i < 10; i++)

所以:

复制代码
i = 0
i = 1
i = 2
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9

一共 10 次。


③ 看 if(i)

i if(i) tot变化
0 假 ❌ 不变
1 真 ✅ +1
2 真 ✅ +1
3 真 ✅ +1
4 真 ✅ +1
5 真 ✅ +1
6 真 ✅ +1
7 真 ✅ +1
8 真 ✅ +1
9 真 ✅ +1

除了:

复制代码
i = 0

其他全部执行:

复制代码
tot += 1;

所以一共执行:

复制代码
9次

最终:

复制代码
tot = 9

答案:

⭐ C


🧠 这里一定要建立一个"条件翻译器"

以后看到:

复制代码
if(x)

脑袋里自动翻译:

复制代码
if(x != 0)

看到:

复制代码
if(!x)

可以理解成:

复制代码
if(x == 0)

这个技巧在 GESP 选择题里非常有用。



🚂 第7题:双重循环,到底执行多少次?

题目:

复制代码
int n, tot, i, j;
cin >> n;
tot = 0;

for (i = 1; i < n; i++)
    for (j = 1; j < i; j++)
        tot += 1;

cout << tot;

题目特别告诉我们:

输入 4

答案:

⭐ B. 3

原题代码位于试卷第 2 页。


① 第一层循环

复制代码
for (i = 1; i < n; i++)

因为:

复制代码
n = 4

所以:

复制代码
i = 1
i = 2
i = 3

② i = 1时

第二层:

复制代码
for (j = 1; j < i; j++)

变成:

复制代码
for (j = 1; j < 1; j++)

一开始:

复制代码
1 < 1

是假。

所以:

一次都不执行。


③ i = 2时

变成:

复制代码
for (j = 1; j < 2; j++)

只有:

复制代码
j = 1

执行一次。

所以:

复制代码
tot = 1

④ i = 3时

变成:

复制代码
for (j = 1; j < 3; j++)

于是:

复制代码
j = 1
j = 2

执行两次。

所以:

复制代码
tot = 1 + 2
    = 3

最终:

复制代码
cout << tot;

输出:

复制代码
3

所以:

⭐ 第7题答案:B


🧠 把第7题画成"小楼梯"

这其实就是:

复制代码
i=1:     0次

i=2:     1次
          ●

i=3:     2次
          ● ●

总次数:

复制代码
0 + 1 + 2 = 3

这就是非常经典的:

双重循环 + 循环次数分析题。


🎯 7道题一次性总结

现在把今天的"七颗宝石"装进我们的知识背包:

题号 核心知识 答案 记忆方法
1 IDE C IDE管代码,不直接管电机
2 Cache B Cache:小、快、靠近CPU
3 == A 3 == 3.0 为真,输出1
4 bool D 零是假,非零是真
5 闰年 A %判断整除,&&与,`
6 if(i) C if(i)≈if(i!=0)
7 双重循环 B 一层一层数执行次数

🌟 最后送给同学们一张"考场魔法卡"

魔法1:看到 %

想到:

余数

例如:

复制代码
n % 4 == 0

就是:

能被4整除。


魔法2:看到 if(x)

想到:

x是不是非0?

复制代码
if(x)

≈

复制代码
if(x != 0)

魔法3:看到 bool

记:

0是假,非0是真。

复制代码
0       → false → 0
1       → true  → 1
-5      → true  → 1
3.14    → true  → 1

魔法4:看到 &&

记:

并且

两边都要满足。

看到:

复制代码
A && B

就是:

A和B必须同时成立。


魔法5:看到 ||

记:

或者

满足一个就可以。


魔法6:看到双重 for

千万不要急着算。

先问自己:

外层循环每一次,内层到底执行几次?

像第7题:

复制代码
i=1 → 0次
i=2 → 1次
i=3 → 2次

总共 = 3次

这比直接"凭感觉猜答案"可靠得多。


🏆 今天应该掌握的知识链条

复制代码
IDE
 ↓
程序开发环境

Cache
 ↓
计算机基础

== / bool
 ↓
条件判断

% / && / ||
 ↓
逻辑表达式

if
 ↓
分支

for
 ↓
循环

双重 for
 ↓
循环次数分析

如果这条知识链真正掌握,后面的判断题、阅读程序题乃至编程题都会轻松很多。


相关推荐
沫璃染墨1 小时前
《从零入门Linux系统篇(五十四):线程篇·七——互斥锁底层原理:从原子交换到线程竞争与锁实现》
linux·运维·服务器·开发语言·c++·驱动开发·系统架构
可乐ea3 小时前
GitHub Security Lab 开源 Fuzzing Taskflow:让 LLM 智能体自己跑完 C/C++ 模糊测试
jvm·c++·github·模糊测试·mcp·代码agent·智能体自动化
朝朝辞暮i3 小时前
C++ 第 13 课:值传递 —— 为什么函数里改了,外面却没变?
java·c++·算法
无忧.芙桃5 小时前
C++语言原理与实践(十):vector类的底层实现
开发语言·c++·算法
无名猿5 小时前
std::variant 完全指南:类型安全的 union 与 std::visit 用法
c++·stl·标准库·现代c++
无名猿5 小时前
C++ 迭代器五分类与失效场景汇总:一张表避开所有 UB
c++·stl·标准库·踩坑记录
0+1115 小时前
算法 --模拟
c++·算法·leetcode
hetao17338376 小时前
2026-10-01~02 hetao1733837 的刷题记录
c++·算法
郝学胜-神的一滴6 小时前
AI 编程智能体 03:拆解当下主流智能体能力
开发语言·c++·人工智能·python·程序人生·游戏