Appearance
第6章 代数与平面几何
🎯 本章学习目标
通过本章的学习,你将能够:
- 掌握一元一次方程:熟练求解 ax+b=0,注意a=0的特殊情况
- 掌握二元一次方程组:会用代入消元和加减消元法求解
- 掌握长方形面积:熟练计算长方形/正方形的面积和周长
- 掌握三角形面积:熟练计算三角形面积,了解海伦公式
- 掌握圆的面积:掌握圆的面积和周长公式
- 理解浮点数比较:知道浮点数不能直接用==比较,要用eps
- 掌握几何计数:能用组合数解决网格中的几何计数问题
- 判断解的情况:能判断方程组有唯一解、无解、无穷多解
- 几何建模:能把实际问题转化为几何/代数问题
- 应对真题题型:能解决选择、判断、计算等各类代数几何题目
🗺️ 本章知识图谱
代数与平面几何
├── 代数部分
│ ├── 一元一次方程
│ │ ├── ax + b = 0
│ │ ├── a≠0 时 x = -b/a(唯一解)
│ │ └── a=0 时:b=0无穷解,b≠0无解
│ └── 二元一次方程组
│ ├── 代入消元法
│ ├── 加减消元法
│ └── 解的情况:唯一/无解/无穷
├── 平面几何部分
│ ├── 长方形
│ │ ├── 面积 = 长 × 宽
│ │ └── 周长 = 2×(长+宽)
│ ├── 正方形
│ │ ├── 面积 = 边长²
│ │ └── 周长 = 4×边长
│ ├── 三角形
│ │ ├── 面积 = 底 × 高 ÷ 2
│ │ ├── 海伦公式:√(p(p-a)(p-b)(p-c))
│ │ └── p = (a+b+c)/2
│ └── 圆
│ ├── 面积 = πr²
│ ├── 周长 = 2πr
│ └── π ≈ 3.1415926
├── 浮点数注意事项
│ ├── 不能直接用 == 比较
│ ├── fabs(a-b) < eps
│ ├── eps = 1e-8 左右
│ └── π 用 acos(-1.0) 获取
├── 几何计数
│ ├── 网格数长方形
│ │ └── C(m,2) × C(n,2)
│ ├── 网格数正方形
│ └── 数三角形(注意共线)
└── 易错点
├── 忘记a=0的特殊情况
├── 浮点数直接比较
├── π值不精确
├── 几何计数漏算/重复
└── 公式记错(÷2忘写)一、📌 考纲原文
(5)掌握代数与平面几何基础知识(初中数学部分)。 包括方程的概念及一元一次方程、二元一次方程的基本求解技巧,基础平面几何概念、求基本图形(如长方形、三角形、圆形等)的面积等。
考纲对应的知识点清单:一元一次方程、二元一次方程(组)、三角形/圆形/长方形面积。注意限定词"初中数学部分"——不考证明题,考的是利用计算机计算公式的能力,以及把实际问题转化为代码逻辑的能力。
考情速览
| 考点 | 常见题型 | 出题热度 |
|---|---|---|
| 整数除法截断 / 浮点比较 | 单选题、判断题 | 🔥🔥🔥🔥🔥 |
| 方程组解的个数判定(D=0) | 单选题 | 🔥🔥🔥🔥 |
| 圆/三角形面积计算(π、海伦公式) | 阅读程序、编程题 | 🔥🔥🔥🔥 |
| 网格中数长方形/三角形 | 单选 + 编程综合 | 🔥🔥🔥🔥 |
| 方程应用题建模 | 编程题 | 🔥🔥🔥 |
二、核心思想:数学问题 → 程序的两条路
拿到一道数学题,编程求解通常有两种思路:
| 解析法(公式法) | 模拟法(枚举法) | |
|---|---|---|
| 做法 | 先推导出数学公式,直接代入计算 | 让计算机枚举所有可能,逐一验证 |
| 优点 | O(1),又快又准 | 不用推导,思路直白 |
| 缺点 | 需要数学建模能力 | 数据量大时会超时 |
| 典型场景 | 解方程、海伦公式、组合计数公式 | 网格中数三角形、枚举三点判共线 |
🔥 高频考点 :八级编程题常把两种方法放在一起考——能用公式就用公式(解析法),公式不好推时用枚举模拟,再用数学结论验证。本章例题 4 会完整演示两种方法的"对决"。
三、一元一次方程
1.1 标准形式与求解
标准形式(),移项、系数化为 1:
编程实现就是一行代码,但要注意整数除法这个大坑:
| 表达式 | C++11 |
|---|---|
5 / 2 | 2 (整数除法,直接截断!) |
5.0 / 2 | 2.5 |
5 // 2 | 无此语法 |
1 / 2 * 6 | 0 (1/2 先得 0) |
⚠️ 易错点①:整数除法截断 。C++ 中两个
int相除结果还是int,小数部分被直接砍掉。解决办法:让至少一个操作数变成浮点数,写1.0 / 2或(double)a / b。
1.2 浮点解 vs 分数解
- 题目要求小数答案 → 用
double(C++),输出时按需保留小数位。 - 题目要求精确分数答案 → 用整数运算 + 约分(分子分母同除最大公约数 gcd),彻底避开浮点误差。例如解 :
cpp
// C++11:分数约分(C++17 起可用 std::gcd,C++11 需手写)
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
// $6x = 4$ => x = 4/6 = 2/3
int num = 4, den = 6;
int g = gcd(num, den);
cout << "x = " << num/g << "/" << den/g << endl; // x = 2/31.3 特殊情况:a = 0
方程退化为 b = c:若 b == c:任意 都成立(无穷多解);若 :无解。写通用解方程程序时必须判定,否则会出现"除以 0"的运行错误。
四、二元一次方程组
2.1 两种消元法(数学基础)
- 代入消元法 :从一个方程解出 x(或 y),代入另一个方程。
- 加减消元法 :把某个未知数的系数化成相同/相反,两式相加减消元。
手算用这两种,但编程时我们用更"规整"的方法——
2.2 行列式与克莱姆法则(Cramer's Rule)
定义三个行列式:
则解的情况为(前提:以下判定默认方程组系数不全为 0;若四条系数 a₁=b₁=a₂=b₂=0 全为 0,则按右端项判定——c₁、c₂ 均为 0 时无穷多解,否则无解):
| 条件 | 结论 |
|---|---|
| 唯一解 :x = Dx / D,y = Dy / D | |
| 且 | 无穷多组解 (两方程本质相同,系数不全为 0 时) |
| 但 、 不全为 0 | 无解 (两方程矛盾,如 x+y=1 与 x+y=2) |
🔥 高频考点 :选择题常考"方程组解的个数判定"。记住口诀D 非零唯一解,D 为零看右端项。
⚠️ 易错点②:浮点数不能判
D == 0。浮点运算有误差,理论上为 0 的行列式可能算出 1e-16。必须用误差范围:fabs(D) < 1e-9(C++)。
五、平面几何公式全家桶
3.1 公式速查表
| 图形 | 面积 | 周长 | 备注 |
|---|---|---|---|
| 长方形 | S = a \times b | C = 2(a+b) | a、b 为邻边 |
| 三角形 | S = \frac{1}{2} \cdot a \cdot h | C = a+b+c | a 为底,h 为对应高 |
| 三角形(海伦公式) | S = \sqrt | — | p = \frac{a+b+c}{2} 为半周长 |
| 圆 | S = \pi r^2 | C = 2\pi r | r 为半径 |
3.2 π 到底怎么取?
⚠️ 易错点③:π 的取法 。不要手写
3.14,精度不够会丢分!
cpp
// C++:最稳妥的方式,所有编译器通用
const double PI = acos(-1.0); // acos(-1) = π ≈ 3.141592653589793.3 海伦公式的两个暗坑
⚠️ 易错点④:海伦公式开方 。① 先算半周长 p,别把周长直接代进去;② 输入三边要能构成三角形(任意两边之和大于第三边),否则根号内可能是负数,浮点误差下甚至合法数据也可能算出 −1e-15 导致
sqrt报错,工程上可写sqrt(max(0.0, p*(p-a)*(p-b)*(p-c)))兜底。
⚠️ 易错点⑤:单位统一 。题目里厘米和米混给时,先统一单位再套公式;面积单位是平方单位,别忘了换算(1 m² = 10000 cm²)。
六、几何计数:几何 × 排列组合 🔥
这是八级最爱的综合题型在网格/格点数图形个数,本质是第2、3期学的组合数的直接应用。
4.1 网格中的长方形
一个由 m 行 n 列小方格 组成的网格,有 m+1 条横线、n+1 条竖线。任取 2 条横线和 2 条竖线,唯一确定一个长方形:
例:4×6 网格 → C(5,2)×C(7,2) = 10 × 21 = 210 个 (含正方形)。若只数正方形,则为 。
4.2 格点中的三角形
n×n 个格点中任取 3 个点可组成三角形。除非三点共线,:
例:3×3 格点共 9 个点。;共线三点组有:3 条横线 + 3 条竖线 + 2 条对角线 = 8 组。故三角形 = 84 − 8 = 76 个 。
判三点共线用叉积判定(整数运算,零误差):。
七、🎯 典型例题精讲
例题1(一元一次方程·应用题建模)
题目
:老师给小朋友分苹果,每人分 3 个则剩 8 个;每人分 5 个则缺 4 个。问有多少小朋友、多少苹果?
建模
:设小朋友 x 人。苹果总数不变:3x + 8 = 5x − 4,即 (5−3)x = 8+4,解得 x = 6,苹果 = 26。
C++11 代码
:
cpp
#include <iostream>
using namespace std;
int main() {
double p = 3, q = 8; // 每人分 p 个,剩 q 个
double r = 5, s = 4; // 每人分 r 个,缺 s 个
// p*x + q = r*x - s => x = (q+s)/(r-p)
double x = (q + s) / (r - p);
cout << "小朋友:" << x << " 人" << endl; // 6
cout << "苹果:" << p * x + q << " 个" << endl; // 26
return 0;
}💡 建模关键:抓住"苹果总数不变"这个等量关系列方程。应用题考的不是解方程,是列方程。
例题2(二元一次方程组·克莱姆法则 + 解的判定)
题目
:鸡兔同笼,上有 35 头,下有 94 足,问鸡兔各几何?并编程处理无解/无穷解的情况。
建模
:鸡 x 只、兔 y 只:。,故 x = 23,y = 12。
C++11 代码
:
cpp
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
const double EPS = 1e-9;
int main() {
// a1*x + b1*y = c1 ; a2*x + b2*y = c2
double a1=1, b1=1, c1=35; // 鸡兔同笼
double a2=2, b2=4, c2=94;
double D = a1*b2 - a2*b1;
double Dx = c1*b2 - c2*b1;
double Dy = a1*c2 - a2*c1;
if (fabs(D) < EPS) {
if (fabs(Dx) < EPS && fabs(Dy) < EPS)
cout << "无穷多组解" << endl;
else
cout << "无解" << endl;
} else {
cout << fixed << setprecision(2);
cout << "鸡 " << Dx/D << " 只,兔 " << Dy/D << " 只" << endl;
// 输出:鸡 23.00 只,兔 12.00 只
}
return 0;
}🔥 把系数改成 (1,1,1) 与 (1,1,2) 输出"无解",改成 (1,1,1) 与 (2,2,2) 输出"无穷多组解",三种情况务必亲手试一遍。
例题3(面积计算·海伦公式与圆)
题目
:输入三角形三边长 3、4、5,输出其面积;再输出半径为 2 的圆的面积与周长。
手算
: ;圆面积 ,周长 。
C++11 代码
:
cpp
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
const double PI = acos(-1.0);
double a = 3, b = 4, c = 5;
double p = (a + b + c) / 2.0; // 半周长(注意 2.0)
double s = sqrt(p*(p-a)*(p-b)*(p-c)); // 海伦公式
cout << fixed << setprecision(4);
cout << "三角形面积:" << s << endl; // 6.0000
double r = 2.0;
cout << "圆面积:" << PI * r * r << endl; // 12.5664
cout << "圆周长:" << 2 * PI * r << endl; // 12.5664
return 0;
}例题4(网格几何计数·解析法 vs 模拟法)
题目
:① 求 4×6 网格中长方形的个数;② 求 3×3 格点中三角形的个数。
第①问(解析法)
:。
cpp
// C++11
#include <iostream>
using namespace std;
long long C2(long long n) { return n * (n - 1) / 2; } // C(n,2)
int main() {
int m = 4, n = 6; // 4 行 6 列小方格
cout << "长方形个数:" << C2(m+1) * C2(n+1) << endl; // 210
return 0;
}第②问(模拟法枚举 + 叉积判共线)
:
cpp
// C++11
#include <iostream>
using namespace std;
int main() {
int n = 3, total = 0, bad = 0; // 3x3 共 9 个格点
for (int i = 0; i < n*n; i++)
for (int j = i+1; j < n*n; j++)
for (int k = j+1; k < n*n; k++) {
total++;
int x1=i%n, y1=i/n, x2=j%n, y2=j/n, x3=k%n, y3=k/n;
if ((x2-x1)*(y3-y1) == (x3-x1)*(y2-y1)) bad++; // 叉积=0:共线
}
cout << "三角形个数:" << total - bad << endl; // 84 - 8 = 76
return 0;
}💡 模拟法枚举 84 种三点组合,结果与解析法 完全一致。考场上两种方法可以互相验证,这是八级综合题的稳分技巧。
八、⚠️ 易错点红黑榜
| # | 易错点 | 正确做法 |
|---|---|---|
| 1 | C++ 整数除法 5/2=2、1/2*6=0 | 写 1.0/2 或 (double) 强转; |
| 2 | 浮点直接 == 0 比较 | 用误差范围 fabs(x) < 1e-9 / abs(x) < 1e-9 |
| 3 | π 手写 3.14 精度不足 | acos(-1.0) |
| 4 | 海伦公式忘记半周长 / 根号内为负 | 先算 p=(a+b+c)/2,必要时 max(0, ...) 兜底 |
| 5 | 单位不统一、面积周长公式混淆 | 先统一单位;圆面积 πr²、周长 2πr 别记反 |
| 6 | 方程组不判 D=0 直接除 | 先判行列式,再区分无解与无穷多解 |
| 7 | 数三角形忘记扣除共线三点 | 总数 C(n,3) 减去共线组数,或用叉积模拟 |
九、💡 备考建议
- 公式要会"翻译" :每个几何公式都会亲手写,特别留意除法和开方。
- 判定逻辑要完整 :解方程类题目,无解/无穷解的分支是选择题和编程题的共同采分点。
- 解析法优先、模拟法兜底 :能推公式就 O(1) 秒杀;推不出就枚举,再用小数据验证。
- 几何计数回扣组合数 :网格数图形 = 第2、3期计数原理的应用题,组合数公式要条件反射。
十、📝 实战练习
练习题 1(单选题)
题目: 方程 2x + 6 = 0 的解是?( )
A. x = 3
B. x = -3
C. x = 2
D. x = -2
🔑 点击查看答案与解析
答案: B
解析: 2x + 6 = 0
2x = -6
x = -6 / 2
x = -3
选 B。
💡 一元一次方程 ax + b = 0 的解:x = -b/a(a ≠ 0)。
练习题 2(判断题)
题目: 方程 0x + 5 = 0 有唯一解 x = 0。( )
🔑 点击查看答案与解析
答案: 错误 ❌
解析: 当 a = 0 时,方程 ax + b = 0 有两种情况:
- 如果 b = 0:0 = 0,恒成立 → 无穷多解
- 如果 b ≠ 0:0 + 5 = 0,矛盾 → 无解
这道题 a=0, b=5≠0,所以无解,不是有唯一解。
🔥 高频考点:a=0 的特殊情况是选择题和判断题的常客,千万别漏掉!
练习题 3(单选题)
题目: 半径为 3 的圆的面积是多少?(π 取 3.14)( )
A. 9.42
B. 18.84
C. 28.26
D. 84.78
🔑 点击查看答案与解析
答案: C
解析: 圆的面积公式:S = πr²
代入 r = 3, π = 3.14: S = 3.14 × 3² = 3.14 × 9 = 28.26
选 C。
⚠️ 注意:面积是 πr²,周长是 2πr。别记混了!面积是平方,周长是线性的。
练习题 4(单选题)
题目: 一个三角形的底是 6,高是 4,它的面积是多少?( )
A. 24
B. 12
C. 10
D. 20
🔑 点击查看答案与解析
答案: B
解析: 三角形面积公式:S = 底 × 高 ÷ 2
S = 6 × 4 ÷ 2 = 24 ÷ 2 = 12
选 B。
⚠️ 易错点:千万别忘记除以 2!三角形面积是对应长方形的一半。
练习题 5(判断题)
题目: 在 C++ 中,判断两个 double 变量 a 和 b 是否相等,应该用 if (a == b)。( )
🔑 点击查看答案与解析
答案: 错误 ❌
解析: 浮点数有精度误差,不能直接用 == 比较。
正确做法:判断两个数的差的绝对值小于一个很小的数 eps:
cpp
if (fabs(a - b) < 1e-8) {
// 认为相等
}🔥 高频考点:浮点数比较是必考判断题。记住:double 不能直接 == 比较!
练习题 6(单选题)
题目: 在一个 3×2 的网格中(4 条横线,3 条竖线),一共有多少个长方形(包括正方形)?( )
A. 6
B. 12
C. 18
D. 24
🔑 点击查看答案与解析
答案: C
解析: 数长方形的方法:一个长方形由两条横线和两条竖线确定。
- 横线有 4 条(3+1),选 2 条:C(4,2) = 4×3/2 = 6
- 竖线有 3 条(2+1),选 2 条:C(3,2) = 3×2/2 = 3
总长方形数 = 6 × 3 = 18
选 C。
💡 公式:m行n列的网格(m+1条横线,n+1条竖线),长方形总数 = C(m+1,2) × C(n+1,2)
练习题 7(单选题)
题目: 一个正方形的面积是 25,它的周长是多少?( )
A. 10
B. 20
C. 25
D. 15
🔑 点击查看答案与解析
答案: B
解析: 正方形面积 = 边长² = 25
所以边长 = √25 = 5
正方形周长 = 4 × 边长 = 4 × 5 = 20
选 B。
💡 解题步骤:先由面积求边长,再由边长求周长。一步一步来,别跳步。
练习题 8(编程题)
题目: 解方程组:
x + y = 5
2x - y = 1求 x 和 y 的值。
🔑 点击查看答案与解析
答案: x = 2,y = 3
解析: 用加减消元法:
把两个方程相加,消去 y: (x + y) + (2x - y) = 5 + 1
3x = 6
x = 2把 x = 2 代入第一个方程: 2 + y = 5
y = 3
验证:2×2 - 3 = 4 - 3 = 1 ✓
💡 加减消元法:两个方程相加或相减,消去一个未知数,变成一元一次方程。
十一、📊 考点总结表
| 考点 | 重要程度 | 出题形式 | 易错点 |
|---|---|---|---|
| 一元一次方程 | ⭐⭐⭐⭐ | 选择/判断 | a=0的特殊情况(无解/无穷解) |
| 二元一次方程组 | ⭐⭐⭐⭐ | 选择/计算 | 代入/加减消元法 |
| 长方形面积/周长 | ⭐⭐⭐⭐⭐ | 选择/计算 | 面积=长×宽,周长=2×(长+宽) |
| 正方形面积/周长 | ⭐⭐⭐⭐⭐ | 选择/计算 | 面积=边长²,周长=4×边长 |
| 三角形面积 | ⭐⭐⭐⭐⭐ | 选择/计算 | 别忘了÷2 |
| 圆的面积/周长 | ⭐⭐⭐⭐⭐ | 选择/计算 | 面积=πr²,周长=2πr |
| 浮点数比较 | ⭐⭐⭐⭐⭐ | 判断/选择 | 不能直接==,要用eps |
| 海伦公式 | ⭐⭐⭐ | 选择/了解 | p=(a+b+c)/2,√(p(p-a)(p-b)(p-c)) |
| 几何计数 | ⭐⭐⭐⭐ | 选择/计算 | C(m,2)×C(n,2)数长方形 |
| π的精确表示 | ⭐⭐⭐⭐ | 选择/编程 | acos(-1.0)比3.14精确 |
⭐ 必背速记卡
┌─────────────────────────────────────────────┐
│ 代数与平面几何 · 必背速记卡 │
├─────────────────────────────────────────────┤
│ 1. 一元一次方程:ax+b=0 → x=-b/a (a≠0) │
│ 2. a=0时:b=0无穷解,b≠0无解 │
│ 3. 长方形面积=长×宽,周长=2×(长+宽) │
│ 4. 正方形面积=边长²,周长=4×边长 │
│ 5. 三角形面积=底×高÷2(别忘了÷2!) │
│ 6. 海伦公式:p=(a+b+c)/2,√(p(p-a)(p-b)(p-c))│
│ 7. 圆面积=πr²,圆周长=2πr │
│ 8. 浮点数不能直接用==比较 │
│ 9. fabs(a-b) < 1e-8 认为相等 │
│ 10. π用acos(-1.0)获取,比3.14精确 │
│ 11. 网格数长方形:C(m+1,2)×C(n+1,2) │
│ 12. 二元一次方程组:代入消元/加减消元 │
│ 13. 解方程组先判断有没有唯一解 │
│ 14. 几何计数用组合数,注意不重不漏 │
│ 15. 面积是平方单位,周长是线性单位 │
└─────────────────────────────────────────────┘