# 【知识精讲】数学函数
## Part1
在 C 语言(没错,就是 C 语言)的数学(math)函数库中,有很多不同的数学函数—— C++ 语言完整继承了 C 语言的绝大多数库,其中就包括 math 库。在使用的时候,直接引用即可。需要说明的是,学过 C 语言的同学可能会注意到 C 语言中引用 math 库时的文件名是`math.h`,虽然在 C++ 语言中,你依然可以这么写,但是更好的写法应该是`cmath`——所有继承的 C 库,在 C++ 中都应该这么写,即以`c某某某`的名字引入。
刚才小渡和你已经一起学习了一下 `pow` 函数(其实它的名字是 power 的缩写),现在让我们一起来再学习一下绝对值函数、三角函数、对数函数、取整函数、平方根函数这些数学函数在 C 语言中的使用。
## Part2
**绝对值函数**
在 C 语言中有两个常用的绝对值函数,分别是 `abs` 函数和 `fabs` 函数。
其中 `abs` 函数传入的参数需要是一个整数,返回的结果则会是这个传入的整数的绝对值。例如, `abs(-4)`的返回值会是 444。
而 `fabs` 函数,就明显是一个起名很友好的函数,其中 `f` 表示了浮点数。所以它是一个类似于`abs`函数,但传入的参数是浮点数的函数——当然,返回的结果就是所传入的浮点数的绝对值。例如,`fabs(-3.14)`的返回值会是 3.143.143.14,`fabs(2.7)`的返回值会是 2.72.72.7。
就像我们上面介绍的那样,C++ 语言几乎实现了对 C 语言的源码级兼容——所以你仍然可以使用这两个函数。但是因为 C++ 语言支持一种名为**函数重载**的特性,所以你可以直接使用`abs`函数来计算多种形式的数字——包括整数和浮点数。关于函数重载的详细内容,我们将会在后续课程中向大家介绍。
## Part3
**三角函数**
在`cmath`数学库中,包含了我们常用的三角函数:正弦 `sin`、余弦 `cos`、正切 `tan`、反正弦 `asin`、反余弦 `acos`、反正切 `atan`。它们都接受一个(双精度)浮点数值作为传入的参数,返回的则是对应的数学定义上的三角函数被应用在传入的浮点数值后的结果,类型也是(双精度)浮点数。
例如, `tan(3.1415926535/4)` 的返回值是 1.0000001.0000001.000000,`acos(0.32696)` 的返回值是 1.2377111.2377111.237711。
## Part4
**对数函数**
对于以 e 为底的对数函数 lnx ,`cmath`数学库中提供了名为 `log` 的函数;而对于以 10 为底的对数函数,数学库中则提供了一个名为 `log10` 的函数。
与三角函数类似,它们都接受一个(双精度)浮点数值作为传入的参数,返回的也都是对应的数学定义上的相应对数函数被应用在传入的浮点数值后的结果,类型也是(双精度)浮点数。
例如,`log(2.71828)` 的返回值是 0.999999,而 `log10(100)` 的返回值是 2.000000。
## Part5
在数学库中还有**上取整函数**(天花板函数)`ceil` 和**下取整函数**(地板函数)`floor`。它们接受一个(双精度)浮点数值作为传入的参数,返回的也都是对应的数学定义上的相应上、下取整后的浮点数结果。例如,`floor(2.7)` 的结果会是 2.0000002.0000002.000000,`ceil(-3.2)`的结果会是 −3.000000\-3.000000−3.000000。
另外,数学库中还有一个求平方根的函数 `sqrt`。它接受一个(双精度)浮点数值作为传入的参数,返回的也都是对应的数学定义上的浮点数结果。例如,`sqrt(42.25)`的结果会是 6.5000006.5000006.500000。
接下来的课程中,我们可就要试着使用这些数学函数了喔!
## Part6
- 教材介绍
- 《编程初学入门常识》
- 什么是程序语言
- 【知识精讲】编程与编程语言
- 【选择测试】编程语言分类
- 【知识精讲】高级语言分类
- 【选择测试】编译与解释
- 【选择测试】程序员笑话-Java
- 熟悉键盘上用于编程的键位
- 【知识精讲】认识你的键盘
- 【知识精讲】中文和英文字符
- 【匹配测试】识别中英文符号
- 【选择测试】中英文符号的影响
- 【伴随编程】不要使用中文引号
- 【伴随编程】不要使用中文分号
- 【伴随编程】正确地输入符号
- 【选择测试】找出程序中的错误
- 初始工程师思维
- 【知识精讲】二进制思想
- 【选择测试】程序员笑话-凑整
- 【知识精讲】闭合的逻辑
- 【选择测试】程序员笑话-条件
- 程序员职业与生活
- 【知识精讲】程序员的发展方向
- 【知识精讲】程序员的装备
- 【知识精讲】程序员的健康
- 【选择测试】做一名健康的程序员
- 《C++程序设计》
- 前言
- 【知识精讲】编程与计算机科学
- 【知识精讲】编程与软件工程
- 【知识精讲】如何学习编程
- 你好C++
- 【知识精讲】你好,C++
- 【知识精讲】C++程序是如何开发的
- 【知识精讲】成为一名Power User
- 【伴随编程】让我们一起说你好
- 【知识精讲】你的第一个C++语言程序
- 【伴随命令】编译、运行你的程序
- 【伴随编程】将变量流式输出
- 【选择测试】变量的作用域
- 【知识精讲】变量与数据类型
- 【匹配测试】C++语言的入门概念
- 【知识精讲】在程序中学会换行
- 【选择测试】正确地换行
- 简单数学运算
- 【知识精讲】重新认识基本运算
- 【选择测试】运算符的理解
- 【伴随编程】做一下简单的运算
- 【伴随编程】a 的 n 次方
- 【知识精讲】数学函数
- 【伴随编程】让C++语言变成计算器
- 【伴随编程】计算球的体积
- 【匹配测试】数学世界知多少
- 【知识精讲】在程序中添加注释
- 【选择测试】正确地写注释
- 从伴随输入到变量地址
- 【伴随编程】 一个数字复读机器
- 【选择测试】理解标准输入输出
- 【伴随编程】一个加法计算器
- 【程序设计】A+B+C问题
- 【伴随编程】简单的I/O格式控制
- 【知识精讲】地址与取地址符
- 【伴随编程】看看我们的地址
- 习题一:面积与周长
- 【程序设计】矩形面积与周长
- 【程序设计】三角形面积与周长
- 【程序设计】圆形面积与周长
- 程序中的是与非
- 【知识精讲】是非的表示与关系运算
- 【伴随编程】验一验关系运算式
- 【选择测试】关系运算式求值
- 【知识精讲】如果的意义
- 【伴随编程】分段函数求值
- 【知识精讲】如果之后的如果
- 【伴随编程】五则运算器
- 【选择测试】分支的嵌套
- 【伴随编程】问号表达式
- 【知识精讲】是非之间的逻辑组合
- 【伴随编程】判断闰年
- 【程序设计】日期合法性
- 【知识精讲】多路顺序结构
- 【知识精讲】在程序中学会缩进
- 【选择测试】正确的缩进
- C++程序中的苦力
- 【知识精讲】使用循环结构
- 【选择测试】对比两种循环
- 【伴随编程】使用while循环
- 【填空测试】理解循环结构
- 【知识精讲】自减和自增运算符
- 【伴随编程】使用自增运算符
- 【知识精讲】for循环
- 【选择测试】for循环的使用
- 【程序设计】一大波好玩儿的程序
- 《代码能力快速提升》
- 《基础数据结构》
- 《搜索入门》
- 《动态规划基础》
- 《数论和基础数学》
- 《图和数基础》