🧮 数学函数
abs 求绝对值、sqrt 开平方、max/min 比大小、rand 掷骰子!这些现成的「数学小工具」藏在 <cmath> 里,拿来就能用。
考纲知识点:绝对值函数:abs()
平方根函数:sqrt()
最大值函数:max()
最小值函数:min()
随机数函数:rand()/srand()及相关
平方根函数:sqrt()
最大值函数:max()
最小值函数:min()
随机数函数:rand()/srand()及相关
📖
考纲 · 知识点详述
摘自《CCF编程能力等级认证 C++&Python 认证标准》C++ 二级
- (9)掌握常用的数学函数:绝对值函数、平方根函数、最大值函数、最小值函数、随机数函数理解相应的算法原理。
📚
先学一学
花 5 分钟读完下面 5 课,再去闯关就不慌啦
1
📏 绝对值 abs 与平方根 sqrt
C++ 自带数学函数(用前先 #include <cmath>)。先认识两个最常用的:
- 📏abs(x) 绝对值:不问方向,只看离 0 多远,abs(-7)=7、abs(7)=7。
- √sqrt(x) 平方根:sqrt(81)=9(因为 9×9=81)、sqrt(16)=4。
🌟 小发现:abs(i) 当条件
while (abs(i)) 和 while (i != 0) 效果一样——i 非 0 时 abs(i) 也非 0(真),i 为 0 时 abs(i) 也是 0(假)。(真题判断:正确)
💡 口诀:abs 不问方向,sqrt 开平方;abs(i)≠0 等价于 i≠0。
⚠️ 浮点比较:别用 == 直接比
判断两个实数 a、b 是否「相等」,要看差够不够小:abs(a - b) <= 1e-6(差不超过一百万分之一就算相等)。直接用 a == b 会因浮点误差出错(真题:选 abs(a-b)<=1e-6)。
💡 口诀:浮点别用 ==,用 abs(a-b)<=1e-6。
2
🔼 最大值 max 与最小值 min
- 🔼max(a,b) 取大的:max(12,8)=12。
- 🔽min(a,b) 取小的:选两个数里更小的那个。
🌟 小发现
如果 max(a,b) 和 min(a,b) 相等,说明这两个数一样大(a = b)。(真题判断:正确)
💡 口诀:max 挑大、min 挑小;max=min 说明两数相等。
🆚 易混对比:max/min 与 abs
· max/min 是「两个数比大小」,挑出更大/更小那个。
· abs 是「一个数去符号」,看离 0 多远。
别把 max(-7, 3)(=3)和 abs(-7)(=7)搞混。
· abs 是「一个数去符号」,看离 0 多远。
别把 max(-7, 3)(=3)和 abs(-7)(=7)搞混。
💡 口诀:max/min 比两数,abs 管一个数。
3
🧰 取整家族与幂函数
除了 abs/sqrt,还有一组常用的「取整」和「幂」函数(都在 <cmath> 里):
- ⬇️floor(x) 向下取整:floor(3.7)=3、floor(-2.3)=-3。
- ⬆️ceil(x) 向上取整:ceil(3.2)=4、ceil(5.0)=5。
- ⏺️round(x) 四舍五入:round(2.6)=3、round(2.4)=2。
- 💥pow(a, b) 幂:pow(2, 3)=8(2 的 3 次方),pow(10, 2)=100。
🆚 易混对比:floor / ceil / round 三兄弟
对 3.7:floor 往小取=3,ceil 往大取=4,round 四舍五入=4。正数好懂,负数要小心:floor(-2.3) 往更小取是 -3(不是 -2)。
💡 口诀:floor 向下、ceil 向上、round 四舍五入;pow 是乘方。
4
📐 三角函数:sin / cos / tan
数学函数里还有一族三角函数(都在 <cmath> 里),做图形和动画特别有用:
- 📈sin(x) 正弦、cos(x) 余弦、tan(x) 正切。
- ⚠️注意:C++ 里的角度要换成弧度!sin(3.14159/2) ≈ 1(即 90° 的正弦)。
📝 跟着算一算
sin(0) = 0
cos(0) = 1
sin(π/2) ≈ 1 (π≈3.14159)
cos(0) = 1
sin(π/2) ≈ 1 (π≈3.14159)
弧度 = 角度 × π / 180。想算 30° 的正弦要先转成 30×π/180。
💡 口诀:sin/cos/tan 用弧度;角度先乘 π/180 再算。
🌟 行业实际:游戏与动画离不开它
超级玛丽跳跃的抛物线、植物大战僵尸里豌豆的飞行角度、屏幕上的旋转和波浪效果,背后都是 sin/cos/tan 在算坐标。你玩的每一款游戏,都在悄悄调用三角函数!
💡 口诀:动画旋转靠三角,游戏世界它的舞台。
5
🎲 随机数 rand/srand 与完全平方数
- 🎲rand() 会给出一个很大的随机整数。
- 🎯想要 1~10:rand() % 10 + 1(先取余得 0~9,再加 1 → 1~10);想要 1~6 骰子:rand() % 6 + 1。
- 🌱srand(种子) 负责「播种子」:每换一个种子,rand() 给的数列就不同;不播种子每次会得同一串。
⚠️ 范围公式
rand() % n + m 得到的是 m ~ (m + n - 1) 的整数(n 是「个数」,m 是「起点」)。如 rand() % 10 + 1 → 1~10,rand() % 6 + 1 → 1~6(真题:选 rand()%10+1)。
💡 口诀:rand()%n+m → 范围 [m, m+n-1];想换花样先 srand 播种子。
□ 完全平方数:sqrt 取整平方回原值
一个数开平方后恰好是整数的,叫完全平方数。判断法:int(sqrt(n)) 取整后平方,看是否等于 n。如 sqrt(16)=4、4×4=16 → 是(真题判断:正确);int(sqrt(15))=3、3×3=9≠15 → 不是(真题判断:错误)。
💡 口诀:完全平方数 = sqrt 取整后平方回原值(16 是、15 不是)。
🎯
闯关小锦囊 · 考点提醒
- abs 绝对值(abs(-7)=7、abs(7)=7)、sqrt 平方根(sqrt(81)=9、sqrt(16)=4);用前需 #include <cmath>。
- max 取大(max(12,8)=12)、min 取小;max=min 说明两数相等(真题判断:正确)。取整家族:floor 向下、ceil 向上、round 四舍五入;pow(a,b) 是乘方(pow(2,3)=8)。
- 三角函数 sin/cos/tan 用弧度(角度先×π/180);广泛用于游戏动画坐标计算。
- 随机数:rand() % n + m 的范围是 [m, m+n-1](如 %10+1 → 1~10 正确、%6+1 → 1~6、%10 → 0~9、%11 → 0~10);srand 播种子让每次不同(不播则每回同一串)。
- 浮点别用 == 直接比,用 abs(a - b) <= 1e-6 判断相等(真题选此项)。
- 完全平方数:sqrt 取整后平方回原值(16 是、15 不是,真题均按此判断);abs(i) 当条件等价于 i != 0(i 非 0 真、0 假,真题判断:正确)。
🎮
学完了?来闯关!
下面 14 个小挑战,点一点就能玩
Demo 原型 · 每个知识点独立页面 · 暂不含真实编译与进度存储。