Skip to content

第6章 代数与平面几何 ​


🎯 本章学习目标 ​

通过本章的学习,你将能够:

  1. 掌握一元一次方程:熟练求解 ax+b=0,注意a=0的特殊情况
  2. 掌握二元一次方程组:会用代入消元和加减消元法求解
  3. 掌握长方形面积:熟练计算长方形/正方形的面积和周长
  4. 掌握三角形面积:熟练计算三角形面积,了解海伦公式
  5. 掌握圆的面积:掌握圆的面积和周长公式
  6. 理解浮点数比较:知道浮点数不能直接用==比较,要用eps
  7. 掌握几何计数:能用组合数解决网格中的几何计数问题
  8. 判断解的情况:能判断方程组有唯一解、无解、无穷多解
  9. 几何建模:能把实际问题转化为几何/代数问题
  10. 应对真题题型:能解决选择、判断、计算等各类代数几何题目

🗺️ 本章知识图谱 ​

代数与平面几何
├── 代数部分
│   ├── 一元一次方程
│   │   ├── 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 标准形式与求解 ​

标准形式ax+b=cax + b = c(a≠0a \ne 0),移项、系数化为 1: x=c−bax = \frac{c - b}{a}

编程实现就是一行代码,但要注意整数除法这个大坑:

表达式C++11
5 / 22 (整数除法,直接截断!)
5.0 / 22.5
5 // 2无此语法
1 / 2 * 60 (1/2 先得 0)

⚠️ 易错点①:整数除法截断 。C++ 中两个 int 相除结果还是 int,小数部分被直接砍掉。解决办法:让至少一个操作数变成浮点数,写 1.0 / 2 或 (double)a / b。

1.2 浮点解 vs 分数解 ​

  • 题目要求小数答案 → 用 double(C++),输出时按需保留小数位。
  • 题目要求精确分数答案 → 用整数运算 + 约分(分子分母同除最大公约数 gcd),彻底避开浮点误差。例如解 6x=46x = 4:
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/3

1.3 特殊情况:a = 0 ​

方程退化为 b = c:若 b == c:任意 xx 都成立(无穷多解);若 b≠cb \ne c:无解。写通用解方程程序时必须判定,否则会出现"除以 0"的运行错误。


四、二元一次方程组 ​

2.1 两种消元法(数学基础) ​

{a1x+b1y=c1a2x+b2y=c2\begin{cases} a_1x + b_1y = c_1 \\ a_2x + b_2y = c_2 \end{cases}

  • 代入消元法 :从一个方程解出 x(或 y),代入另一个方程。
  • 加减消元法 :把某个未知数的系数化成相同/相反,两式相加减消元。

手算用这两种,但编程时我们用更"规整"的方法——

2.2 行列式与克莱姆法则(Cramer's Rule) ​

定义三个行列式: D=a1b2−a2b1,Dx=c1b2−c2b1,Dy=a1c2−a2c1D = a_1b_2 - a_2b_1,\quad D_x = c_1b_2 - c_2b_1,\quad D_y = a_1c_2 - a_2c_1

则解的情况为(前提:以下判定默认方程组系数不全为 0;若四条系数 a₁=b₁=a₂=b₂=0 全为 0,则按右端项判定——c₁、c₂ 均为 0 时无穷多解,否则无解):

条件结论
D≠0D \ne 0唯一解 :x = Dx / D,y = Dy / D
D=0D = 0 且 Dx=Dy=0D_x = D_y = 0无穷多组解 (两方程本质相同,系数不全为 0 时)
D=0D = 0 但 DxD_x、DyD_y 不全为 0无解 (两方程矛盾,如 x+y=1 与 x+y=2)

🔥 高频考点 :选择题常考"方程组解的个数判定"。记住口诀D 非零唯一解,D 为零看右端项。

⚠️ 易错点②:浮点数不能判 D == 0 。浮点运算有误差,理论上为 0 的行列式可能算出 1e-16。必须用误差范围:fabs(D) < 1e-9(C++)。


五、平面几何公式全家桶 ​

3.1 公式速查表 ​

图形面积周长备注
长方形S = a \times bC = 2(a+b)a、b 为邻边
三角形S = \frac{1}{2} \cdot a \cdot hC = a+b+ca 为底,h 为对应高
三角形(海伦公式)S = \sqrt—p = \frac{a+b+c}{2} 为半周长
圆S = \pi r^2C = 2\pi rr 为半径

3.2 π 到底怎么取? ​

⚠️ 易错点③:π 的取法 。不要手写 3.14,精度不够会丢分!

cpp
// C++:最稳妥的方式,所有编译器通用
const double PI = acos(-1.0);   // acos(-1) = π ≈ 3.14159265358979

3.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 条竖线,唯一确定一个长方形: 长方形个数=Cm+12×Cn+12=m(m+1)2⋅n(n+1)2\text{长方形个数} = C_{m+1}^{2} \times C_{n+1}^{2} = \frac{m(m+1)}{2} \cdot \frac{n(n+1)}{2}

例:4×6 网格 → C(5,2)×C(7,2) = 10 × 21 = 210 个 (含正方形)。若只数正方形,则为 ∑k=1min⁡(m,n)(m−k+1)(n−k+1)\sum_{k=1}^{\min(m,n)} (m-k+1)(n-k+1)。

4.2 格点中的三角形 ​

n×n 个格点中任取 3 个点可组成三角形。除非三点共线,: 三角形个数=Cn23−(三点共线的组数)\text{三角形个数} = C_{n^2}^{3} - (\text{三点共线的组数})

例:3×3 格点共 9 个点。(93)=84\binom{9}{3} = 84;共线三点组有:3 条横线 + 3 条竖线 + 2 条对角线 = 8 组。故三角形 = 84 − 8 = 76 个 。

判三点共线用叉积判定(整数运算,零误差):(x2−x1)(y3−y1)=(x3−x1)(y2−y1)(x_2 - x_1)(y_3 - y_1) = (x_3 - x_1)(y_2 - y_1)。


七、🎯 典型例题精讲 ​

例题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+y=35, 2x+4y=94x + y = 35,\ 2x + 4y = 94。D=1×4−2×1=2, Dx=35×4−94×1=46, Dy=1×94−2×35=24D = 1 \times 4 - 2 \times 1 = 2,\ D_x = 35 \times 4 - 94 \times 1 = 46,\ D_y = 1 \times 94 - 2 \times 35 = 24,故 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 的圆的面积与周长。

手算

:p=6, S=6×3×2×1=36=6p = 6,\ S = \sqrt{6 \times 3 \times 2 \times 1} = \sqrt{36} = 6 ;圆面积 4π≈12.56644\pi \approx 12.5664,周长 4π≈12.56644\pi \approx 12.5664。

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 格点中三角形的个数。

第①问(解析法)

:(52)×(72)=10×21=210\binom{5}{2} \times \binom{7}{2} = 10 \times 21 = 210。

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 种三点组合,结果与解析法 (93)−8=76\binom{9}{3} - 8 = 76 完全一致。考场上两种方法可以互相验证,这是八级综合题的稳分技巧。


八、⚠️ 易错点红黑榜 ​

#易错点正确做法
1C++ 整数除法 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) 减去共线组数,或用叉积模拟

九、💡 备考建议 ​

  1. 公式要会"翻译" :每个几何公式都会亲手写,特别留意除法和开方。
  2. 判定逻辑要完整 :解方程类题目,无解/无穷解的分支是选择题和编程题的共同采分点。
  3. 解析法优先、模拟法兜底 :能推公式就 O(1) 秒杀;推不出就枚举,再用小数据验证。
  4. 几何计数回扣组合数 :网格数图形 = 第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

解析: 用加减消元法:

  1. 把两个方程相加,消去 y: (x + y) + (2x - y) = 5 + 1
    3x = 6
    x = 2

  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. 面积是平方单位,周长是线性单位           │
└─────────────────────────────────────────────┘

百炼成钢,融会贯通