文章

GESP二级C++考纲考点揭秘:揭秘高频考点与通关逻辑 | 适合所有初学者阅读

一、 核心考点分布统计与分析

根据GESP C++二级考试大纲2023年3月至2025年12月(注:包含提供的模拟/未来时间视角的真题)的真题试卷进行统计分析,考点大致分布情况如下:

1. 多层循环结构(绝对核心)

这是二级考试中占比最重、难度最高的考点,覆盖了几乎所有编程题和大部分高难度的阅读程序题。

题目分布与真题实例

  • 编程题: 每套试卷的 2道编程题(共50分) 全部属于此范畴,或结合数学逻辑考察。
  • 选择/判断题: 每套约 5-8题。涉及代码逻辑分析、输出结果预测。

真题实例:

  • 字符矩阵/图形打印(必考): 要求考生利用双重循环控制行与列,寻找坐标 (i, j) 与输出字符的关系。真题实例
    • N字矩阵(2024年9月真题 编程题2)
    • 日字矩阵(2024年3月真题 编程题2)
    • X字矩阵(2023年9月真题 编程题1)
    • H字矩阵(2023年12月真题 编程题2)
    • 菱形(2025年9月真题 编程题2)
    • 打印星号树形/金字塔(2024年12月真题 选择题14)
    • 打印数字直角三角形(2024年6月真题 选择题13)
    • 打印字母三角形(2023年3月真题 编程题1)
    • 栅栏图形(2024年3月真题 选择题13)
  • 数位处理与数学筛选: 利用 whilefor 循环配合模运算 % 和除法 / 拆分整数。*真题实例
    • 数字黑洞(重组最大/最小值作差)(2023年9月真题 编程题2)
    • 逆序数(数字倒序输出)(2024年9月真题 选择题12)
    • 自幂数判断(2023年6月真题 编程题2)
    • 自守数判断(2025年6月真题 选择题14)
    • 特定数字计数(2024年6月真题 编程题)
  • 数学素养:质数、因数与平方数: 双重循环判断素数或查找因数。真题实例 孪生素数、找素数、分解质因数。

2. 计算机存储与网络 / 计算机基础

该部分主要考察理论记忆,通常出现在试卷的前2-3题

题目分布与真题实例

每套试卷 2-3题(单选/判断)。

真题实例:

计算机历史与常识: 考察名人(诺贝尔奖Hinton、王选)、历史机型(DJL-1)、硬件功能(CPU、输入输出设备)。

  • 诺贝尔奖与AI:考察 2024年诺贝尔物理学奖得主(Hinton等)与人工智能的关系。(2024年12月真题 选择题1)
  • 中国计算机历史:
    • 王选先生与汉字激光照排系统(2024年3月真题 选择题15)
    • DJL-1计算机与磁心存储(2024年9月真题 选择题1)
  • 存储与网络基础:
    • 存储单位换算(MB)(2024年12月真题 选择题2)
    • IPv4地址分类(A类地址)(2024年9月真题 选择题2)
    • 输入/输出设备(传感器)(2025年6月真题 选择题1)

3. 流程图的概念与描述

题目分布与真题实例

每套试卷 1题(通常为单选第1或第2题)。

真题实例:

  • 逻辑填空: 给出流程图,要求判断菱形框(判断框)中的条件逻辑(如闰年判断)。
  • 结果预测: 根据给定的流程图逻辑,推断输入特定值后的输出结果。
  • 结构识别: 识别流程图描述的是顺序、分支还是循环结构。

4. ASCII 编码与数据类型转换

题目分布与真题实例

该考点主要考察字符与整数之间的映射关系、字符的算术运算以及大小比较。

真题实例:

这个考点常结合在计算题或代码阅读题中出现。每套试卷 2-3题(单选/判断)。

字符与整数的混合运算

  • '9' + '1' 的输出结果:考察字符 '9' (57) 和 '1' (49) 相加后的整数值。(2024年6月真题 判断题第1题)
  • int('C') + abs(-5.8) 的计算:考察 'C' (67) 转换为整数后的运算。(2024年3月真题 判断题第6题)
  • '5' + 4 的输出:考察字符 '5' (53) 加 4 后的 ASCII 码对应的字符或整数。(2025年9月真题 判断题第10题)
  • 'A' + a % 10:考察利用 ASCII 码进行字符推算(如生成 ‘A’, ‘B’, ‘C’…)。(2025年9月真题 判断题第6题)
  • 2 * int('9') * 2:考察字符转换为整数参与乘法。(2023年12月真题 判断题第2题)

字符比较与逻辑判断

  • ('Z' - 'A') < ('z' - 'A'):考察大写字母与小写字母 ASCII 码间距的比较。(2025年12月真题 判断题第6题)
  • '0' <= a && a <= '9':考察判断字符变量是否为数字字符。(2023年3月真题 单选题第12题)
  • cout << float('2022'):考察多字符常量的类型转换问题(通常只取最后一个字符或报错,视编译器而定,题目考察概念)。(2024年3月真题 判断题第5题)

强制类型转换

  • int(12.56):考察浮点数强制转为整数时的向下取整(截断)。(2024年6月真题 判断题第3题)
  • float(2022):考察整数转浮点数。(2024年3月真题 判断题第5题)

隐式转换与混合运算

  • 5 / 2 + 5 % 3:考察整数除法 5/2=2(而非 2.5)的特性。(2024年9月真题 单选题第5题)
  • int a=3; float b=3.5; (a *= b):考察复合赋值运算符中的隐式类型转换(a 最终会被截断为整数)。(2025年6月真题 单选题第3题)
  • 3 + 3.14159...:考察整数与浮点数相加时,整数自动提升为浮点数。(2025年12月真题 单选题第5题)
  • 10.0 / 2:考察浮点数与整数做除法,结果为浮点数。(2023年3月真题 判断题第10题)
  • char a = '1'; a = 45.6;:考察将浮点数赋值给字符变量时的截断警告或行为。(2025年6月真题 判断题第5题)
  • doubleint:考察 a * 10 (其中 a=3.5)的结果类型及赋值给 int 时的变化。(2023年6月真题 判断题第5题)

5. 数学函数 (cmath)

根据GESP C++二级考试大纲及提供的历年(含2023年至2025年)真题试卷,数学函数在二级考试中属于高频考点。虽然其在编程题中通常作为辅助工具出现,但在单选题和判断题中,对其功能定义、返回值类型及逻辑应用的考察非常细致。

根据大纲,C++二级要求掌握的常用数学函数主要包括:

  • abs():绝对值函数
  • sqrt():平方根函数
  • max() / min():最大值/最小值函数
  • rand() / srand():随机数函数
  • 这些函数通常需要包含头文件 <cmath> (或 <math.h>)。

题目分布与真题实例

A. sqrt() 平方根函数(最高频)

这是二级考试中最常出现的数学函数,主要用于完全平方数判断几何计算

  • 判断完全平方数(核心套路): 题目常通过 int(sqrt(N)) * int(sqrt(N)) == Nsqrt(N) * sqrt(N) == N 的逻辑来判断一个数是否为完全平方数。(2023年12月单选第11题;2024年12月判断题第4题;2025年3月判断题第4题)
  • 返回值类型: 考察 sqrt 的返回值默认为浮点型(double),即使参数是整数。(2023年6月判断题第10题,考察 sqrt(9.0) 的结果类型)
  • 编程题应用:
    • 寻找数字/因子: 在编程题中,利用 sqrt 缩小循环范围(如判断质数或找因子),或直接判断 4 次方数。例如 2024年12月编程题1,使用 sqrt(sqrt(a)) 判断某数是否为另一个数的4次方。
    • 几何计算: 2025年12月编程题2“黄金格”,使用 sqrt(r*r + c*c) 计算距离。
B. abs() 绝对值函数

主要用于浮点数误差处理几何图形打印

  • 浮点数相等判断: 由于浮点数精度问题,不能直接用 ==,考试常考查使用 abs(a - b) < 0.000001 来判断两个浮点数是否相等。(2025年12月单选第15题;2025年3月单选第15题)
  • 表达式计算: 结合类型转换考察计算结果。(2024年3月单选第5题 abs(-8);2024年3月判断题第6题 int('C') + abs(-5.8)
  • 图形打印(编程题): 在打印菱形或特定矩阵时,利用 abs 计算当前坐标到中心点的曼哈顿距离。(2025年9月编程题2“菱形”,核心逻辑为 abs(k - i + 1) + abs(k - j + 1) == k
C. max()min() 函数

主要用于逻辑简化极值寻找

  • 逻辑判断: 考察嵌套调用,如 min(max(8, 9), 10) 的计算结果。(2024年3月单选第5题)
  • 逻辑等价性: 判断 max(a, b) == min(a, b) 是否意味着 a == b。(2025年6月判断题第4题)
  • 编程题应用: 在循环中更新最大/最小值。(2025年12月选择题第15题(代码填空),使用 max_score = max(max_score, now_score)
D. rand()srand() 随机数

主要考察随机数范围种子机制

  • 生成范围: 考察如何生成特定范围的随机整数,如 rand() % 10 生成 0-9。(2025年3月单选第14题)
  • 种子机制: 考察 srand(0) 对随机数序列的影响(种子相同,序列相同)。(2023年12月判断题第4题)
  • 输出比较: 考察 rand() 多次调用的结果大小关系(通常是不确定的)。(2024年9月判断题第4题)

6. 多层分支结构

多层分支结构if 嵌套、if-else if-else 级联、switch)是二级考试中用于处理复杂逻辑判断的核心考点。

题目分布与真题实例

多层分支结构在试卷中通常占 10%-15% 的分值,主要出现在 单选题的流程图分析代码阅读(预测输出) 以及 编程题的逻辑控制 中。

真题实例:

1. 流程图中的多层分支(直观考察)

这是多层分支最直观的考察方式,通常以“菱形框”的嵌套形式出现,要求考生根据输入值判断代码的流向。

  • 2024年3月 单选题第1题:展示了一个嵌套的流程图(判断cj是否>=60,若是再判断是否>=90),要求根据输入判断输出结果(优秀/良好/不及格)。
  • 2023年9月 单选题第2题:简单的 if-else 分支流程图,判断 x > y 后的赋值操作。
  • 2024年6月 单选题第2题:考察闰年判断逻辑,涉及 (year%4==0 && year%100!=0) || (year%400==0) 这种复合逻辑在流程图中的表达。
2. if-else if-else 级联结构(逻辑覆盖)

考察考生对互斥条件的理解,即代码只会执行满足条件的第一个分支。

  • 2025年3月 单选题第4题:题目要求根据余数范围判断球的颜色(Red/Green/Blue)。使用了 if (...) ... else if (...) ... else 的结构,考察条件覆盖范围。
  • 2024年6月 单选题第9题:考察 if (a && b) ... else if (!(a || b)) ...,要求考生根据布尔逻辑判断执行哪个分支输出结果。
  • 2024年9月 单选题第9题:类似的逻辑判断,考察 if(a&&b)else if 的执行顺序。
3. switch 语句(特性考察)

主要考察 switch 语句的语法结构,特别是 break 的缺失导致的“穿透”(Fall-through)现象

  • 2024年6月 单选题第7题:考察Case 穿透:,代码中 case 1 后没有 break,导致输入 1 后继续执行 case 3 的内容,输出 “Jan Mar “。
4. 编程题中的嵌套分支(综合应用)

在编程题中,多层分支通常用于处理矩阵打印的边界条件复杂的业务逻辑

  • 矩阵与图形打印(核心应用):
    • 2024年3月 编程题2(日字矩阵):需要在一个双重循环中,利用 if-else if-else 结构来判断当前坐标 (i, j) 是打印 |- 还是 x。例如:if (j==0 || j==n-1) ... else if (i==0...) ...
    • 2023年12月 编程题2(H字矩阵):同样需要分支结构判断打印 |-
    • 2024年9月 编程题2(N字矩阵):判断对角线或竖线位置。
  • 复杂逻辑模拟(深度嵌套): 2025年3月 编程题2(时间跨越):这是多层分支考察的典型代表。代码需要处理:
    1. 小时是否超过24(第一层 if);
    2. 月份是大月、小月还是2月(第二层 if-else if);
    3. 如果是2月,是否为闰年(第三层 if-else 嵌套在2月的分支中)。

多层分支检测方式分析总结

  1. 逻辑互斥性检测: 选择题常考察 ifelse if 的区别。例如,如果 if 满足了,后续的 else if 即使条件为真也不会执行。
  2. 嵌套层次理解: 编程题(如日期计算)强制要求考生在 if 块内部再写 if,评估考生对逻辑层次的把控能力。
  3. 语法陷阱检测: 专门通过 switch 缺少 breakif 缺少大括号 {}(控制范围问题)来考察对语法的精确掌握。

备考建议: 重点练习日历类问题(闰年、大小月判断)和字符画坐标判断,这两类题目最能体现多层分支结构的考查要求。


二、考纲题目分布的检测方式总结

通过对上述真题的统计,我们可以得出GESP C++二级考试的检测方式具有以下特征:

  1. 编程题“一招鲜”: 编程题(占比50%)的检测方式高度统一,几乎完全依赖“找规律 + 双重循环”。无论是打印图形(寻找行列坐标 i,j 的数学关系)还是处理数字(拆分位数),其本质都是考察考生对嵌套循环的熟练程度。
  2. 选择题“重仿真”: 大部分选择题不是考概念定义,而是给出一段代码(5-15行),要求考生充当“人肉编译器”,在脑中模拟程序的运行过程(特别是循环变量的变化、break/continue 的跳转),从而得出输出结果。
  3. 理论题“硬记忆”: 计算机基础和网络部分的题目(占比约10%-15%)属于纯记忆型知识点,检测方式为直接问答,不涉及逻辑推理,要求考生必须背诵考纲中列出的硬件、网络和历史常识。
  4. 数学与代码的“强耦合”: 检测方式不再是单纯的语法填空,而是用代码解决小学高年级数学问题。例如质数判断、公倍数、分解因数、几何图形面积等,要求考生具备将数学逻辑转化为代码逻辑的能力。

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

GESP 学习专题站:GESP WIKI

luogu-”系列题目可在洛谷题库进行在线评测。

bcqm-”系列题目可在编程启蒙题库进行在线评测。

欢迎加入Java、C++、Python技术交流QQ群(982860385),大佬免费带队,有问必答

欢迎加入C++ GESP/CSP认证学习QQ频道,考试资源总结汇总

欢迎加入C++ GESP/CSP学习交流QQ群(688906745),考试认证学员交流,互帮互助

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
本文由作者按照 CC BY-NC-SA 4.0 进行授权