26 / 02 / 02

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

(如无特殊说明,本文内容以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日参考及引用
Powered by Gridea