【问题标题】:c program to calculate factorial not workingc程序计算阶乘不起作用
【发布时间】:2013-04-17 05:55:45
【问题描述】:

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

【问题讨论】:

    标签: c function parameter-passing


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      试试这个:

      printFactorial(factorial(f));
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:
            int main()
            {
            
                int f = getValue();
                factorial(f);
                printFactorial(f);
                getch();
                return(0);
            }
            

            【讨论】:

            • 你能添加一些上下文来解释代码吗?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多