企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# C 编程中用户定义函数的类型 > 原文: [https://www.programiz.com/c-programming/types-user-defined-functions](https://www.programiz.com/c-programming/types-user-defined-functions) #### 在本教程中,您将学习使用函数来解决同一问题的不同方法。 下面的这 4 个程序检查用户输入的整数是否是质数。 下面所有这些程序的输出是相同的,并且在每个示例中我们都创建了一个用户定义的函数。 但是,我们在每个示例中采用的方法都是不同的。 * * * ## 示例 1:没有传递参数,也没有返回值 ```c #include <stdio.h> void checkPrimeNumber(); int main() { checkPrimeNumber(); // argument is not passed return 0; } // return type is void meaning doesn't return any value void checkPrimeNumber() { int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d",&n); for(i=2; i <= n/2; ++i) { if(n%i == 0) { flag = 1; } } if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); } ``` `checkPrimeNumber()`函数接收用户输入,检查它是否是质数,并将其显示在屏幕上。 `main()`函数内部的`checkPrimeNumber();`语句中的空括号表示没有参数传递给该函数。 该函数的返回类型为`void`。 因此,该函数不返回任何值。 * * * ## 示例 2:不传递任何参数,但返回值 ```c #include <stdio.h> int getInteger(); int main() { int n, i, flag = 0; // no argument is passed n = getInteger(); for(i=2; i<=n/2; ++i) { if(n%i==0){ flag = 1; break; } } if (flag == 1) printf("%d is not a prime number.", n); else printf("%d is a prime number.", n); return 0; } // returns integer entered by the user int getInteger() { int n; printf("Enter a positive integer: "); scanf("%d",&n); return n; } ``` `n = getInteger();`语句中的空括号表示没有参数传递给该函数。 并且,将从函数返回的值分配给`n`。 在此,`getInteger()`函数从用户那里获取输入并返回。 用于检查数字是否为质数的代码位于`main()`函数中。 * * * ## 示例 3:传递参数但没有返回值 ```c #include <stdio.h> void checkPrimeAndDisplay(int n); int main() { int n; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the function checkPrimeAndDisplay(n); return 0; } // return type is void meaning doesn't return any value void checkPrimeAndDisplay(int n) { int i, flag = 0; for(i=2; i <= n/2; ++i) { if(n%i == 0){ flag = 1; break; } } if(flag == 1) printf("%d is not a prime number.",n); else printf("%d is a prime number.", n); } ``` 用户输入的整数值将传递到`checkPrimeAndDisplay()`函数。 在这里,`checkPrimeAndDisplay()`函数检查传递的参数是否为质数,并显示相应的消息。 * * * ## 示例 4:传递参数并返回值 ```c #include <stdio.h> int checkPrimeNumber(int n); int main() { int n, flag; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the checkPrimeNumber() function // the returned value is assigned to the flag variable flag = checkPrimeNumber(n); if(flag == 1) printf("%d is not a prime number",n); else printf("%d is a prime number",n); return 0; } // int is returned from the function int checkPrimeNumber(int n) { int i; for(i=2; i <= n/2; ++i) { if(n%i == 0) return 1; } return 0; } ``` 来自用户的输入将传递到`checkPrimeNumber()`函数。 `checkPrimeNumber()`函数检查传递的参数是否为质数。 如果传递的参数是质数,则函数返回 0。如果传递的参数是非质数,则函数返回 1。返回值分配给`flag`变量。 根据`flag`是 0 还是 1,从`main()`函数打印适当的消息。 * * * ## 哪种方法更好? 好吧,这取决于您要解决的问题。 在这种情况下,传递参数并从函数返回值更好(示例 4)。 函数应执行特定任务。`checkPrimeNumber()`函数不接受用户输入,也不显示相应的消息。 它仅检查数字是否为质数。