函数
题单类型:官方题单
创建人:
ACGO官方
题数:18题
收藏题单
完成度:0/18
函数
1. 数学函数
数学函数是 C++ 中用来处理“常见数学操作”的工具,能让我们更方便地写出简洁的代码。
1.1 max 与 min
作用:
max(a, b)返回 和 中较大的那个min(a, b)返回 和 中较小的那个- 注意事项: 和 必须是同一个数据类型,否则编译失败。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = 3, b = 7;
cout << max(a, b) << "\n"; // 7
cout << min(a, b) << "\n"; // 3
return 0;
}
常见用途:
- 更新最大值:
ans = max(ans, x); - 更新最小值:
ans = min(ans, x);
1.2 ceil(向上取整)
ceil(x) 表示对 向上取整,得到“最小的整数且不小于 ”。
例子:
注意:ceil 返回的是 double 类型。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x = 3.2;
cout << ceil(x) << "\n"; // 4
return 0;
}
1.3 floor(向下取整)
floor(x) 表示对 向下取整,得到“最大的整数且不大于 ”。
例子:
注意:floor 返回的是 double 类型。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x = 3.9;
cout << floor(x) << "\n"; // 3
return 0;
}
1.4 round(四舍五入)
round(x) 表示对 进行四舍五入,得到“最接近的整数”。
例子:
注意:round 返回的是 double 类型。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x = 3.5;
cout << round(x) << "\n"; // 4
return 0;
}
1.5 sqrt(开平方)
sqrt(x) 表示对 求平方根。
例子:
注意:
sqrt的返回类型是double- 如果 ,
sqrt(x)在实数范围无意义(一般题目不会给负数)
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
double x = 9;
cout << sqrt(x) << "\n"; // 3
return 0;
}
1.6 abs 与 fabs(绝对值)
绝对值表示“距离 的距离”。
abs(x)常用于整数(int/long long)fabs(x)常用于浮点数(double)
例子:
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int a = -10;
double b = -3.14;
cout << abs(a) << "\n"; // 10
cout << fabs(b) << "\n"; // 3.14
return 0;
}
注意:如果你写 abs(double),也可能能运行,但竞赛中更推荐浮点用 fabs,更清晰。
1.7 pow(指数幂)
pow(a, b) 表示计算 。
例子:
注意:
pow返回类型是double- 在需要精确整数时,不要直接用
pow当成整数结果(可能有精度误差)
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
cout << pow(2, 3) << "\n"; // 8
cout << pow(10, 2) << "\n"; // 100
return 0;
}
1.8 头文件说明
这些函数常见来源:
max/min/abs:#include <algorithm>ceil/floor/round/sqrt/fabs/pow:#include <cmath>
2. 自定义函数
在C++中,自定义函数可以把“重复出现的代码”封装起来,使程序更清晰、更好写、更不容易写错。
2.1 自定义函数的有点
常见原因:
- 代码复用:一段逻辑要用很多次
- 让主程序更清晰:
main里只保留流程 - 减少错误:修改时只改一个函数即可
2.2 自定义函数的基本格式
一个函数一般由三部分组成:
- 返回值类型
- 函数名
- 参数列表
基本结构:
返回值类型 函数名(参数类型1 参数1, 参数类型2 参数2, ...) {
// 函数体
return 返回值;
}
例子:写一个函数返回两个数的和
int add(int a, int b) {
return a + b;
}
调用方式:
int c = add(3, 5); // c = 8
2.3 常见返回值类型
注意事项: 当返回值不为 void 类型时,一定要写上return语句返回函数结果,否则程序会运行错误。
int:返回整数long long:返回大整数double:返回小数bool:返回真/假void:不返回值,只做事情
2.4 void 函数(不返回值)
void 函数一般用于不需要返回值的功能, 例如:
- 输出
- 修改数组
- 完成某个操作
例子:打印 的所有整数
void print(int n) {
for (int i = 1; i <= n; i++) {
cout << i << " ";
}
cout << "\n";
}
调用:
print(5); // 输出:1 2 3 4 5
2.5 带参数的函数
参数可以让函数“更通用”,自定义函数可以没有参数,也可以有多个参数。
例子:判断一个数是否为偶数
bool is_even(int x) {
return x % 2 == 0;
}
调用:
if (is_even(10)) cout << "yes\n";
else cout << "no\n";
2.6 多个参数的函数
例子:返回三个数的最大值
int max3(int a, int b, int c) {
return max(a, max(b, c));
}
2.7 函数传递方式
2.7.1 值传递
特点:
- 函数内部修改参数,不会影响外面
- 适合小数据类型(
int/long long)
例子:
void f(int x) {
x = 100;
}
int main() {
int a = 5;
f(a);
cout << a << "\n"; // 5
}
2.7.2 引用传递(直接用原变量)
在变量名前面加上 & 符号, 则是引用传递。
特点:
- 函数内部修改参数,会影响外面
- 适合需要修改变量、或者数据量大的情况
例子:交换两个数
void Swap(int &a, int &b) {
int t = a;
a = b;
b = t;
}
int main() {
int x = 3, y = 7;
Swap(x, y);
cout << x << " " << y << "\n"; // 7 3
}
【前置知识点】
1、循环
【后置衔接知识点】
1、排序
【思维导图】

【题目知识点分类】
