LogoCSP Wiki By Yundou
函数

函数

函数的概念

大家在学校里都有值日的经历吧。比如打扫教室这件事,有扫地、擦黑板、摆桌椅等一系列固定的步骤。如果每次值日都要重新说一遍这些步骤,那就太麻烦了。于是呢,老师会把打扫教室的步骤写下来贴在墙上,以后每次值日,同学们照着这个步骤来做就行。在编程里,函数就像是这张写着值日步骤的纸。它把完成特定功能的一段代码集合在一起,当我们需要实现这个功能时,直接“照着做”,也就是调用这个函数,而不用每次都重新写一遍代码。

图片描述
功能为开根号的函数

函数的定义

定义函数就好比写值日的步骤。我们要告诉计算机这个函数叫什么名字,做这件事需要用到哪些“工具”(也就是参数),以及做完之后会有什么“成果”(也就是返回值)。

基本语法

返回值类型 函数名(参数列表) {
    // 函数体,这里写实现功能的代码
    return 返回值; // 如果有返回值,就用 return 语句返回
}

定义示例

// 定义一个函数,名字叫 add,它能把两个整数相加
// 返回值类型是 int,表示这个函数会返回一个整数
// 参数列表里有两个 int 类型的参数,分别叫 a 和 b
int add(int a, int b) {
    // 函数体,计算 a 和 b 的和
    int sum = a + b;
    // 返回计算结果
    return sum;
}

函数的调用

定义好函数后,就可以在其他地方使用这个函数,这就是函数的调用。调用函数就像同学们按照写好的值日步骤去打扫教室。

图片描述
函数的调用及嵌套调用
#include <iostream>
using namespace std;

// 定义一个函数,名字叫 add,它能把两个整数相加
int add(int a, int b) {
    int sum = a + b;
    return sum;
}

int main() {
    // 调用 add 函数,把 3 和 5 作为参数传递给它
    // 函数返回的结果会赋值给变量 result
    int result = add(3, 5);
    // 输出函数的返回结果
    cout << "3 + 5 的结果是:" << result << endl;

    return 0;
}

函数的传参

函数的参数就像是打扫值日需要用到的工具。在调用函数时,要把具体的“工具”(也就是实际的值)传递给函数。

传值调用

#include <iostream>
using namespace std;

// 定义一个函数,名字叫 change,它能把传入的参数的值乘以 2
void change(int num) {
    num = num * 2;
    // 输出函数内部参数的值
    cout << "函数内部 num 的值是:" << num << endl;
}

int main() {
    // 定义一个整数变量,名字叫 x,初始值为 10
    int x = 10;
    // 调用 change 函数,把 x 的值作为参数传递给它
    change(x);
    // 输出变量 x 的值,看看是否被改变
    cout << "变量 x 的值是:" << x << endl;

    return 0;
}

在这个例子里,虽然在函数内部改变了参数 num 的值,但是函数外部的变量 x 的值并没有改变。这是因为传值调用只是把变量的值复制了一份传递给函数,函数内部操作的是这个复制的值,而不是原来的变量。

例题

例题 1:计算圆的面积

#include <iostream>
using namespace std;

// 定义一个函数,名字叫 circleArea,它能计算圆的面积
// 参数 r 表示圆的半径
// 返回值类型是 double,表示返回的面积是一个小数
double circleArea(double r) {
    // 定义圆周率
    const double PI = 3.14159;
    // 计算圆的面积
    double area = PI * r * r;
    // 返回计算结果
    return area;
}

int main() {
    // 定义一个变量,保存圆的半径
    double radius = 5.0;
    // 调用 circleArea 函数,计算半径为 5 的圆的面积
    double result = circleArea(radius);
    // 输出圆的面积
    cout << "半径为 " << radius << " 的圆的面积是:" << result << endl;

    return 0;
}

例题 2:判断一个数是否是质数

#include <iostream>
using namespace std;

// 定义一个函数,名字叫 isPrime,它能判断一个数是否是质数
// 参数 num 表示要判断的数
// 返回值类型是 bool,表示返回的结果是一个布尔值(真或假)
bool isPrime(int num) {
    if (num < 2) {
        // 如果 num 小于 2,它不是质数,返回 false
        return false;
    }
    for (int i = 2; i * i <= num; i++) {
        if (num % i == 0) {
            // 如果 num 能被 i 整除,它不是质数,返回 false
            return false;
        }
    }
    // 如果上面的条件都不满足,num 是质数,返回 true
    return true;
}

int main() {
    // 定义一个变量,保存要判断的数
    int number = 7;
    // 调用 isPrime 函数,判断 number 是否是质数
    bool result = isPrime(number);
    if (result) {
        // 如果 result 为 true,输出 number 是质数
        cout << number << " 是质数。" << endl;
    } else {
        // 如果 result 为 false,输出 number 不是质数
        cout << number << " 不是质数。" << endl;
    }

    return 0;
}

通过上面的讲解和例题,你应该对函数的概念、定义、调用和传参有了基本的了解。函数能让我们的代码更有条理,也能提高代码的复用性。在使用函数时,要注意参数的类型和返回值的类型。

例题

Status
Problem
Tags
P5736. 质数筛
入门语法
P5744. 培训
入门语法