- C++
C++常用数学函数学习笔记
- 2025-8-11 14:38:57 @
C++常用数学函数学习笔记
在C++编程中,数学函数是非常基础且常用的工具。本笔记将介绍C++中常用的数学函数,包括绝对值函数、平方根函数、最大值/最小值函数等的用法和示例。
一、头文件包含
大部分数学函数都声明在 <cmath>
头文件中,使用这些函数前需要包含该头文件:
#include <cmath>
对于max()
和min()
函数,在C++11及以上标准中也可以在<algorithm>
头文件中找到:
#include <algorithm>
二、绝对值函数
C++提供了多个绝对值函数,适用于不同的数据类型:
-
abs()
- 用于整数类型int abs(int x); // 处理int类型 long int abs(long int x); // 处理long int类型 long long abs(long long x); // 处理long long类型
-
fabs()
- 用于浮点数类型double fabs(double x); // 处理double类型 float fabs(float x); // 处理float类型 long double fabs(long double x); // 处理long double类型
示例代码:
#include <iostream>
#include <cmath>
int main() {
int int_num = -10;
double double_num = -3.14;
std::cout << "整数 " << int_num << " 的绝对值: " << abs(int_num) << std::endl;
std::cout << "浮点数 " << double_num << " 的绝对值: " << fabs(double_num) << std::endl;
return 0;
}
三、平方根函数
sqrt()
函数用于计算一个非负实数的平方根:
double sqrt(double x);
float sqrt(float x);
long double sqrt(long double x);
示例代码:
#include <iostream>
#include <cmath>
int main() {
double num = 25.0;
std::cout << num << " 的平方根是: " << sqrt(num) << std::endl;
// 计算直角三角形斜边长度
double a = 3.0, b = 4.0;
double c = sqrt(a*a + b*b);
std::cout << "直角边为 " << a << " 和 " << b << " 的直角三角形,斜边为: " << c << std::endl;
return 0;
}
四、最大值和最小值函数
max()
- 返回两个值中的较大值min()
- 返回两个值中的较小值
示例代码:
#include <iostream>
#include <algorithm> // 对于max()和min()
int main() {
int a = 10, b = 20;
std::cout << a << " 和 " << b << " 中的最大值: " << std::max(a, b) << std::endl;
std::cout << a << " 和 " << b << " 中的最小值: " << std::min(a, b) << std::endl;
double c = 3.14, d = 2.71;
std::cout << c << " 和 " << d << " 中的最大值: " << std::max(c, d) << std::endl;
std::cout << c << " 和 " << d << " 中的最小值: " << std::min(c, d) << std::endl;
return 0;
}
五、其他常用数学函数
-
幂运算函数
pow()
double pow(double base, double exponent);
计算base的exponent次幂
-
指数函数
exp()
double exp(double x);
计算e的x次幂
-
对数函数
double log(double x); // 自然对数(以e为底) double log10(double x); // 常用对数(以10为底)
-
三角函数
double sin(double x); // 正弦函数 double cos(double x); // 余弦函数 double tan(double x); // 正切函数
注意:参数是弧度而非角度
-
向上取整和向下取整
double ceil(double x); // 向上取整 double floor(double x); // 向下取整
综合示例:
#include <iostream>
#include <cmath>
int main() {
// 幂运算
std::cout << "2的3次方: " << pow(2, 3) << std::endl;
// 指数和对数
std::cout << "e的1次方: " << exp(1) << std::endl;
std::cout << "10的自然对数: " << log(10) << std::endl;
std::cout << "100的常用对数: " << log10(100) << std::endl;
// 三角函数(注意参数是弧度)
double pi = acos(-1.0); // 获取π值
std::cout << "π/2的正弦值: " << sin(pi/2) << std::endl;
std::cout << "π的余弦值: " << cos(pi) << std::endl;
// 取整函数
std::cout << "3.7向上取整: " << ceil(3.7) << std::endl;
std::cout << "3.7向下取整: " << floor(3.7) << std::endl;
return 0;
}
六、使用注意事项
-
所有数学函数都位于
std
命名空间中,使用时需要加上std::
前缀,或者使用using namespace std;
-
浮点数计算可能存在精度误差,需要注意
-
对于定义域有要求的函数(如
sqrt()
的参数不能为负),使用前应确保参数合法,否则可能产生未定义行为 -
三角函数的参数是弧度,如果需要使用角度,应先进行转换:弧度 = 角度 × π / 180
通过掌握这些常用数学函数,可以大大简化C++程序中的数学计算任务,提高编程效率。
2 条评论
-
admin SU @ 2025-8-11 14:58:25
C++ swap函数
什么是swap函数?
swap函数就像一个"交换器",能帮我们快速交换两个变量的值。比如你有一个苹果,小明有一个橘子,swap就像一个魔法,让你拿到橘子,小明拿到苹果。
最简单的交换方法
想象一下,你有两个杯子A和B,A装着可乐,B装着果汁。怎么交换它们呢?
- 拿一个空杯子C(临时变量)
- 把A的可乐倒进C
- 把B的果汁倒进A
- 把C的可乐倒进B
代码就是这样:
// 交换两个整数 void swap(int& a, int& b) { int temp; // 临时杯子 temp = a; // 把a的东西放进temp a = b; // 把b的东西放进a b = temp; // 把temp的东西放进b }
怎么用这个交换器?
#include <iostream> using namespace std; // 上面的swap函数放在这里 int main() { int x = 5; int y = 10; cout << "交换前: x=" << x << ", y=" << y << endl; swap(x, y); // 调用交换函数 cout << "交换后: x=" << x << ", y=" << y << endl; return 0; }
运行后会看到:
交换前: x=5, y=10 交换后: x=10, y=5
C++自带的交换器
其实C++已经帮我们做好了一个swap函数,就在标准库里面,我们可以直接用:
#include <iostream> #include <algorithm> // 这里面有自带的swap using namespace std; int main() { int a = 100; int b = 200; cout << "交换前: a=" << a << ", b=" << b << endl; swap(a, b); // 直接用自带的swap cout << "交换后: a=" << a << ", b=" << b << endl; return 0; }
为什么要用&符号?
注意看函数里的
int& a
,这个&
符号很重要,它表示"引用",就像给变量起了个别名。如果没有&
,swap函数就只能交换副本,原变量的值不会变,就像你只是在照片上交换了苹果和橘子,实际的苹果和橘子还在原来的地方。小练习
试着用swap函数做一个程序,交换两个同学的年龄,然后输出交换后的结果。
提示:先定义两个变量保存年龄,再调用swap函数,最后打印结果。
-
2025-8-11 14:39:08@
以下是C++常用数学函数的汇总表格:
函数类别 函数名 功能描述 函数原型示例 头文件 注意事项 绝对值函数 abs() 计算整数的绝对值 int abs(int x) <cmath>
适用于int、long等整数类型 fabs() 计算浮点数的绝对值 double fabs(double x) 适用于float、double等浮点类型 平方根函数 sqrt() 计算非负实数的平方根 double sqrt(double x) 参数不能为负数 最大值函数 max() 返回两个值中的较大值 int max(int a, int b) <algorithm>
支持多种数据类型 最小值函数 min() 返回两个值中的较小值 double min(double a, double b) 幂运算函数 pow() 计算base的exponent次幂 double pow(double base, double exponent) <cmath>
- 指数函数 exp() 计算e的x次幂 double exp(double x) e≈2.71828 对数函数 log() 计算自然对数(以e为底) double log(double x) 参数必须为正数 log10() 计算常用对数(以10为底) double log10(double x) 三角函数 sin() 计算正弦值 double sin(double x) 参数为弧度 cos() 计算余弦值 double cos(double x) tan() 计算正切值 double tan(double x) 取整函数 ceil() 向上取整 double ceil(double x) 返回不小于x的最小整数 floor() 向下取整 double floor(double x) 返回不大于x的最大整数 注:所有函数均位于
std
命名空间中,使用时需添加std::
前缀或使用using namespace std;
。对于支持多种数据类型的函数,表中仅列出一种原型作为示例。
- 1