c计算阶乘不工作的程序

时间:2013-04-17 05:55:46

标签: c function parameter-passing

您好我必须编写此程序来计算给定数字的阶乘。第一个函数必须读入一个数字,然后将其传递给main函数,该函数将该值传递给第二个函数,该函数计算该数字的阶乘,然后将该阶乘传递给main。然后应该从该函数调用第三个函数。显示阶乘的主要部分以下是我写的内容,我无法使其工作:

    #include <stdio.h>

    int getValue()
    {

        int n;

        printf("Enter number: ");
        scanf("%d%*c", &n);
        return(n);
    }

    int factorial(int n)
   {

        int i, f;

        f = 1;
        for(i=1; i<=n; i++)
        f = f * i;

        return(f);
    }

    void printFactorial(int f)
    {

        printf("The factorial is: %d", f);

        return;
    }

    int main()
    {

        int f = getValue();
        factorial(f);
        printFactorial();

        return(0);
    }

5 个答案:

答案 0 :(得分:2)

您未将计算的因子值传递给printFactorial()。将值传递给打印功能:

int main()
{

    int f = getValue();
    int fact = factorial(f);
    printFactorial(fact);
    return(0);
}

答案 1 :(得分:1)

我认为你缺少printFactorial()的参数。

试试这个:

printFactorial(factorial(f));

答案 2 :(得分:1)

您没有将值传递给printFactorial()。将值传递给打印功能: 您可以将factorial(f)结果存储到某个变量然后paas,或者您可以将factorial(f)传递给打印函数

答案 3 :(得分:0)

您忽略了factorial()的返回值,并且未将参数传递给printFactorial()。这些是最明显的问题。

另一个最微妙的问题是,factorial()仅适用于n的小值。阶乘函数增长如此之快,以至于您很快就会遇到整数溢出。

答案 4 :(得分:-1)

int main()
{

    int f = getValue();
    factorial(f);
    printFactorial(f);
    getch();
    return(0);
}