跳转至

函数

函数

函数(Function)是一个可以被其他代码或其自身调用的代码片段。当函数被调用时,实际参数被作为输入传递给函数,并且函数可以返回输出。

C++内置函数

abs(x) 绝对值
fabs(x) 小数的绝对值
celi(x) 向上取整
floor(x) 向下取整
round(x) 四舍五入
pow(a, b) a的b次幂
swap(a, b) 交换
max(a, b) 较大值
min(a, b) 较小值

主函数

// 程序的入口函数
int main() {
    ...
}

自定义函数

语法格式

返回值类型 函数名(参数列表...) {
    具体代码

    return 语句
}

其中,参数列表作为函数的输入,可以是零个或多个。

仅在函数内部使用,相当于函数内的局部变量。

有返回值的函数

int f(int a, int b) {
    return a + b;
}

无返回值的函数

void f() {
    cout << 123 << endl;

    return ;
}

// void 表示函数没有返回值

使用函数编程的意义

如果在主函数中,多次使用相同的代码来完成类似的功能,代码会变得冗长,不易阅读和维护。

将相同功能的代码,封装到函数里实现,就可以重复使用了。

这叫做,模块化编程。

模块化编程,是重要的编程思想,我们要养成的代码习惯。

作用域

在 C++ 中,用大括号 {} 来表示作用域,其含义是启作用的区域。

下图中,红色框圈出来的 int a, int b,是 f 函数内的局部变量,并不是第5行的 int a, b;

两者名字虽然相同,但互相不打架。

在这里,我们需要注意的是:

合理的变量命名,把变量定义在合适的位置上,是我们基本的代码习惯。

image-202509151512068 74

下面代码,编译会报错吗?

image-20250915151740098

判断质数的代码模板

bool is_prime(int n) {
    if (n < 2) return false;
    for (int i = 2; i <= n / i; i++)
        if (n % i == 0) return false;

    return true;
}

函数的调用

下面代码中,主函数调用了 f 函数,f 函数调用了 f2 函数。

f2() 执行完,返回给 f()

f() 执行完,返回给 main()

image-20250915152910631

sort 函数

sort() 函数,是 #include <algorithm> 中的函数。

我们用来对数组内的元素进行排序。

从小到大排序

#include <bits/stdc++.h>

using namespace std;

int a[110], n;

int main() {
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];

    sort(a, a + n);

    for (int i = 0; i < n; i++) cout << a[i] << ' ';

    return 0;
}

从大到小排序

自定义一个 cmp 函数,用于确定元素之间的比较方式。

#include <bits/stdc++.h>

using namespace std;

int a[110], n;

bool cmp(int a, int b) {
    return a > b;
}

int main() {
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];

    sort(a, a + n, cmp);

    for (int i = 0; i < n; i++) cout << a[i] << ' ';

    return 0;
}