# 第1课:C++自带函数 ## 教学目标 - 学会查阅和使用C++标准库自带函数 - 掌握 ``、``、`` 三个常用头文件 - 能用自带函数解决计算问题,体会"站在巨人的肩膀上" ## 核心考点:正确选择并使用标准库函数 ### 考什么 根据题目任务选择正确的________,同时写对________、参数和返回值。 ### 必须理解 调用函数要过三关:它属于哪个________;传入什么________;返回什么________。 ### 核心写法 ```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` 返回浮点数;格式化输出需要包含 ``。 --- ### 课堂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`,分数为 `0~100`。 **输入样例:** ```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`。 --- ## 课后作业 > 请完成本课对应的课后作业,见编程题文件。