diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index a448cf92..0b5e5f18 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,8 +5,9 @@
-
+
+
@@ -262,7 +263,15 @@
1745063694397
-
+
+
+ 1745063920109
+
+
+
+ 1745063920109
+
+
diff --git a/notebook/docs/NOI竞赛大纲/二.C++程序设计/2.基本数据类型.md b/notebook/docs/NOI竞赛大纲/二.C++程序设计/2.基本数据类型.md
index 12db333a..b4b5f227 100644
--- a/notebook/docs/NOI竞赛大纲/二.C++程序设计/2.基本数据类型.md
+++ b/notebook/docs/NOI竞赛大纲/二.C++程序设计/2.基本数据类型.md
@@ -1,23 +1,102 @@
+# 2. 基本数据类型
-# 基本数据类型
+在编程中,**数据类型**用于定义变量可以存储的数据种类。掌握各种基本数据类型是理解变量、表达式和内存占用的基础。
-在编程中,基本数据类型用于表示不同类型的数值和字符,是编写程序的基础。常见的基本数据类型包括:
+---
-## · 整数型:`int`、`long long`
-- 用于表示整数值。
-- `int` 通常用于表示较小范围的整数。
-- `long long` 用于表示更大范围的整数,尤其是在处理大数计算时常用。
+## 【 1 】整数型:`int`、`long long`
-## · 实数型:`float`、`double`
-- 用于表示带小数点的实数。
-- `float` 表示单精度浮点数,精度较低,占用内存较小。
-- `double` 表示双精度浮点数,精度更高,占用内存更大,适合科学计算。
+### 🔹 `int` 【难度:1】
+- 用于表示一般范围的整数(如:-100, 0, 999 等)。
+- 占用内存:通常为 **4字节(32位)**
+- 范围(有符号):约 -231 到 231-1
-## · 字符型:`char`
-- 用于存储单个字符,如 `'A'`、`'b'`、`'1'`。
-- 本质上是一个整数类型,通常占用 1 字节空间,对应 ASCII 编码表。
+```cpp
+int age = 18;
+```
-## · 布尔型:`bool`
-- 用于表示逻辑值:`true`(真)或 `false`(假)。
-- 常用于条件判断、控制程序流程。
+### 🔹 `long long` 【难度:1】
+- 表示更大的整数,通常用于涉及大数计算(如阶乘、数据统计等)。
+- 占用内存:**8字节(64位)**
+- 范围(有符号):约 -263 到 263-1
+```cpp
+long long population = 7800000000;
+```
+
+> 💡 提示:在程序中使用大整数时建议使用 `long long` 类型,并搭配 `ll` 作为字面量后缀(如:`1000000000ll`)。
+
+---
+
+## 【 1 】实数型:`float`、`double`
+
+### 🔹 `float` 【难度:1】
+- 表示**单精度**浮点数,精度约为小数点后6位。
+- 占用内存:**4字节**
+```cpp
+float pi = 3.14159f;
+```
+
+### 🔹 `double` 【难度:1】
+- 表示**双精度**浮点数,精度约为小数点后15位。
+- 占用内存:**8字节**
+```cpp
+double e = 2.718281828459;
+```
+
+> ⚠ 注意:浮点数在计算中存在精度误差,判断是否相等时不要直接用 `==`,而应判断差值是否在一个误差范围内。
+
+---
+
+## 【 1 】字符型:`char`
+
+- 用于表示单个字符,如 `'A'`、`'b'`、`'1'`。
+- 实际上是存储字符的 **ASCII编码值**(整数)。
+- 占用内存:**1字节**
+
+```cpp
+char grade = 'A';
+cout << (int)grade << endl; // 输出字符的 ASCII 编码:65
+```
+
+> 💡 字符用单引号包裹(如:`'X'`),而不是双引号。
+
+---
+
+## 【 1 】布尔型:`bool`
+
+- 只包含两个取值:`true`(真)、`false`(假)
+- 用于逻辑判断和条件语句
+- 占用内存:**1字节**(虽然只需要1位,但通常按字节处理)
+
+```cpp
+bool isPassed = true;
+
+if (isPassed) {
+ cout << "考试通过!" << endl;
+}
+```
+
+> ✅ 在 C++ 中,`true` 等价于 `1`,`false` 等价于 `0`。
+
+---
+
+## 🧠 扩展知识:类型对应内存大小与范围(一般情况下)
+
+| 类型 | 大小(字节) | 常规范围(有符号) |
+|------------|---------------|-----------------------------|
+| `char` | 1 字节 | -128 ~ 127 |
+| `int` | 4 字节 | -2,147,483,648 ~ 2,147,483,647 |
+| `long long`| 8 字节 | 超大整数范围 |
+| `float` | 4 字节 | ~±3.4e±38(7位有效数字) |
+| `double` | 8 字节 | ~±1.7e±308(15位有效数字) |
+| `bool` | 1 字节 | true / false |
+
+---
+
+## ✅ 小结
+
+- 整数类型用于计数、下标等离散数据;
+- 实数类型用于精确度要求较高的计算;
+- 字符类型用于文本字符操作;
+- 布尔类型用于控制逻辑和条件判断。
diff --git a/notebook/docs/NOI竞赛大纲/二.C++程序设计/3.程序基本语句.md b/notebook/docs/NOI竞赛大纲/二.C++程序设计/3.程序基本语句.md
index aa7b79fa..6649687e 100644
--- a/notebook/docs/NOI竞赛大纲/二.C++程序设计/3.程序基本语句.md
+++ b/notebook/docs/NOI竞赛大纲/二.C++程序设计/3.程序基本语句.md
@@ -1,236 +1,191 @@
# 3. 程序基本语句
-程序是由一条条“语句”组成的,每条语句都有其明确的功能,例如输入、输出、赋值、判断、循环等。掌握基本语句,是学会编写程序的第一步。
+程序语句是构成程序逻辑的核心部分,掌握基本语句的使用,是编程入门的关键。本章将系统讲解输入输出、条件判断、循环结构等常用语句。
---
-## 📥输入、输出与赋值语句
-
-### 1. 输入语句
-
-用于从用户输入中获取数据。
-
-- **cin(C++)**
- ```cpp
- int a;
- cin >> a; // 读取一个整数并存入变量 a 中
- ```
- 多个变量也可连续读取:
- ```cpp
- int x, y;
- cin >> x >> y;
- ```
-
-- **scanf(C)**
- ```c
- int a;
- scanf("%d", &a); // %d 表示读取一个整数
- ```
-
- 多变量读取:
- ```c
- int x, y;
- scanf("%d %d", &x, &y);
- ```
-
-### 2. 输出语句
-
-用于将数据展示到终端(控制台)上。
-
-- **cout(C++)**
- ```cpp
- int a = 10;
- cout << "a = " << a << endl;
- ```
-
-- **printf(C)**
- ```c
- int a = 10;
- printf("a = %d\n", a);
- ```
-
-### 3. 赋值语句
-
-将右侧的值赋给左侧变量,是程序中最基本的操作之一。
+## 【2】输入输出语句与赋值语句
+### ✅ cin 和 cout(C++ 风格)
```cpp
-int a;
-a = 5;
-a = a + 10; // 赋值时,先计算右边的值
+#include
+using namespace std;
+
+int main() {
+ int a;
+ cin >> a; // 输入一个整数
+ cout << "你输入的是: " << a << endl;
+ return 0;
+}
```
+- `cin >>`:从键盘读取输入。
+- `cout <<`:输出内容到屏幕。
+- `<< endl`:换行输出。
-### 4. 复合语句
+---
-复合语句即“语句块”,由一对花括号 `{}` 包裹起来的多条语句,常用于条件或循环控制中:
+### ✅ scanf 和 printf(C 风格)
+```cpp
+#include
+int main() {
+ int a;
+ scanf("%d", &a); // 输入一个整数
+ printf("你输入的是: %d\n", a);
+ return 0;
+}
+```
+- `%d` 表示格式化整数,`&a` 是地址符,表示把输入值存入变量 a。
+
+---
+
+### ✅ 赋值语句
+```cpp
+int x;
+x = 10;
+```
+- 把右边的表达式结果赋值给左边的变量。
+
+---
+
+### ✅ 复合语句(代码块)
```cpp
{
- int a = 1;
- int b = 2;
+ int a = 5;
+ int b = 6;
cout << a + b << endl;
}
```
+- 大括号 `{}` 包裹的是复合语句,表示多个语句作为一个整体执行。
---
-## 🔀选择结构语句
-
-程序根据条件不同,执行不同的操作路径,这类语句称为“选择结构”。
-
-### 1. if 语句
-
-用于根据条件判断是否执行某些语句。
+## 【2】条件语句(选择结构)
+### ✅ if 语句
```cpp
-if (a >= 60) {
+int score = 85;
+if (score >= 60) {
+ cout << "及格" << endl;
+}
+```
+
+### ✅ if-else 语句
+```cpp
+if (score >= 90) {
+ cout << "优秀" << endl;
+} else {
+ cout << "继续努力" << endl;
+}
+```
+
+### ✅ 多层 if-else
+```cpp
+if (score >= 90) {
+ cout << "优秀";
+} else if (score >= 75) {
+ cout << "良好";
+} else if (score >= 60) {
cout << "及格";
} else {
cout << "不及格";
}
```
-#### 多条件判断
+---
+### ✅ switch 语句
```cpp
-if (score >= 90) {
- cout << "优秀";
-} else if (score >= 80) {
- cout << "良好";
-} else {
- cout << "继续加油";
-}
-```
-
-### 2. switch 语句
-
-适用于“固定选项”的多分支判断。
-
-```cpp
-int op = 2;
-switch (op) {
+int option = 2;
+switch(option) {
case 1:
- cout << "选项1";
+ cout << "选项一";
break;
case 2:
- cout << "选项2";
+ cout << "选项二";
break;
default:
cout << "无效选项";
}
```
-
-### 3. 多层条件语句(嵌套)
-
-```cpp
-if (x > 0) {
- if (x % 2 == 0) {
- cout << "正偶数";
- } else {
- cout << "正奇数";
- }
-} else {
- cout << "非正数";
-}
-```
+- `switch` 适用于整型、字符型变量。
+- 每个 `case` 后面用 `break` 防止穿透执行。
---
-## 🔁循环结构语句
-
-循环语句用于让程序重复执行某些操作。
-
-### 1. for 语句(已知次数)
+## 【2】循环语句(重复结构)
+### ✅ for 循环
```cpp
-for (int i = 1; i <= 5; i++) {
+for (int i = 0; i < 5; i++) {
cout << i << " ";
}
```
+- 固定次数循环,通常用于计数。
-结构包含三部分:
-- 初始化:`int i = 1`
-- 条件判断:`i <= 5`
-- 更新表达式:`i++`
-
-### 2. while 语句(先判断再执行)
+---
+### ✅ while 循环
```cpp
-int i = 1;
-while (i <= 5) {
+int i = 0;
+while (i < 5) {
cout << i << " ";
i++;
}
```
+- 先判断再执行,适用于条件满足才循环的情况。
-若初始条件不成立,则一次都不执行。
-
-### 3. do while 语句(先执行后判断)
+---
+### ✅ do while 循环
```cpp
-int i = 1;
+int i = 0;
do {
cout << i << " ";
i++;
-} while (i <= 5);
+} while (i < 5);
```
-
-不管条件如何,至少执行一次。
+- 至少执行一次,再判断条件。
---
-## 🔃多层循环语句(嵌套循环)
-
-循环内部再嵌套一个循环,称为“多层循环”,适用于图形输出、二维数组、表格处理等。
-
-### 示例:打印矩形
-
-```cpp
-for (int i = 1; i <= 3; i++) {
- for (int j = 1; j <= 5; j++) {
- cout << "* ";
- }
- cout << endl;
-}
-```
-
-输出:
-
-```
-* * * * *
-* * * * *
-* * * * *
-```
-
-### 示例:九九乘法表
+## 【3】多层循环语句
+### ✅ 二重循环示例:九九乘法表
```cpp
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
- cout << j << "*" << i << "=" << j*i << "\t";
+ cout << j << "*" << i << "=" << i * j << "\t";
+ }
+ cout << endl;
+}
+```
+- 外层控制行数,内层控制列数。
+- 多层嵌套常用于处理二维数据(如矩阵、图形、表格等)。
+
+---
+
+### ✅ 实际应用:输出矩阵所有元素
+```cpp
+int matrix[2][3] = {
+ {1, 2, 3},
+ {4, 5, 6}
+};
+
+for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < 3; j++) {
+ cout << matrix[i][j] << " ";
}
cout << endl;
}
```
-输出:
-
-```
-1*1=1
-1*2=2 2*2=4
-1*3=3 2*3=6 3*3=9
-...
-```
-
---
-## 🧩 小结表
-
-| 功能类别 | 相关语句 | 描述 |
-|----------|-----------|------|
-| 输入语句 | `cin`, `scanf` | 从用户获取数据 |
-| 输出语句 | `cout`, `printf` | 向屏幕输出数据 |
-| 赋值语句 | `=` | 设置变量的值 |
-| 条件语句 | `if`, `switch`, 嵌套 `if` | 根据条件决定执行路径 |
-| 循环语句 | `for`, `while`, `do while` | 实现重复执行 |
-| 多层循环 | `for` 嵌套 `for` 等 | 实现二维结构处理 |
+## ✅ 小结
+- `cin/cout` 和 `scanf/printf` 是基础输入输出方式。
+- `if`、`switch` 用于做出选择。
+- `for`、`while`、`do while` 是常用循环方式。
+- 多层嵌套循环用于复杂数据结构处理。
+- 编写循环时要注意终止条件,防止死循环。