原文: https://www.programiz.com/cpp-programming/user-defined-function-types
在本教程中,您将学习使用函数来解决单个问题的不同方法。
为了更好地理解参数和函数返回,可以将用户定义的函数归类为:
考虑一种情况,您必须检查质数。 通过以上述 4 种不同的方式制作用户定义的函数,可以解决以下问题。
示例 1:没有传递参数,也没有返回值
# include <iostream>using namespace std;void prime();int main(){// No argument is passed to prime()prime();return 0;}// Return type of function is void because value is not returned.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 intint 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;// Argument num is passed to the function prime()prime(num);return 0;}// There is no return value to calling function. Hence, return type of function is 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 << " is not a prime number.";}else {cout << n << " is a prime number.";}}
在上述程序中,首先向用户询问正数,该正数存储在变量num中。
然后,将num传递给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() functionflag = prime(num);if(flag == 1)cout << num << " is not a prime number.";elsecout<< 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()的返回类型是int,因此将 1 或 0 返回到main()调用函数。 如果数字是质数,则返回 1。 如果不是,则返回 0。
返回main()函数,返回的 1 或 0 存储在变量flag中,并将相应的文本打印到屏幕上。
哪种方法更好?
上面所有四个程序都提供相同的输出,并且在技术上都是正确的程序。
对于选择哪种方法没有严格的规定。
根据具体情况以及您要如何解决问题来选择特定的方法。
