第十五章:C++ 中用户定义函数的类型
在此篇教程中,你将了解使用函数来解决单个问题、以及采用的不同方法定义函数来解决此问题。
为了更好地理解函数中的参数和返回,用户定义的函数可以分类为:
- 无参数且无返回值的函数
- 无参数但有返回值的函数
- 带参数但无返回值的函数
- 带参数和返回值的函数
不妨抛出个问题:检测一个数是否为素数?
下面将通过上述 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()函数则检查并打印数字是否为素数。
由于 prime()
的返回类型是 void
,因此函数不会返回任何值。
示例 4:传递参数和有返回值
#include <iostream>
using namespace std;
int prime(int n);
int main()
{
int num, flag = 0;
cout << "请输入正整数进行检查: ";
cin >> num;
// 参数num传递给check()函数
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()
函数则检查数字是否为素数。
由于prime()
的返回类型是一个int
,1 或0 被返回给main()
调用函数。如果数字是质数,则返回 1。如果不是,则返回 0。
回到 main()
函数,返回的 1 或 0 存储在变量 flag
中,并将相应的文本打印到屏幕上。
哪种方法更好?
以上四个程序都给出了相同的输出,并且在技术上,都是正确的程序书写方式。
关于应该选择哪种方法没有硬性规定,需根据自身的情况和你想如何解决问题来选择特定的方法。
程序算法实验室 zhangJA-Lab
转载请注明:XAMPP中文组官网 » 那些年C++ 函数之函数类型