Skip to content

附录 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 条是四级卷面**最容易"看错、记反"**的考点,考前务必逐条自问"这句话对吗"。

  1. int* p, q; —— 只有 p 是指针,q 是普通 int。
  2. 野指针的值是随机的,对它解引用属于未定义行为(UB),不是"一定报错"。
  3. 指针 a = b 是"接通"两根线,之后 a、b 指向同一地址,通过任一指针修改都会影响另一个。
  4. 数组名是常量指针,不能自增(arr++ 非法);但函数形参 int arr[] 已退化为普通指针,可以自增。
  5. p++ 移动的字节数是 sizeof(所指类型),不是 1 字节。
  6. const 与指针:左定值、右定向——const int* p(值不可改)/ int* const p(指针不可改)。
  7. 二维数组:行数可省、列数不能省——定义与传参皆然。
  8. 二维数组地址公式是 i × 列数 + j(乘列数,别乘行数)。
  9. *p.name 会被解析为 *(p.name);要写成 (*p).name 或 p->name。
  10. 值传递改的是副本;想让函数改实参,必须用引用(&)或指针。
  11. static 局部变量只初始化一次,跨调用保留上次的值。
  12. 不能返回局部变量的引用 / 指针(函数结束即销毁)。
  13. 递推必须同时写全 初始条件 + 递推关系式;漏初始条件是头号失分点。
  14. 网格 / 斐波那契类路径数易溢出 int,应使用 long long。
  15. 冒泡内层上界 j < n-1-i;选择排序 minIdx 每轮重置为 i;插入排序从后向前移位。
  16. 选择排序不稳定(交换会打乱相等元素的相对顺序);冒泡、插入稳定。
  17. 选择排序最好也是 O(n²)(无法提前终止);冒泡 / 插入最好可到 O(n)。
  18. 大 O 表示法去掉系数与低阶项:O(3n²+5n) → O(n²)。
  19. eof() 是"读了才置位",用它当循环条件会多读一次;正确写法是"先读、后判"。
  20. 文件默认覆盖(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 = 版本说明与勘误。

百炼成钢,融会贯通