为了更好地理解参数和函数返回,可以将用户定义的函数归类为:
没有参数也没有返回值的函数
没有参数但返回值的函数
有参数但无返回值的函数
有参数和返回值的函数
考虑一种情况,您必须检查素数。通过以上述4种不同的方式制作用户定义的函数,可以解决以下问题。
示例:没有传递参数,也没有返回值
#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 << " 是质数。";
}
}
在上面的程序中,在main()中调用prime(),但没有参数。
prime() 函数用来从用户处获取输入的正数,并检查该数字是否为质数。
由于prime()返回类型为void,因此该函数不返回任何值。
示例:不传递任何参数,但有返回值
#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;
}
在上面的程序中,从main()调用prime()函数,没有参数。
prime()从用户处获取一个正整数。 由于该函数的返回类型为int,因此它将用户输入的数字返回给调用main()函数。
然后,在main()本身中检查数字是否为质数并打印到屏幕上。
示例:参数已传递但没有返回值
#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,prime()函数没有返回值。
示例:传递的参数和返回值。
#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()的返回类型为int,因此将1或0返回给main()调用函数。 如果数字是质数,则返回1。 如果不是,则返回0。
在main()函数中,返回的1或0存储在变量flag中,相应的文本打印到屏幕上。
哪种方法更好?
上面所有四个程序都提供相同的输出结果,并且在技术上都是正确的程序。
对于选择哪种方法没有严格的指定。
根据具体情况以及您要如何解决问题来选择特定的方法。