常用数学函数 - GESP C++ 二级

发表于
更新于
52 2.3~2.9 分钟 1032

本文最初于 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++ 二级,考纲中明确写到的函数有前四个,但我还是建议你掌握以上全部的函数,说不定哪天就用上了呢?

参考资料与引用

  1. cppreference.cn,2026 年 2 月 2 日参考及引用