C++ 中用户定义函数的实际用法

在本教程中,您将了解使用函数解决单个问题可以采用的不同方法。

为了更好地理解函数中的参数和返回,用户定义的函数可以分类为:

  • 无参数且无返回值的函数
  • 没有参数但有返回值的函数
  • 有参数但没有返回值的函数
  • 带参数和返回值的函数

假设您有一个需求是检查一个数是否为质数。下面通过以上述 4 种不同方式制作用户定义函数来解决此问题。

示例 1:无参数传递且无返回值

本例通过一个无参数无返回的函数检查一个数字是否为质数。

# include <iostream>
using namespace std;

// 函数声明
void prime();

int main()
{
    prime();
    return 0;
}

void prime()
{

    int num, i, flag = 0;

    cout << "Enter a positive integer enter to check: ";
    cin >> num;

    for(i = 2; i <= num/2; ++i)
    {
        if(num % i == 0)
        {
            flag = 1;
            break;
        }
    }

    if (flag == 1)
    {
        cout << num << " is not a prime number.";
    }
    else
    {
        cout << num << " is a prime number.";
    }
}

在上面的程序中, main() 调用的是没有参数的 prime()

prime() 从用户那里获取正数并检查该数字是否为质数,并打印出结果。

因为,返回类型 prime()void ,函数没有返回任何值。

示例 2:没有传递参数但有返回值

本例通过一个无参数有返回的函数检查一个数字是否为质数,此函数主要用于获取用户的输入。

#include <iostream>
using namespace std;

int prime();

int main()
{
    int num, i, flag = 0;

    // No argument is passed to prime()
    num = prime();
    for (i = 2; i <= num/2; ++i)
    {
        if (num%i == 0)
        {
            flag = 1;
            break;
        }
    }

    if (flag == 1)
    {
        cout<<num<<" is not a prime number.";
    }
    else
    {
        cout<<num<<" is a prime number.";
    }
    return 0;
}

// Return type of function is int
int prime()
{
    int n;

    printf("Enter a positive integer to check: ");
    cin >> n;

    return n;
}

在上面的程序中, main() 调用的是没有参数的 prime()

prime() 从用户那里取一个正整数。由于函数的返回类型是一个 int,它将用户输入的数字返回给 main() 函数调用。

然后,在 main() 本身中检查数字是否为质数并打印到屏幕上。

示例 3:参数传递但没有返回值

本示例中定义了一个函数用于检查由参数指定的数字是否为质数,并打印出结果。

#include <iostream>
using namespace std;

void prime(int n);

int main()
{
    int num;
    cout << "Enter a positive integer to check: ";
    cin >> num;

    prime(num);
    return 0;
}

void prime(int n)
{
    int i, flag = 0;
    for (i = 2; i <= n/2; ++i)
    {
        if (n%i == 0)
        {
            flag = 1;
            break;
        }
    }

    if (flag == 1)
    {
        cout << n << " is not a prime number.";
    }
    else {
        cout << n << " is a prime number.";
    }
}

在上面的程序中,首先获取用户输入的数字并存储在 num 变量中。

然后, num 变量传递给 prime() 函数, prime() 函数检查并打印数字是否为质数。

因为, prime() 的返回类型是 void ,所以函数没有返回任何值。

示例 4:传递的参数和返回值。

本示例中定义了一个函数用于检查由参数指定的数字是否为质数,并返回一个标识数字是否质数的标志。

#include <iostream>
using namespace std;

int prime(int n);

int main()
{
    int num, flag = 0;
    cout << "Enter positive integer to check: ";
    cin >> num;

    // Argument num is passed to check() function
    flag = prime(num);

    if(flag == 1)
        cout << num << " is not a prime number.";
    else
        cout<< num << " is a prime number.";
    return 0;
}

/* This function returns integer value.  */
int prime(int n)
{
    int i;
    for(i = 2; i <= n/2; ++i)
    {
        if(n % i == 0)
            return 1;
    }

    return 0;
}

在上面的程序中,首先获取用户输入的数字并存储在 num 变量中。

然后, num 传递给函数 prime()prime() 函数会检查由参数指定的数字是否为质数,并返回一个标识数字是否质数的标志。

回到 main() 函数中, prime() 函数返回的 10 存放在 flag 变量中,并将相应的文本打印到屏幕上。

哪种方法更好?

以上四个程序都给出了相同的输出,并且都是技术上正确的程序。

关于应该选择哪种方法没有硬性规定,您可以根据实际情况和您想如何解决问题来选择特定的方法。