C 编程中用户定义函数的类型
C 编程中用户定义函数的类型
在本教程中,您将了解使用函数解决同一问题的不同方法。
下面这4个程序检查用户输入的整数是否为质数。
下面所有这些程序的输出都是相同的,并且我们在每个示例中都创建了一个用户定义的函数。但是,我们在每个示例中采用的方法是不同的。
例1:不传参数也无返回值
#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()
函数接受用户的输入,检查它是否是质数并显示在屏幕上。
checkPrimeNumber();
中的空括号 main()
内的语句 function 表示没有参数传递给函数。
函数的返回类型是void
.因此,函数不会返回任何值。
示例 2:没有传递参数但返回值
#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:参数通过但没有返回值
#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:参数传递和返回值
#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()
函数不接受用户的输入,也不显示适当的消息。它只检查一个数字是否是素数。
C语言