Files
project1/第04课-C++自带函数与数学处理/教案-学生版.md

182 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第1课C++自带函数
## 教学目标
- 学会查阅和使用C++标准库自带函数
- 掌握 `<cmath>``<algorithm>``<cctype>` 三个常用头文件
- 能用自带函数解决计算问题,体会"站在巨人的肩膀上"
## 核心考点:正确选择并使用标准库函数
### 考什么
根据题目任务选择正确的________同时写对________、参数和返回值。
### 必须理解
调用函数要过三关它属于哪个________传入什么________返回什么________。
### 核心写法
```cpp
#include <________> // sqrt、pow
#include <________> // max、min、swap
double ans = ________(x);
int ma = ________(a, b);
```
### 常见错误
- `pow` 的返回结果能否一律当作精确整数________________
### 判断是否掌握
- [ ] 我能根据任务说出函数名和头文件。
- [ ] 我能解释函数参数与返回值的含义。
- [ ] 我能独立写出正确的调用语句。
---
## 函数速查表
### 一、数学计算函数(头文件:`______`
| 函数 | 参数 | 返回值 | 示例 | 说明 |
|------|------|--------|------|------|
| `sqrt(x)` | x — __________ | __________ — x 的平方根 | `sqrt(16)``___` | 开根号 |
| `abs(x)` | x — __________ | __________ — x 的绝对值 | `abs(-5)``___` | 去掉负号 |
| `pow(a, b)` | a — ______b — ______ | __________ — a 的 b 次方 | `pow(2, 3)``___` | aᵇ |
### 二、最值与交换函数(头文件:`______`
| 函数 | 参数 | 返回值 | 示例 | 说明 |
|------|------|--------|------|------|
| `max(a, b)` | 两个 __________ 的值 | __________ — 较大值 | `max(3, 7)``___` | 两数取大 |
| `min(a, b)` | 两个 __________ 的值 | __________ — 较小值 | `min(3, 7)``___` | 两数取小 |
| `swap(a, b)` | 两个 __________ 的**变量** | ________(无返回值) | `swap(x, y)`__________ | 交换两变量的值 |
### 三、字符判断函数(头文件:`______`
| 函数 | 参数 | 返回值 | 示例 | 说明 |
|------|------|--------|------|------|
| `isalpha(c)` | c — __________ | ____ — 是字母返回 `true` | `isalpha('A')``____` | 判断是否为字母 |
| `isdigit(c)` | c — __________ | ____ — 是数字返回 `true` | `isdigit('5')``____` | 判断是否为数字 |
| `islower(c)` | c — __________ | ____ — 是小写字母返回 `true` | `islower('a')``____` | 判断是否为小写 |
| `isupper(c)` | c — __________ | ____ — 是大写字母返回 `true` | `isupper('A')``____` | 判断是否为大写 |
### 四、字符转换函数(头文件:`______`
| 函数 | 参数 | 返回值 | 示例 | 说明 |
|------|------|--------|------|------|
| `tolower(c)` | c — __________ | ____ — 对应的小写字母 ASCII 码 | `tolower('A')``___` | 大写转小写 |
| `toupper(c)` | c — __________ | ____ — 对应的大写字母 ASCII 码 | `toupper('a')``___` | 小写转大写 |
---
## 课堂编程题
### 课堂1三点中最近的一对【适中】
**题目描述:** 输入平面上三个点的坐标,求三对点之间的最短距离,结果保留两位小数。要求使用 `sqrt``pow``min`
**输入格式:** 输入六个实数,依次表示三个点的横坐标和纵坐标。
**输出格式:** 输出最短距离,保留两位小数。
**数据范围:** 每个坐标的绝对值不超过 1000。
**输入样例:**
```text
0 0 3 4 0 2
```
**输出样例:**
```text
2.00
```
**解题思路:** 用勾股定理分别求出三段距离,再用 `min` 取最小值。
**易错提醒:** `sqrt` 返回浮点数;格式化输出需要包含 `<iomanip>`
---
### 课堂2整理三个数【适中】
**题目描述:** 输入三个整数,第一行输出最大值和最小值;再使用 `swap` 将三个变量调整为升序,第二行输出调整结果。
**输入格式:** 输入三个整数。
**输出格式:** 第一行输出最大值和最小值;第二行输出升序结果。
**数据范围:** `-10^9≤a,b,c≤10^9`
**输入样例:**
```text
8 2 5
```
**输出样例:**
```text
8 2
2 5 8
```
**解题思路:** 用嵌套的 `max``min` 求最值;再进行三次相邻比较,需要时调用 `swap`
**易错提醒:** `swap` 的参数必须是两个变量,不能传入 `a+b` 这样的表达式。
---
### 课堂3去掉最高分和最低分【适中】
**题目描述:** 输入若干个评委分数,去掉一个最高分和一个最低分,输出剩余分数之和。不得使用排序。
**输入格式:** 第一行输入评委人数;第二行输入所有评委给出的分数。
**输出格式:** 输出剩余分数之和。
**数据范围:** `3≤n≤100`,分数为 `0100`
**输入样例:**
```text
5
9 7 10 8 6
```
**输出样例:**
```text
24
```
**解题思路:** 遍历时同时计算总分、最高分和最低分,最后用总分减去两个极值。
**易错提醒:** 最高分和最低分要用第一个合法分数初始化;即使最高分重复,也只去掉一个。
---
### 课堂4字符身份证【适中】
**题目描述:** 输入一个可见字符。若为字母,输出 `LETTER` 和相反大小写的字符;若为数字,输出 `DIGIT`;否则输出 `OTHER`
**输入格式:** 一个可见字符。
**输出格式:** 按题目要求输出。
**数据范围:** 标准 ASCII 可见字符。
**输入样例:**
```text
G
```
**输出样例:**
```text
LETTER g
```
**解题思路:**`isalpha``isdigit` 分类,用 `islower``isupper` 判断大小写,再调用 `toupper``tolower` 转换。
**易错提醒:** `tolower``toupper` 返回的是字符编码,输出字符时应转换为 `char`
---
## 课后作业
> 请完成本课对应的课后作业,见编程题文件。