一、GESP C++ 二级考试重点
'会写多层 if else + 多层循环 + 用基础数学函数解决综合问题'
(一)理论部分重点(选择 / 判断题高频)
根据大纲,以下内容是必考且高频。
(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/switchfor/while/do-while- 嵌套是二级的'灵魂'
(6)数学函数(编程题必背)
abs(x); // 绝对值
sqrt(x); // 平方根
max(a, b); // 最大值
min(a, b); // 最小值
rand(); // 随机数(了解)
二、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;
五、记忆口诀
二级拼的不是算法,而是'细节完整度'
思路正确 ≠ 程序得分
初始化 + 边界 + 输出格式 👉 是真正的'保命三件套'

