Initial commit: C++ courseware
This commit is contained in:
commit
4a4ee7c287
1789 files changed
+373489
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,151 @@
|
||||
# C++ 数学运算与在线评测 讲义
|
||||
|
||||
## 一、 双引号 —— 复读机
|
||||
|
||||
在开始让计算机进行数学运算前,我们必须先记住 `cout` 输出时的规则——**双引号的作用**。
|
||||
|
||||
- **带有双引号 `""`**:计算机将其视为**纯文本**。无论里面写了什么(就算是数学公式),编译器都会像复读机一样原样输出。
|
||||
- **没有双引号**:计算机将其视为**数学公式**。编译器会在后台先计算出精确结果,然后再将结果输出。
|
||||
|
||||
> `cout` 完全可以输出数学运算的结果,前提是**不要**给算式加双引号。
|
||||
|
||||
------
|
||||
|
||||
## 二、 基础运算与编程题目(书本 P4 页 例 1-2)
|
||||
|
||||
**题目回顾(书本 P4 页):** 10 个苹果,小 A 拿走 2 个,Uim 拿走 4 个,八尾勇拿走剩下的。求:①小 A 和 Uim 共拿走多少?②八尾勇拿走多少?(要求:输出两个数字,中间用空格隔开)。
|
||||
|
||||
### 1. 任务拆解与算式转化
|
||||
|
||||
- **第一问**:小 A 和 Uim 一共拿走的数量 $\rightarrow$ 转化为算式:`2 + 4`
|
||||
- **第二问**:八尾勇拿走剩下的数量 $\rightarrow$ 转化为算式:`10 - 2 - 4`
|
||||
|
||||
### 2. 书写代码
|
||||
|
||||
我们的目标是输出,因此必须调用 `cout` 工具。因为要输出两个数字,我们就可以把两个答案拼在一起:
|
||||
|
||||
- **答案一**:`2 + 4`
|
||||
- **分隔符**:`" "`(注意:空格是纯文本,**必须**用双引号包裹,让编译器原样输出)
|
||||
- **答案二**:`10 - 2 - 4`
|
||||
|
||||
**代码语句:**
|
||||
|
||||
```C++
|
||||
cout << 2 + 4 << " " << 10 - 2 - 4;
|
||||
```
|
||||
|
||||
*最后将这行核心的逻辑填入到 `int main() { ... }` 的大括号内部即可完成代码编写。*
|
||||
|
||||
------
|
||||
|
||||
## 三、 实战:将本题代码提交至 OJ 系统 (zmwl.online)
|
||||
|
||||
代码在本地电脑(Dev-C++)运行成功后,我们需要将其提交给**在线评测系统(OJ,考官)进行打分**,在之后的考试或者竞赛中,都是通过将代码提交到在线评测系统中打分的方式来获取成绩。
|
||||
|
||||
### 步骤 1:本地验证
|
||||
|
||||
在正式提交前,先在本地按下 **F11** 观察 Dev-C++ 的控制台。我们通过数学运算能知道最终的答案是 `6` 与 `4`,而题目要求的格式是输出两个数字,中间用空格隔,所以最终显示的数字必须是 `6 4`,不能有多余的数据或标点。
|
||||
|
||||
### 步骤 2:登录
|
||||
|
||||
1. **打开网站**:浏览器地址栏输入 `zmwl.online` 并回车。
|
||||
2. **账号登录**:输入用户名,初始密码统一为 `zmwl0000`。
|
||||
3. **寻找考题**:点击上方“题库”,在列表中点击编号为 **B0001** 的题目进入详情页。
|
||||
|
||||
### 步骤 3:代码复制搬运 (快捷键操作)
|
||||
|
||||
切换回 Dev-C++ 软件窗口,执行以下键盘指令:
|
||||
|
||||
- **全选**:按住 **Ctrl** 键不放,按 **A** 键。(代码区背景变蓝,全部圈中)
|
||||
- **复制**:按住 **Ctrl** 键不放,按 **C** 键。(代码存入电脑的剪贴板中)
|
||||
|
||||
### 步骤 4:递交与查收结果
|
||||
|
||||
1. **准备粘贴**:回到浏览器 B0001 题目页,点击“**递交**”按钮,进入一个大空白输入框。
|
||||
2. **执行粘贴**:鼠标左键点击空白框确保光标闪烁,按住 **Ctrl** 键不放,按 **V** 键。
|
||||
3. **提交检验**:确认代码无误后,点击系统底部的递交按钮,等待系统判定正误。
|
||||
|
||||
------
|
||||
|
||||
## 四、 C++ 的特殊数学法则:除法与取余
|
||||
|
||||
C++ 中的加、减、乘以及运算优先级与小学数学一致,但**除法 (`/`)** 存在差异。
|
||||
|
||||
### 1. 除法 (`/`) 的两种形态
|
||||
|
||||
| **形态** | **触发条件** | **运算规则** | **代码示例** | **输出结果** |
|
||||
| -------------- | ------------------------ | ------------------------------------ | ------------------ | ------------ |
|
||||
| **整数相除** | 除数和被除数**都是整数** | 小数部分被**直接截断**(不四舍五入) | `cout << 7 / 2;` | **3** |
|
||||
| **浮点数相除** | 至少有一个数是**小数** | 自动开启浮点除法,保留小数部分 | `cout << 7.0 / 2;` | **3.5** |
|
||||
|
||||
> **总结:**
|
||||
>
|
||||
> 1. 整数乘/除一个浮点数,结果是浮点数。
|
||||
>
|
||||
> 2. 整数加上一个浮点数,结果也是浮点数。
|
||||
>
|
||||
> *(例:6 元和 5 元平分,算式应写为 `(6 + 5) / 2.0` 以获取精确的小数结果)*
|
||||
|
||||
### 2. 取余运算 (`%`)
|
||||
|
||||
百分号 `%` 在 C++ 中是**取模运算(求余数)**。
|
||||
|
||||
- **`/` 关心商**:每个人平均分到几个?
|
||||
- **`%` 关心余数**:大家都分完一样多后,还剩下几个?
|
||||
|
||||
**例 1-3 分苹果(题目编号 B0002,书本 P6 页):**
|
||||
|
||||
14 个苹果均分给 4 名同学。
|
||||
|
||||
```C++
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
int main(){
|
||||
cout << 14 / 4 << endl; // 每人分得几个? (输出 3)
|
||||
cout << (14 / 4) * 4 << endl; // 一共分出去多少?(输出 12)
|
||||
cout << 14 % 4 << endl; // 放回冰箱几个(即求余数)?(输出 2)
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
------
|
||||
|
||||
## 五、 科学表示法与数学工具调用
|
||||
|
||||
### 1. 科学计数法(例 1-5)
|
||||
|
||||
在 C++ 中处理极大或极小的数字时,经常遇到包含字母 `e` 的表示法:
|
||||
|
||||
- `5e6` 代表 $5 \times 10^6$(即 5000000)。
|
||||
- `5e-6` 代表 $5 \times 10^{-6}$(即 0.000005)。
|
||||
|
||||
### 2. 物理与几何题(例 1-6 & 例 1-7)
|
||||
|
||||
- **火车相遇问题(例 1-6)**:纯基础运算。相对速度与相对距离公式 $\rightarrow$ `cout << (260 + 220) / (12 + 20);`
|
||||
- **对角线问题(例 1-7)**:长宽为 6 和 9 的长方形,根据勾股定理求对角线 $\sqrt{6^2+9^2}$。
|
||||
|
||||
### 3. 引入高级数学工具:`<cmath>`
|
||||
|
||||
C++ 内部预制了大量可以直接使用的数学工具(函数)。要使用它们,**必须在基础代码顶部加上 `#include <cmath>`**。
|
||||
|
||||
- **开平方工具:`sqrt()`**
|
||||
- **用法**:把需要开根号的数字丢进括号里。
|
||||
- **示例**:`cout << sqrt(9);` (输出 3)
|
||||
- **求次方工具:`pow(x, y)`**
|
||||
- **用法**:计算 $x$ 的 $y$ 次方,数字之间用逗号隔开。
|
||||
- **示例**:`cout << pow(2, 3);` (计算 $2^3$,输出 8)
|
||||
|
||||
**例1-7 对角线问题代码:**
|
||||
|
||||
```C++
|
||||
#include <iostream>
|
||||
#include <cmath> // 必须引入数学的工具箱
|
||||
using namespace std;
|
||||
|
||||
int main(){
|
||||
// 计算过程:先算出 6 的 2 次方加上 9 的 2 次方,再对总和进行开根号
|
||||
cout << sqrt(pow(6, 2) + pow(9, 2)) << endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
### 参考答案
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. `5 + 3`
|
||||
2. `8`
|
||||
3. `4`
|
||||
4. `1`
|
||||
5. `4.5`
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
1. **(B)** (带双引号,原样输出)
|
||||
2. **(A)** (没有双引号,计算结果)
|
||||
3. **(C)** (整数除法,`13 / 5` 商2余3,结果为2)
|
||||
4. **(C)**
|
||||
5. **(C)** (至少有一个数是小数,才能触发浮点数除法)
|
||||
6. **(B)** (先计算 `2+4` 得 `6`,然后输出空格,再计算 `10-2-4` 得 `4`)
|
||||
7. **(B)**
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
1. **(×)** (带双引号会原样输出 "3 * 4")
|
||||
2. **(√)** (讲义中明确指出是“直接截断”,不四舍五入)
|
||||
3. **(√)** (这是触发浮点数除法的条件)
|
||||
4. **(×)** (讲义中强调,提交前最好先在本地验证)
|
||||
5. **(√)** (这是 `%` 运算符的定义)
|
||||
6. **(×)** (这是求余数,`5` 除以 `2` 商 `2` 余 `1`,结果是 `1`)
|
||||
7. **(√)** (空格是文本,需要用双引号包围)
|
||||
@@ -0,0 +1,89 @@
|
||||
### C++ 数学运算与评测 课后习题
|
||||
|
||||
姓名: _________________________________________________________
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 代码 `cout << "5 + 3";` 的输出结果是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
2. 代码 `cout << 5 + 3;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
3. 在 C++ 中,两个整数相除得到的结果会\_\_\_\_\_\_\_\_\_\_\_(填写 舍弃/保留)小数。
|
||||
4. `%` 符号在 C++ 中的意义是:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
5. `cout << 9 / 2;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_。
|
||||
6. `cout << 15 / 2.0;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_。
|
||||
7. `cout << 9 % 2;` 的输出结果是:\_\_\_\_\_\_\_\_\_\_。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 执行 `cout << "10 / 2";` 后,屏幕上会显示什么?
|
||||
A. `5` B. `10 / 2` C. `10/2` D. `2`
|
||||
|
||||
( ) 2. 执行 `cout << 10 / 2;` 后,屏幕上会显示什么?
|
||||
A. `5` B. `10 / 2` C. `10/2` D. `2`
|
||||
|
||||
( ) 3. 执行 `cout << 13 / 5;` 后,屏幕上会显示什么?
|
||||
A. `3` B. `2.6` C. `2` D. `1`
|
||||
|
||||
( ) 4. 在 C++ 中,`%` 运算符代表什么?
|
||||
A. 百分比 B. 除法 C. 取余数 D. 乘法
|
||||
|
||||
( ) 5. 如何计算 `10` 除以 `4` 才能得到带有小数的结果 `2.5`?
|
||||
A. `cout << 10 / 4;`
|
||||
B. `cout << 10 % 4;`
|
||||
C. `cout << 10.0 / 4;`
|
||||
D. `cout << "10 / 4";`
|
||||
|
||||
( ) 6. 对于代码代码是 `cout << 2 + 4 << " " << "10 - 2 - 4";`,它的最终输出结果是?
|
||||
A. `6 10-2-4` B. `6 4` C. `64` D. `6, 4`
|
||||
|
||||
( ) 7. 在线评测系统 (OJ) 的主要作用是什么?
|
||||
A. 帮助我们写代码的软件
|
||||
B. 用来运行和评判我们代码对错的“考官”
|
||||
C. 一个只能存储代码的网站
|
||||
D. C++ 的一个内置功能
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
( ) 1. `cout << "3 * 4";` 这行代码会输出 12。
|
||||
( ) 2. 整数除法 `7 / 3` 的结果是 `2`,因为小数部分被直接舍弃,而不是四舍五入。
|
||||
( ) 3. 在 C++ 中,只要除法算式中有一个数字是小数(如 `5.0 / 2`),计算结果就会保留小数。
|
||||
( ) 4. 把代码提交到在线评测系统(OJ)之前,不需要在自己的电脑上运行测试。
|
||||
( ) 5. `%` 运算符可以用来计算一个数除以另一个数的余数。
|
||||
( ) 6. `cout << 5 % 2;` 的结果是 2.5。
|
||||
( ) 7. 在 `cout` 语句中,如果想输出一个空格,必须写成 `cout << " ";`。
|
||||
|
||||
#### **四、 默写题**
|
||||
|
||||
请在下方的空白处,默写出基本程序的框架代码,并简要说明每一句代码的意义。
|
||||
|
||||
```cpp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user