C语言和C++都提供了丰富的数学函数,这些函数主要定义在
<math.h>
(C语言)和<cmath>
(C++)头文件中。以下分别介绍C语言与C++共有的数学函数,以及C++特有的数学函数。
C语言与C++共有的数学函数(介绍格式为:函数原型+示例(C++版))
这些函数在C语言和C++中都可以使用,功能和用法完全一致。它们主要定义在C语言的
<math.h>
和C++的<cmath>
头文件中。
1. 基本数学运算
-
绝对值
-
int abs(int x);——
计算整数的绝对值。形参为int型,返回值为int 型 -
double fabs(double x);——
计算浮点数的绝对值。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {int a = -5;double b = -3.14;std::cout << abs(a) << std::endl;std::cout << fabs(b) << std::endl;return 0; }输出 5 3.14
-
-
平方根
-
double sqrt(double x);——
计算平方根。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {int a = 25.0;std::cout << sqrt(a) << std::endl;return 0; }输出 5
-
-
立方根
-
double cbrt(double x);——
计算立方根。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {int a = 125.0;std::cout << cbrt(a) << std::endl;return 0; } 输出 5
-
-
幂运算
-
double pow(double base, double exp);——
计算。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {int a = 5.0;std::cout << pow(a,3) << std::endl;return 0; }输出 125
-
2. 三角函数(这类函数不好用)
-
正弦
-
double sin(double x);——
计算 sin(x),其中 x 是弧度。形参为double型,返回值为double型 -
示例:
#include <cmath> int main() {double angle = M_PI / 2; // 90度std::cout << "sin(" << angle << ") = " << sin(angle) << std::endl;return 0; }
-
-
余弦
-
double cos(double x);——
计算 cos(x),其中 x 是弧度。形参为double型,返回值为double型 -
示例:
#include <cmath> int main() {double angle = M_PI; // 180度std::cout << "cos(" << angle << ") = " << cos(angle) << std::endl;return 0; }
-
-
正切
-
double tan(double x);——
计算 tan(x),其中 x 是弧度。形参为double型,返回值为double型 -
示例:
#include <cmath> int main() {double angle = M_PI / 4; // 45度std::cout << "tan(" << angle << ") = " << tan(angle) << std::endl;return 0; }
-
3. 反三角函数(函数返回值为弧度,这类函数不好用)
-
反正弦
-
double asin(double x);——
计算 arcsin(x),返回值为弧度。形参为double型,返回值为double型 -
详细运用示例:
-
#include <iostream> // 包含标准输入输出流库
#include <iomanip> // 包含用于格式化输出的库,如setprecision
#include <cmath> // 包含数学函数库,如asin
#define PI 3.14159 // 定义圆周率PI的值为3.14159
using namespace std; // 使用标准命名空间int main() {double A; // 定义一个双精度浮点型变量A,用于存储输入的正弦值cin >> A; // 从标准输入读取一个值到变量A中// 使用asin函数计算A的反正弦值,结果以弧度为单位double B = asin(A); // 将弧度值B转换为度数,并设置输出精度为小数点后两位// asin返回的是弧度值,通过乘以180/PI将其转换为度数cout << setprecision(2) << B * 180 / PI << endl;return 0; // 程序正常结束
}输入 1
输出 90
关键点解释
asin
函数:
asin
是反正弦函数,输入范围为 [−1,1],输出范围为 [−π/2,π/2] 弧度。如果输入的值不在 [−1,1] 范围内,程序会报错。
弧度转度数:
弧度和度数的转换公式是:
度数=弧度×π/180在代码中,
B * 180 / PI
就是按照这个公式进行转换的。
setprecision(2)
:
这是
<iomanip>
库提供的功能,用于设置输出的小数精度。这里设置为保留两位小数。示例运行
假设用户输入
0.5
,程序的运行过程如下:输入:
0.5
asin(0.5)
的结果是 6π 弧度(约等于 0.5236 弧度)。将弧度转换为度数:
0.5236×π/180≈30.00输出:
30.00
输入范围:
用户输入的值 A 必须在 [−1,1] 范围内,否则
asin
函数会抛出错误。
-
反余弦
-
double acos(double x);——
计算 arccos(x),返回值为弧度。形参为double型,返回值为double型 -
示例:
#include <cmath> int main() {double value = 0.5;std::cout << "acos(" << value << ") = " << acos(value) << " radians" << std::endl;return 0; }
-
-
反正切
-
double atan(double x);——
计算 arctan(x),返回值为弧度。形参为double型,返回值为double型 -
示例:
#include <cmath> int main() {double value = 1.0;std::cout << "atan(" << value << ") = " << atan(value) << " radians" << std::endl;return 0; }
-
4. 对数函数
-
自然对数
-
double log(double x);——
计算 ln(x)。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {double num = 10.0;std::cout << "log(" << num << ") = " << log(num) << std::endl;return 0; }输出 log(10) = 2.30259
-
-
常用对数
-
double log10(double x);——
计算 log10(x)。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {double num = 100.0;std::cout << "log10(" << num << ") = " << log10(num) << std::endl;return 0; }输出 log10(100) = 2
-
5. 取整函数
-
向上取整(即取小于给定数值+1的最大整数。)
-
double ceil(double x);——
向上取整。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {double num = 3.14;std::cout << "ceil(" << num << ") = " << ceil(num) << std::endl;return 0; }输出 ceil(3.14) = 4
-
-
向下取整(即取不大于给定数值的最大整数。)
-
double floor(double x);——
向下取整。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {double num = 3.14;std::cout << "floor(" << num << ") = " << floor(num) << std::endl;return 0; }输出 floor(3.14) = 3
-
-
四舍五入
-
double round(double x);——
四舍五入。形参为double型,返回值为double型 -
示例:
#include<iostream> #include <cmath> int main() {double num ;std::cout << round(num) << std::endl;return 0; }输入 3.44 输出 3输入 3.54 输出 4
-
C++特有的数学函数
C++在继承C语言的基础上,增加了一些新的数学函数,主要用于更复杂的数学运算和类型扩展。
-
提取浮点数的整数部分(这个函数多此一举,功能与向下取整函数没区别)
-
double trunc(double x);——
提取浮点数的整数部分。 -
示例:
#include<iostream> #include <cmath> int main() {double num = 3.14;std::cout << "trunc(" << num << ") = " << trunc(num) << std::endl;return 0; }输出 trunc(3.14) = 3
-