跳转至

常用函数

函数,是一段完成特定任务的代码。

给它起个名字,需要时用这个名字调用,就能执行这段代码。

C++ 标准库提供了一些常用函数,比如取绝对值、取整、开平方等。

绝对值

整数的绝对值

使用 abs,头文件 <cstdlib>。

int x = -1;
cout << abs(x); // 输出1

小数的绝对值

使用 fabs,头文件 <cmath>。

double x = -1.5;
cout << fabs(x); // 输出1.5

小数的绝对值,先统一用 fabs。

向上取整

使用 ceil,头文件 <cmath>。

向上取整,就是找不小于这个数的最小整数。

cout << ceil(1.5);  // 输出2
cout << ceil(2.0);  // 输出2
cout << ceil(-1.5); // 输出-1

注意:向上是数轴上往右,不是把绝对值变大。已经是整数,就不变。

不够一份,也要算一份

13 个孩子坐车,每辆车最多坐 5 人,至少需要 3 辆。

int a = 13, b = 5;
cout << ceil(1.0 * a / b); // 输出3

不能写 ceil(a / b),整数除法已经把小数部分舍去了。

整数分组,也常用下面的写法:

int a = 13, b = 5;
cout << (a + b - 1) / b; // 输出3

这里要求 a >= 0、b > 0,而且 a + b - 1 不能超出类型范围。

大整数转成浮点数可能损失精度,整数问题能用整数运算,就用整数运算。

向下取整

使用 floor,头文件 <cmath>。

向下取整,就是找不大于这个数的最大整数。

cout << floor(1.5);  // 输出1
cout << floor(2.0);  // 输出2
cout << floor(-1.5); // 输出-2

注意:负数向下取整,与直接转成 int 不一样。

cout << floor(-1.5); // 输出-2
cout << (int)-1.5;   // 输出-1

四舍五入

使用 round,头文件 <cmath>。

cout << round(1.4);  // 输出1
cout << round(1.5);  // 输出2
cout << round(-1.5); // 输出-2

取最近的整数,正好在两个整数中间时,取远离 0 的那个。

ceil、floor、round 得到的是整数值,但返回类型仍是浮点类型。

幂运算

使用 pow,头文件 <cmath>。

cout << pow(2, 3); // 2的3次方,输出8

注意:^ 是按位异或,不是乘方。

pow 是浮点运算,不适合代替所有精确的整数幂运算。求平方,直接写 x * x 就行。

开平方

使用 sqrt,头文件 <cmath>。

int x = 16;
cout << sqrt(x); // 输出4

在这里,我们只处理非负数。

开平方的结果可能是小数,存进 int 会舍去小数部分。

交换两个变量

使用 swap,交换两个变量的值。

int a = 3, b = 5;
swap(a, b); // a变成5,b变成3

较大值与较小值

使用 max、min,头文件 <algorithm>。

int a = 3, b = 5;
int maxn = max(a, b); // 得到5
int minn = min(a, b); // 得到3

这里的 a、b 类型要一致。max、min 只返回较大值、较小值,不会交换或修改原变量。