0

嗨,我必须编写这个程序来计算给定数字的阶乘。第一个函数必须读入一个数字,然后将其传递给主函数,该函数将该值传递给第二个函数,该函数计算该数字的阶乘,然后将该阶乘传递给主函数。然后应该从显示阶乘的 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);
    }
4

5 回答 5

2

您没有将计算出的阶乘值传递给printFactorial(). 将值传递给打印函数:

int main()
{

    int f = getValue();
    int fact = factorial(f);
    printFactorial(fact);
    return(0);
}
于 2013-04-17T05:57:35.227 回答
1

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

于 2013-04-17T08:59:14.913 回答
1

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

尝试这个:

printFactorial(factorial(f));
于 2013-04-17T05:59:47.083 回答
0

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

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

于 2013-04-17T05:58:10.837 回答
-1
int main()
{

    int f = getValue();
    factorial(f);
    printFactorial(f);
    getch();
    return(0);
}
于 2015-12-11T05:18:31.817 回答