跳到主要内容

C++ 用户定义的函数类型

提示
  1. 用户定义函数类型:C++中的用户定义函数可以根据参数和返回值的存在与否分为四种类型:无参数无返回值、无参数但有返回值、有参数无返回值、有参数且有返回值。
  2. 参数和返回值的使用:参数是在函数调用时传递给函数的值,而函数可以通过返回值返回一个值。函数的返回类型决定了返回值的数据类型。
  3. 函数类型选择:选择哪种类型的函数取决于特定情况和解决问题的方式。所有四种类型的函数在技术上都是正确的,输出结果相同,但根据需求选择最合适的一种。

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

考虑一个检查质数的情况。以下通过以上述4种不同方式创建用户自定义函数来解决此问题。

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

# include <iostream>

using namespace std;

void prime();

int main()
{
// prime() 函数没有传递参数
prime();
return 0;
}

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

int num, i, flag = 0;

cout << "输入一个正整数来检查: ";
cin >> num;

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

if (flag == 1)
{
cout << num << " 不是质数。";
}
else
{
cout << num << " 是质数。";
}
}

在上面的程序中,prime() 函数在 main() 中无参数调用。

prime() 从用户获取一个正数并检查该数是否为质数。

由于 prime() 的返回类型为 void,函数不返回任何值。

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

#include <iostream>
using namespace std;

int prime();

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

// prime() 函数没有传递参数
num = prime();
for (i = 2; i <= num/2; ++i)
{
if (num%i == 0)
{
flag = 1;
break;
}
}

if (flag == 1)
{
cout<<num<<" 不是质数。";
}
else
{
cout<<num<<" 是质数。";
}
return 0;
}

// 函数返回类型为 int
int prime()
{
int n;

printf("输入一个正整数来检查: ");
cin >> n;

return n;
}

在上面的程序中,prime() 函数在 main() 中无参数调用。

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

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

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

#include <iostream>
using namespace std;

void prime(int n);

int main()
{
int num;
cout << "输入一个正整数来检查: ";
cin >> num;

// 参数 num 被传递到函数 prime()
prime(num);
return 0;
}

// 调用函数没有返回值。因此,函数的返回类型为 void。
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 << " 不是质数。";
}
else {
cout << n << " 是质数。";
}
}

在上面的程序中,首先从用户那里询问一个正数,存储在变量 num 中。

然后,num 被传递到 prime() 函数,其中检查该数是否为质数并打印。

由于 prime() 的返回类型为 void,函数不返回任何值。

示例 4:传递参数且有返回值。

#include <iostream>
using namespace std;

int prime(int n);

int main()
{
int num, flag = 0;
cout << "输入正整数来检查: ";
cin >> num;

// 参数 num 被传递到 prime() 函数
flag = prime(num);

if(flag == 1)
cout << num << " 不是质数。";
else
cout<< num << " 是质数。";
return 0;
}

/* 该函数返回整数值。 */
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() 的返回类型为 int,它返回 1 或 0 到调用它的 main() 函数。如果该数是质数,返回 1。如果不是,返回 0。

回到 main() 函数中,返回的 1 或 0 被存储在变量 flag 中,并打印相应的文本到屏幕上。

哪种方法更好?

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

没有硬性规定应该选择哪种方法。

特定方法的选择取决于情况和您想要解决问题的方式。