常用数学函数 - GESP C++ 二级
本文最初于 2026 年 2 月 2 日发布于旧博客,于 2026 年 2 月 24 日迁移至新博客。引用信息保持不变。
(如无特殊说明,本文内容以 C++11 为准。本文中说到的ceil()、floor()和round()函数在 C++23 中更改了函数原型)
引入
在 C++ 中,除了最基本的加、减、乘、除、取余(取模)这些运算,我们还可以进行更多数学运算,这依托于 C++ 从 C 语言继承而来的一个头文件,在 C++ 中写为<cmath>。
<cmath>头文件提供了一些算术运算符没有的功能,比如开平方、幂运算等。在 GESP C++ 二级考纲中,主要提到的有以下几种:(下面函数若不特殊说明。则包含在<cmath>头文件下)
绝对值函数
绝对函数写作abs() ,函数原型为:
float abs(float num);
double abs(double num);
long double abs(long double num);你可以向括号中传入一个数,函数会返回其绝对值,abs()的效果(a是数字类型)等同于下面的函数:
double myAbs(double a) { // 或其他数据类型
if (a >= 0)
return a;
else
return -a;
}平方根函数
平方根函数写作sqrt(),函数原型为:
float sqrt(float num);
double sqrt(double num);
long double sqrt(long double num);你可以向括号中传入一个值,函数会返回其平方根。由于 IEEE 754 标准下浮点数的表示问题,可能会出现精度问题。
最大值函数
最大值函数写作max(),包含在<algorithm>头文件下。在部分编译器下,只需导入<iostream>头文件即可使用,无需另行导入<algorithm>。最大值函数的函数原型如下:
const T& max( const T& a, const T& b ); // T是任意支持比较大小的类型(包括自定义类型)你可以向括号内传入两个同类型的,可比较大小的值,函数会返回其中较大者。下面给出一种此函数可能的实现:
const T& max(const T& a, const T& b)
{
return (a < b) ? b : a;
}最小值函数
最小值函数写作min(),包含在<algorithm>头文件下。在部分编译器下,只需导入<iostream>头文件即可使用,无需另行导入<algorithm>。最小值函数的函数原型如下:
const T& min( const T& a, const T& b );你可以向括号内传入两个同类型的,可比较大小的值,函数会返回其中较小者。下面给出一种此函数可能的实现:
const T& min(const T& a, const T& b)
{
return (b < a) ? b : a;
}除了上述考纲中写到的函数之外,还有一些常用的数学函数:
向上取整函数
向上取整函数写作ceil(),函数原型为:
float ceil(float num);
double ceil(double num);
long double ceil(long double num);可以向其中传入一个浮点数,该函数会返回该浮点数向上取整后得到的整数。
向下取整函数
向下取整函数写作floor() ,函数原型为:
float floor(float num);
double floor(double num);
long double floor(long double num);可以向其中传入一个浮点数,该函数会返回该浮点数向下取整后得到的整数。
四舍五入函数
四舍五入函数写作round(),加入于 C++11,函数原型为:
float round(float num);
double round(double num);
long double round(long double num);可以向其中传入一个浮点数,该函数会返回该浮点数四舍五入取整后得到的整数。
幂函数
幂函数写作pow(),函数原型为:
float pow(float base, float exp);
double pow(double base, double exp);
long double pow(long double base, long double exp);可以向其中传入两个数 a 和 p,该函数会返回 a 的 p 次方
总结
这些函数在信息学竞赛中都发挥着各自的作用,都需要熟练掌握。如果你要通过 GESP C++ 二级,考纲中明确写到的函数有前四个,但我还是建议你掌握以上全部的函数,说不定哪天就用上了呢?
参考资料与引用
cppreference.cn,2026 年 2 月 2 日参考及引用