5.7 KiB
第1课:C++自带函数
教学目标
- 学会查阅和使用C++标准库自带函数
- 掌握
<cmath>、<algorithm>、<cctype>三个常用头文件 - 能用自带函数解决计算问题,体会"站在巨人的肩膀上"
核心考点:正确选择并使用标准库函数
考什么
根据题目任务选择正确的________,同时写对________、参数和返回值。
必须理解
调用函数要过三关:它属于哪个________;传入什么________;返回什么________。
核心写法
#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。
输入样例:
0 0 3 4 0 2
输出样例:
2.00
解题思路: 用勾股定理分别求出三段距离,再用 min 取最小值。
易错提醒: sqrt 返回浮点数;格式化输出需要包含 <iomanip>。
课堂2:整理三个数【适中】
题目描述: 输入三个整数,第一行输出最大值和最小值;再使用 swap 将三个变量调整为升序,第二行输出调整结果。
输入格式: 输入三个整数。
输出格式: 第一行输出最大值和最小值;第二行输出升序结果。
数据范围: -10^9≤a,b,c≤10^9。
输入样例:
8 2 5
输出样例:
8 2
2 5 8
解题思路: 用嵌套的 max、min 求最值;再进行三次相邻比较,需要时调用 swap。
易错提醒: swap 的参数必须是两个变量,不能传入 a+b 这样的表达式。
课堂3:去掉最高分和最低分【适中】
题目描述: 输入若干个评委分数,去掉一个最高分和一个最低分,输出剩余分数之和。不得使用排序。
输入格式: 第一行输入评委人数;第二行输入所有评委给出的分数。
输出格式: 输出剩余分数之和。
数据范围: 3≤n≤100,分数为 0~100。
输入样例:
5
9 7 10 8 6
输出样例:
24
解题思路: 遍历时同时计算总分、最高分和最低分,最后用总分减去两个极值。
易错提醒: 最高分和最低分要用第一个合法分数初始化;即使最高分重复,也只去掉一个。
课堂4:字符身份证【适中】
题目描述: 输入一个可见字符。若为字母,输出 LETTER 和相反大小写的字符;若为数字,输出 DIGIT;否则输出 OTHER。
输入格式: 一个可见字符。
输出格式: 按题目要求输出。
数据范围: 标准 ASCII 可见字符。
输入样例:
G
输出样例:
LETTER g
解题思路: 用 isalpha、isdigit 分类,用 islower 或 isupper 判断大小写,再调用 toupper 或 tolower 转换。
易错提醒: tolower 和 toupper 返回的是字符编码,输出字符时应转换为 char。
课后作业
请完成本课对应的课后作业,见编程题文件。