Appearance
附录 B · 高频考点 · 易错点 · 速查总表
🎯 用途:把全书八大知识块的高频考点与易错点汇总为一份"跨章避坑清单",并附考前速查卡——考前 30 分钟过一遍即可。 📚 章号口径:第 1 章 = 四级考点总览,第 2~9 章 = 考纲八大知识块。 ⭐ 考频星级:取自各章「考点总结表」,为历年真题统计口径(⭐越多 = 出题越频繁 / 分值占比越大)。 📎 配套:完整的"考纲 ↔ 章节"映射见 附录 A;术语释义见 附录 C;复习节奏见 附录 D。
一、考频 TOP 榜(⭐⭐⭐⭐⭐ 五星考点)
下表汇总全书 ⭐⭐⭐⭐⭐ 五星考点——它们既是选择/判断题的绝对主力,又是编程题的必备基础。建议**全部达到"闭卷复述 + 手写代码"**水平。
| # | 章节 | 五星考点 | 出题形式 | 一句话避坑 |
|---|---|---|---|---|
| 1 | 第2章 指针 | 解引用 * 的访问与修改 | 程序阅读 / 代码填空 | 未初始化(野)指针不可解引用 |
| 2 | 第2章 指针 | 指针赋值与"接力"问题 | 程序阅读(高频) | 两指针指向同一地址,改一个影响另一个 |
| 3 | 第3章 二维数组 | 列数不能省略(定义及传参) | 选择(判断正误) | 行数可省、列数必须显式指定 |
| 4 | 第3章 二维数组 | 双重循环遍历 | 编程 / 程序阅读 | 行优先 vs 列优先别写反 |
| 5 | 第3章 二维数组 | 行列统计(和 / 最值) | 编程题 | 每行累加器要重置为 0 |
| 6 | 第3章 二维数组 | 数组越界 | 选择(陷阱题) | n 个元素最大下标是 n−1 |
| 7 | 第4章 结构体 | 点运算符 . 访问成员 | 程序阅读 / 编程 | 对象用 .、指针用 ->,别搞混 |
| 8 | 第4章 结构体 | 结构体数组 | 编程题 | 注意"数组下标 + 成员名"两级访问 |
| 9 | 第4章 结构体 | 结构体指针与 -> | 选择 / 程序阅读 | *p.name 要写 (*p).name 或 p->name |
| 10 | 第4章 结构体 | 值 / 引用 / 指针传递 | 选择 / 程序填空 | 值传递改副本,引用 / 指针才能改原值 |
| 11 | 第4章 结构体 | 结构体排序(自定义 cmp) | 编程题 | cmp 用 const 引用、返回 bool |
| 12 | 第5章 函数 | 函数声明与定义的区别 | 选择 / 找错 | 定义在调用之后,必须先声明 |
| 13 | 第5章 函数 | 作用域与变量遮蔽 | 程序阅读(必考) | 内层遮蔽外层,:: 访问全局 |
| 14 | 第5章 函数 | 值传递机制 | 选择 / 判断 / 阅读 | 改副本,不改原数据 |
| 15 | 第5章 函数 | 引用传递与 & 识别 | 选择 / 判断 / 阅读 | 看形参有没有 &,有就是引用 |
| 16 | 第5章 函数 | 值传递 vs 引用传递 | 选择 / 判断 | 混合传递时逐个参数分析 |
| 17 | 第6章 递推 | 斐波那契及变体 | 选择 / 阅读 / 编程 | 初始条件与项数别记错 |
| 18 | 第6章 递推 | 过河卒(含障碍) | 编程题 | 障碍格不能直接填 1,要逐格递推 |
| 19 | 第6章 递推 | 边界处理 | 贯穿所有编程题 | 首行首列、障碍格,考虑不周即失分 |
| 20 | 第7章 排序 | 稳定性的概念 | 判断 / 选择(高频) | 稳定性 ≠ 数据是否丢失 |
| 21 | 第7章 排序 | 冒泡排序原理与代码 | 代码填空 / 阅读 | 内层边界 j < n-1-i |
| 22 | 第7章 排序 | 选择排序原理与代码 | 代码填空 / 阅读 | minIdx 每轮要重置为 i |
| 23 | 第7章 排序 | 插入排序原理与代码 | 代码填空 / 阅读 | 从后向前插入,元素后移方向 |
| 24 | 第7章 排序 | 三种排序的稳定性 | 选择 / 判断 | 选择排序不稳定,冒泡 / 插入稳定 |
| 25 | 第7章 排序 | 三种排序复杂度对比 | 选择 / 判断 | 选择排序最好也是 O(n²);冒泡 / 插入最好 O(n) |
| 26 | 第7章 排序 | 循环代码复杂度分析 | 选择 / 程序阅读 | 嵌套相乘、串联取最高阶 |
| 27 | 第8章 文件 | eof() 的正确用法 | 选择 / 代码阅读 | 用 eof() 判断会多读一次 |
| 28 | 第8章 文件 | is_open() 检查 | 选择 / 判断 / 编程 | 打开失败仍继续操作 |
| 29 | 第9章 异常 | throw 后 try 代码不执行 | 程序阅读(必考) | catch 后不会回到 try 继续 |
二、逐章考点 · 易错点总表
复习时按章打勾:能说出"考点 + 避坑点"即通过。
第2章 · 指针与内存地址
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
内存地址与 & 运算符 | ⭐⭐ | 选择/判断 | 混淆"变量的值"和"变量的地址" |
| 指针定义与初始化 | ⭐⭐⭐ | 选择/程序阅读 | int* p, q; 中 q 不是指针 |
解引用 * 访问与修改 | ⭐⭐⭐⭐⭐ | 程序阅读/代码填空 | 未初始化的指针不能解引用 |
| 指针赋值与接力问题 | ⭐⭐⭐⭐⭐ | 程序阅读(高频) | 赋值后两指针指向同一地址,改一个影响另一个 |
| 空指针与野指针 | ⭐⭐⭐ | 选择/判断 | 野指针的值是随机的,解引用是 UB |
| 指针与一维数组 | ⭐⭐⭐⭐ | 程序阅读/代码填空 | 数组名是常量指针,不能 arr++ |
| 指针算术运算 | ⭐⭐⭐⭐ | 选择/程序阅读 | p++ 移动 sizeof(类型) 字节,不是 1 字节 |
const 与指针三种组合 | ⭐⭐⭐ | 选择/判断 | 左定值右定向,记混左右 |
第3章 · 二维及多维数组
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 二维数组定义与初始化 | ⭐⭐⭐⭐ | 选择/判断 | 部分初始化时其余元素补 0,不是随机值 |
| 列数不能省略(定义及传参) | ⭐⭐⭐⭐⭐ | 选择(判断正误) | 行数可省略,列数必须显式指定 |
| 双重循环遍历 | ⭐⭐⭐⭐⭐ | 编程题/程序阅读 | 行优先 vs 列优先搞混,内外层写反 |
| 内存布局与地址计算 | ⭐⭐⭐⭐ | 选择/计算 | 地址公式乘列数不是行数,i×cols+j |
| 矩阵加法 / 转置 | ⭐⭐⭐⭐ | 编程题 | 转置时行列维度交换,b[j][i]=a[i][j] |
| 杨辉三角 | ⭐⭐⭐⭐ | 编程题 | 边界条件:每行首尾为 1,中间递推 |
| 行列统计(和 / 最值) | ⭐⭐⭐⭐⭐ | 编程题 | 每行重置累加器,别忘初始化为 0 |
| 数组越界 | ⭐⭐⭐⭐⭐ | 选择(陷阱题) | 下标从 0 开始,n 个元素最大下标是 n−1 |
| 三维数组遍历 | ⭐⭐⭐ | 选择/程序阅读 | 三重循环顺序:外层到内层 |
第4章 · 结构体
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 结构体定义与分号 | ⭐⭐⭐ | 选择/判断/找错 | struct 末尾必须加分号,容易忘 |
| 聚合初始化 | ⭐⭐⭐⭐ | 选择/程序阅读 | 按声明顺序赋值,顺序不能乱 |
点运算符 . 访问成员 | ⭐⭐⭐⭐⭐ | 程序阅读/编程 | 对象用 .,指针用 ->,搞混 |
| 结构体数组 | ⭐⭐⭐⭐⭐ | 编程题 | 遍历和访问时的双重下标 |
结构体指针与 -> | ⭐⭐⭐⭐⭐ | 选择/程序阅读 | *p.name 漏括号,应为 (*p).name |
| 嵌套结构体访问 | ⭐⭐⭐⭐ | 程序阅读 | 逐层访问,指针层用 ->,变量层用 . |
| 值 / 引用 / 指针传递 | ⭐⭐⭐⭐⭐ | 选择/程序填空 | 值传递不能修改原数据,引用传递可以 |
const 使用场景 | ⭐⭐⭐⭐ | 选择/判断 | 左定值右定向,容易记混 |
结构体排序(自定义 cmp) | ⭐⭐⭐⭐⭐ | 编程题 | cmp 参数用 const 引用,返回 bool |
| 多关键字排序 | ⭐⭐⭐⭐ | 编程题 | 关键字优先级顺序,升降序搞反 |
第5章 · 函数
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
函数五要素与 return | ⭐⭐⭐⭐ | 选择/程序阅读 | void 函数不能 return 带值 |
| 函数声明与定义的区别 | ⭐⭐⭐⭐⭐ | 选择/找错 | 定义在调用后必须先声明 |
| 作用域与变量遮蔽 | ⭐⭐⭐⭐⭐ | 程序阅读(必考) | 内层变量遮蔽外层,:: 访问全局 |
static 静态局部变量 | ⭐⭐⭐⭐ | 程序阅读选择题 | 只初始化一次,保留上次值 |
| 值传递机制 | ⭐⭐⭐⭐⭐ | 选择/判断/程序阅读 | 改副本不改原数据 |
引用传递与 & 识别 | ⭐⭐⭐⭐⭐ | 选择/判断/程序阅读 | 看形参有没有 &,有就是引用 |
| 值传递 vs 引用传递 | ⭐⭐⭐⭐⭐ | 选择/判断 | 混合传递时逐个分析每个参数 |
| 数组传参退化为指针 | ⭐⭐⭐⭐ | 选择/程序填空 | 函数内修改元素会影响原数组 |
| 二维数组传参列数 | ⭐⭐⭐ | 判断/选择 | 列数不能省,行数可以省 |
| 返回局部变量引用 | ⭐⭐⭐⭐ | 选择/判断 | 局部变量函数结束就销毁了 |
第6章 · 递推算法
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 递推三要素 | ⭐⭐⭐⭐ | 选择/填空/编程 | 遗漏初始条件或递推式写错 |
| 斐波那契及变体 | ⭐⭐⭐⭐⭐ | 选择/程序阅读/编程 | 初始条件记错,递推项数搞错 |
| 爬楼梯问题 | ⭐⭐⭐⭐ | 选择/编程 | 起始项和斐波那契错开一位 |
汉诺塔 H(n)=2ⁿ-1 | ⭐⭐⭐⭐ | 选择/判断 | 通项公式记混,n=1 时验证 |
| 过河卒(含障碍) | ⭐⭐⭐⭐⭐ | 编程题 | 边界有障碍时不能直接填 1,要逐格递推 |
| 数字三角形 | ⭐⭐⭐⭐ | 编程题 | 左右两端边界处理错误导致越界 |
| 边界处理 | ⭐⭐⭐⭐⭐ | 贯穿所有编程题 | 首行首列、障碍格考虑不周 |
long long 防溢出 | ⭐⭐⭐⭐ | 贯穿所有题 | 路径数、斐波那契数容易溢出 int |
| 递推 vs 递归 | ⭐⭐⭐ | 选择/判断 | 递推是思想,递归是实现方式 |
第7章 · 排序算法
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 排序定义与内 / 外排序 | ⭐⭐ | 选择/判断 | 混淆内部排序和外部排序的适用场景 |
| 稳定性的概念 | ⭐⭐⭐⭐⭐ | 判断/选择(高频) | 把稳定性和数据是否丢失混淆 |
| 冒泡排序原理与代码 | ⭐⭐⭐⭐⭐ | 代码填空/程序阅读 | 内层循环边界 j < n-1-i |
| 选择排序原理与代码 | ⭐⭐⭐⭐⭐ | 代码填空/程序阅读 | minIdx 每轮要重置为 i |
| 插入排序原理与代码 | ⭐⭐⭐⭐⭐ | 代码填空/程序阅读 | 从后向前插入,元素后移方向 |
| 三种排序稳定性 | ⭐⭐⭐⭐⭐ | 选择/判断题 | 选择排序不稳定,冒泡和插入稳定 |
| 三种排序复杂度对比 | ⭐⭐⭐⭐⭐ | 选择/判断题 | 选择排序最好也是 O(n²),冒泡插入最好 O(n) |
| 大 O 表示法与简化 | ⭐⭐⭐⭐ | 选择/判断 | 要去掉系数和低阶项 |
| 循环代码复杂度分析 | ⭐⭐⭐⭐⭐ | 选择/程序阅读 | 嵌套乘,串联取最高阶 |
| 数据规模反推复杂度 | ⭐⭐⭐⭐ | 选择 | n≤1000→O(n²),n≤10⁵→O(nlogn) |
sort 与 stable_sort(拓展) | ⭐⭐⭐ | 判断/选择 | sort 不稳定,stable_sort 稳定 |
第8章 · 文件操作
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 文件打开模式(r/w/a) | ⭐⭐⭐⭐ | 选择/判断 | 各种模式的区别记混 |
freopen 重定向 | ⭐⭐⭐⭐ | 编程题/代码填空 | 三参数的顺序和含义 |
ifstream 读文件 | ⭐⭐⭐⭐ | 编程题/代码阅读 | 忘记检查 is_open() |
ofstream 写文件 | ⭐⭐⭐⭐ | 编程题 | 默认覆盖,不是追加 |
close() 关闭文件 | ⭐⭐⭐⭐ | 选择/判断 | 忘记关闭导致数据丢失 |
eof() 的正确用法 | ⭐⭐⭐⭐⭐ | 选择/代码阅读 | 用 eof() 判断会多读一次 |
| 覆盖 vs 追加 | ⭐⭐⭐⭐ | 选择/判断 | 默认是覆盖(trunc),追加需 ios::app |
is_open() 检查 | ⭐⭐⭐⭐⭐ | 选择/判断/编程 | 打开失败仍继续操作 |
C 风格 fopen/fclose | ⭐⭐⭐ | 选择/代码阅读 | NULL 判断、fgetc 用 int 接收 |
>> 与 getline 混用 | ⭐⭐⭐ | 选择/代码阅读 | 残留换行符导致读空行 |
第9章 · 异常处理
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 异常的概念(运行时错误) | ⭐⭐ | 选择/判断 | 和编译错误混淆 |
try-throw-catch 基本语法 | ⭐⭐⭐⭐ | 程序阅读/代码填空 | try 后必须有 catch |
throw 后 try 代码不执行 | ⭐⭐⭐⭐⭐ | 程序阅读(必考) | 以为 catch 后会回到 try 继续 |
多个 catch 匹配顺序 | ⭐⭐⭐⭐ | 选择/程序阅读 | 从具体到通用,父类放后面 |
catch(...) 兜底 | ⭐⭐⭐ | 选择/判断 | 必须放最后,放前面会挡住后面的 |
| 异常沿调用栈传播 | ⭐⭐⭐⭐ | 程序阅读 | 内层抛出的异常会向上传 |
标准异常类与 what() | ⭐⭐ | 选择(了解) | 非标准异常不能被 exception& 捕获 |
| 异常类型不匹配 | ⭐⭐⭐ | 判断/程序阅读 | 抛出和捕获类型必须一致 |
noexcept 说明符 | ⭐ | 选择(了解) | 抛出异常会直接 terminate |
| 未捕获异常 | ⭐⭐⭐ | 判断 | 程序调用 terminate 终止 |
三、选择 / 判断题「陷阱」清单
下面 20 条是四级卷面**最容易"看错、记反"**的考点,考前务必逐条自问"这句话对吗"。
int* p, q;—— 只有p是指针,q是普通int。- 野指针的值是随机的,对它解引用属于未定义行为(UB),不是"一定报错"。
- 指针
a = b是"接通"两根线,之后a、b指向同一地址,通过任一指针修改都会影响另一个。 - 数组名是常量指针,不能自增(
arr++非法);但函数形参int arr[]已退化为普通指针,可以自增。 p++移动的字节数是sizeof(所指类型),不是 1 字节。const与指针:左定值、右定向——const int* p(值不可改)/int* const p(指针不可改)。- 二维数组:行数可省、列数不能省——定义与传参皆然。
- 二维数组地址公式是
i × 列数 + j(乘列数,别乘行数)。 *p.name会被解析为*(p.name);要写成(*p).name或p->name。- 值传递改的是副本;想让函数改实参,必须用引用(
&)或指针。 static局部变量只初始化一次,跨调用保留上次的值。- 不能返回局部变量的引用 / 指针(函数结束即销毁)。
- 递推必须同时写全 初始条件 + 递推关系式;漏初始条件是头号失分点。
- 网格 / 斐波那契类路径数易溢出
int,应使用long long。 - 冒泡内层上界
j < n-1-i;选择排序minIdx每轮重置为i;插入排序从后向前移位。 - 选择排序不稳定(交换会打乱相等元素的相对顺序);冒泡、插入稳定。
- 选择排序最好也是 O(n²)(无法提前终止);冒泡 / 插入最好可到 O(n)。
- 大 O 表示法去掉系数与低阶项:
O(3n²+5n)→O(n²)。 eof()是"读了才置位",用它当循环条件会多读一次;正确写法是"先读、后判"。- 文件默认覆盖(trunc),追加要显式
ios::app;打开后先查is_open();throw后try内剩余语句不执行,catch结束也不回try。
四、编程题两条主线
四级两道编程题几乎都沿这两条主线出题,复习时按主线整块练比零散刷题有效。
| 主线 | 涉及章节 | 典型题型 | 高频失分点 |
|---|---|---|---|
| 递推线 | 第6章 递推(+ 第3章 二维数组) | 过河卒 / 数字三角形 / 斐波那契变体 / 爬楼梯 / 铺砖 | 初始条件、边界(首行首列、障碍格)、long long 防溢出 |
| 排序线 | 第7章 排序(+ 第4章 结构体 + 第8章 文件) | 成绩排序(多关键字)/ 手写三种排序 / 文件读写统计 | 内外层边界、稳定性、结构体 cmp 写法、文件打开失败 |
🧩 交叉考点:结构体数组 + 自定义
cmp排序、二维数组 + 递推、文件读入 + 排序统计——都是"两章拼一题"的常见形式。
五、考前 30 分钟速查卡
指针(第2章)
arr[i] ≡ *(arr + i);&与*互为逆运算。p++→ 地址前进sizeof(类型)字节。- 空指针用
nullptr(或NULL);野指针(未初始化)禁止解引用。
二维数组(第3章)
- 定义 / 传参:
int a[][N]——列数N必写。 - 地址偏移:
(i × 列数 + j)。
结构体(第4章)
- 变量
.成员、指针->成员;struct结尾别忘;。
函数(第5章)
- 值传递改副本、引用(
&)/ 指针传递改原值。 static局部变量:只初始化一次、值可保留。
递推(第6章)
- 三要素:初始条件 + 递推式 + 边界。
- 斐波那契
f(1)=1, f(2)=1;汉诺塔H(n)=2ⁿ-1。 - 路径数用
long long。
排序与复杂度(第7章)
- 稳定性:冒泡 ✅ / 插入 ✅ / 选择 ❌。
- 复杂度:三种平均
O(n²);最好——冒泡 O(n)、插入 O(n)、选择 O(n²)。 - 大 O 复杂度序:
O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n³) < O(2ⁿ) < O(n!)。 - 规模反推:
n ≤ 10³→ 可 O(n²);n ≤ 10⁵→ 需 O(nlogn);n ≤ 10⁶→ 需 O(n)。
文件(第8章)
- 先
is_open(),再读 / 写;eof()要"先读后判"。 - 默认覆盖,追加用
ios::app;竞赛常用freopen重定向。
异常(第9章)
throw后try剩余不执行;catch匹配"从具体到通用";catch(...)放最后。
📎 返回索引:本附录为 附录 B;附录 A = 考纲 ↔ 章节对照矩阵;附录 C = 术语中英对照;附录 D = 学习路径与备考规划;附录 E = 版本说明与勘误。
