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

On this page