Homework Introduction

什么是函数?

一个 C++ 程序无论大小,都由一个或者多个函数组成,而且其中必须有且只有一个函数 main() ,称之为主函数 ,由函数 main() 调用其他函数来完成程序的特定功能。当然,其他函数之间也可以按照规则互相调用。

main() 相当于一个集团,其下可以有众多子公司或者分公司,每个子公司或者分公司完成某一项特定业务,每个函数就是完成特定业务,所有函数由 main() 统一调度。

C++ 中的函数由一段相对独立的代码组成,这段代码能实现某一项具体、独立、完整的功能。函数在程序设计中的作用主要有两个,一是代码重用,二是问题分解。

代码重用是保证同一个函数可以被一个或多个函数调用任意多次,从而减少重复代码的编写。

问题分解可以保证一个大的程序(或者说软件),按照模块化编程思想,由大化小,分解成若干个结构清晰、功能独立、调试方便的函数,甚至给若干人合作完成,从而提高开发效率。

函数的定义和调用

// 定义函数
typeName functionName(parameterList){
    return value;
}

// 调用函数
functionName(parameterList)
  • 函数只有被调用时才开始执行
  • 函数不允许嵌套定义,但是运行嵌套使用
  • 函数名是标识符,命名规则同变量名
  • 函数的数据类型是返回值类型,如果没有返回值为 void 类型
  • 形式参数简称形参,可以为空,是函数定义时的参数;实际参数简称实参,是函数调用时传递的参数;形参与实参必须一致

无参数无返回值函数

void print(){
    cout << "Hello cat1" << endl;
    cout << "Hello cat2" << endl;
    cout << "Hello cat3" << endl;
    cout << "Hello cat4" << endl;
    cout << "Hello cat5" << endl;
    cout << "Hello cat6" << endl;
}

print();

有参数无返回值函数

void jrj(string rou){
    if(rou == "牛肉")
        cout << "牛肉丝" << endl;
    else if(rou == "羊肉")
        cout << "羊肉丝" << endl;
    else
        cout << "请放入合法的肉" << endl;
}

jrj("牛肉");
jrj("羊肉");

有参数有返回值函数

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

int r = add(1, 2);
cout << "r = " << r << endl;
cout << add(3, 4) << endl;

函数作用域和参数传递

  • 函数内部定义的变量叫做局部变量,生命周期仅限于函数内部。
  • 函数外部定义的变量叫做全局变量,生命周期等同于程序的周期。
  • 函数传值参数仅仅是形参对实参的拷贝,形参变化不会改变实参。
  • 函数传引用参数是传递实参本身,形参变化会同步改变实参。
#include <iostream>
using namespace std;

void swap1(int a, int b){
    int t = a;
    a = b;
    b = t;
    cout << "函数内部: " << a << " " << b << endl;
}

void swap2(int* a, int* b){
    int t = *a;
    *a = *b;
    *b = t;
}

void swap3(int& a, int& b){
    int t = a;
    a = b;
    b = t;
}

int main() {

    int a = 1, b = 2;

    // swap1(a, b);
    // swap2(&a, &b);
    swap3(a, b);

    cout << "函数外部:" << a << " " << b << endl;
	
	return 0;
}

判断质数

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;
}

Problem

Please claim the assignment to see the problems.
Status
Live...
Problem
5
Open Since
2024-2-10 0:00
Deadline
2036-8-23 23:59
Extension
24 hour(s)