GESP-C++考试(二级)考试重点 (附:【编程题模板】大全)
一、GESP C++ 二级考试重点
“会写多层 if else + 多层循环 + 用基础数学函数解决综合问题”
(一)理论部分重点(选择 / 判断题高频)
根据大纲,以下内容是必考且高频
GESP大纲:
(1)计算机基础
- 存储器
- RAM(内存) vs ROM(只读)
- Cache(高速缓存)
- 网络
- LAN / MAN / WAN
- OSI 七层模型(知道名字)
- TCP/IP 四层模型(知道名字)
- 程序设计语言
- 机器语言 / 汇编语言 / 高级语言
- C++ 属于高级语言
👉 特点:
- 不考计算
- 多为“认识型”“判断型”
(2)流程图
- 三种结构:
- 顺序
- 分支
- 循环
- 常见符号:
- 起止(椭圆)
- 处理(矩形)
- 判断(菱形)
👉 可能考:
「下面流程图表示的是哪种结构?」
(3)ASCII 编码(必考)
必须牢记的 4 个:
' ' → 32 '0' → 48 'A' → 65 'a' → 97 常考形式:
char c ='A'; c+1 是什么?- 字符 ↔ 数字转换
(4)数据类型转换
- 隐式转换
int a = 3.8; // a = 3 强制转换
int a = (int)3.8; (5)多层分支 & 多层循环(核心)
- if / if-else / switch
- for / while / do-while
- 嵌套是二级的“灵魂”
(6)数学函数(编程题必背)
abs(x); // 绝对值 sqrt(x); // 平方根 max(a,b); // 最大值 min(a,b); // 最小值 rand(); // 随机数(了解) 二、C++ 二级【编程题模板合集】
根据历次真题与大纲目标,总结如下:
C++ 二级编程题特征:
“流程题 + 分类讨论 + 循环统计”
下面这些模板,可以直接作为二级备考速查
📘《二级编程题模板速查表》
模板 1️⃣:标准输入输出模板(所有题通用)
#include <iostream> #include <cmath> #include <algorithm> using namespace std; int main() { // 在这里写代码 return 0; } 模板 2️⃣:多层 if 判断(分类题必用)
if (条件1) { // 情况 1 } else if (条件2) { // 情况 2 } else if (条件3) { // 情况 3 } else { // 其他情况 } 📌 常见应用:
- 成绩等级
- 年龄分类
- 区间判断
模板 3️⃣:switch 分类模板(离散值)
switch (x) { case 1: // 情况 1 break; case 2: // 情况 2 break; case 3: // 情况 3 break; default: // 其他 } 📌 典型题型:
- 星期
- 月份
- 菜单选择
模板 4️⃣:单层循环统计(第一题最常考)
int n; cin >> n; int sum = 0; for (int i = 1; i <= n; i++) { sum += i; } cout << sum << endl; 模板 5️⃣:多层循环与二维问题(第二题经常考)
for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { // 处理第 i 行,第 j 列 } } 📌 高频场景:
- 表格输出
- 坐标遍历
- 数字矩阵
模板 6️⃣:循环 + 条件统计(第一题常考)
int cnt = 0; for (int i = 1; i <= n; i++) { if (条件) { cnt++; } } cout << cnt << endl; 📌 用途:
- 统计符合条件的个数
- 计数题
模板 7️⃣:ASCII 字符处理模板(必会)
char c; cin >> c; int code = (int)c; cout << code << endl; 或
char c; cin >> c; if (c >= 'a' && c <= 'z') { cout << "小写字母"; } 模板 8️⃣:数学函数综合模板
double x; cin >> x; cout << abs(x) << endl; cout << sqrt(x) << endl; 模板 9️⃣:统计 + 分类综合模板
int n; cin >> n; int cnt1 = 0, cnt2 = 0; for (int i = 1; i <= n; i++) { int x; cin >> x; if (x >= 60) cnt1++; else cnt2++; } cout << cnt1 << " " << cnt2 << endl; 📌 场景:
- 合格 / 不合格
- 正数 / 负数
- 奇数 / 偶数
模板 🔟:最大最小值模板(必会)
int n; cin >> n; int x; cin >> x; int mx = x, mn = x; for (int i = 2; i <= n; i++) { cin >> x; mx = max(mx, x); mn = min(mn, x); } cout << mx << " " << mn << endl; 📌 不用max/min 写成 if 判断语句也可以
模板 1️⃣1️⃣:字符统计模板(ASCII 联动题)
char c; int cnt = 0; while (cin >> c) { if (c >= '0' && c <= '9') { cnt++; } } cout << cnt << endl; 📌 常考:
- 数字字符个数
- 字母判断
模板 1️⃣2️⃣:随机数模板(了解即可)
#include <cstdlib> #include <ctime> srand(time(0)); int x = rand() % 10; // 0~9 三、防错指南
这些内容没写进“模板”,
但 90% 二级编程题都会用到。
① 输入细节防坑模板(非常重要)
❗常见翻车点
- 输入是 多组数据
- 输入以 0 / -1 结束
- 输入数量不固定
✅ 模板:读到结束为止
int x; while (cin >> x) { // 处理 x } 📌 用途:
- 直到 EOF
- 多行输入
✅ 模板:以特殊值结束
int x; while (cin >> x && x != 0) { // 处理 x } 📌 二级常见:
“输入若干整数,以 0 结束”
② 初始化模板(不初始化=必丢分)
❗二级学生最容易犯的错
int sum; // ❌ 未初始化 sum += x; ✅ 正确模板
int sum = 0; int cnt = 0; double ans = 0; 📌 记忆口诀:
“统计类变量,先给 变量赋值为0”
③ 边界值处理模板(选择题 + 编程题)
❗常见边界
- 0
- 1
- 负数
✅ 防御式模板
if (n <= 0) { cout << 0 << endl; return 0; } 📌 二级对算法无太大要求,但要求考虑特殊情况
④ 输出格式模板(二级极易扣分)
❗常见扣分原因
- 多空格
- 少换行
- 输出多了文字
✅ 规范输出模板
cout << ans << endl; ❌ 禁止出现
cout << "结果是:" << ans; // ❌ 📌 GESP 原则:
“输出必须和题目一模一样”
⑤ 浮点数输出模板(隐藏考点)
❗常见题型
- 平均值
- 开平方
- 计算结果带小数
✅ 保留两位小数模板
#include <iomanip> cout << fixed << setprecision(2) << ans << endl; 📌 二级常见要求:
- “保留 2 位小数”
- “输出结果为实数”
⑥ 数学函数使用规范模板(细节题)
❗错误写法(最常见)
sqrt(2); // 返回 double int x = sqrt(2); // ❌ 易错理解 ✅ 正确示范
double x = sqrt(2.0); 或
int x = (int)sqrt(2.0); 📌 结合「强制类型转换」一起考
四、C++ 二级编程题【“必检查 8 项清单”】
学生交卷前对照检查:
✅ 变量是否初始化
✅ 循环是否少 / 多一次
✅ if 是否漏 else
✅ 边界值是否处理
✅ 输出是否多字
✅ 换行是否正确
✅ 是否用了题目不允许的输出
✅ 是否遗漏 return 0;
五、记忆口诀
二级拼的不是算法,而是“细节完整度”
思路正确 ≠ 程序得分
初始化 + 边界 + 输出格式
👉 是真正的“保命三件套”