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() 函数中调用的时候也没有参数。

函数的返回类型是 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 变量。

main() 函数中根据 flag01 的情况打印对应的消息。

哪种方法更好?

好吧,这取决于您要解决的问题。在本文的问题解决方案中,传递参数并从函数返回值(示例 4)更好。

一个函数应该执行一个特定的任务。checkPrimeNumber(int n) 函数不接受用户的输入,也不显示适当的消息。它只检查一个数是否为质数。