在计算C中的阶乘时得到错误的结果=

时间:2013-01-01 20:58:36

标签: c factorial

显然,这是一个[hometask]和一个我要问的全新问题。我试图通过多次更改代码来自行解决这个问题,但仍然会从因子计算得到错误的结果。 该程序的想法是打印1到10的整数的阶乘表。为了完成这个技巧,我的想法是使用嵌套的for和while语句,如下面的代码所示:

#include <stdio.h>

int main (void)

{
    int n, factorial, u;
    u = n;

    printf ("Table to calculate factorials from 1 to 10\n");
    printf ("n                    Factorial to n\n");

    for (n = 1; n <= 10; n= n+1)

    {   

        while (u <= n)
        factorial = n * u;
        u = u - 1;
        printf ("%i                    %i\n", n, factorial);


    }

    return 0;

}

但是,我在控制台中得到了错误的结果。猜猜我搞砸了算法来计算阶乘或程序逻辑。我尝试更改代码但仍然卡住了。任何帮助,将不胜感激。谢谢,新年快乐!

2 个答案:

答案 0 :(得分:1)

你实际上遇到了几个问题,至少很难说出你的意图是什么。 u是单元化的,while循环缺少大括号,并且您将错误的值分配给factorial

这是你解决问题的一种方法。

for (n = 1; n <= 10; ++n)
{   
    factorial = 1;

    for (u = 1; u<=n; ++u)
    {
        factorial *= u;
    }

    printf ("%i                    %i\n", n, factorial);
}

答案 1 :(得分:0)

如果你想使用你最初的想法:

#include <stdio.h>

int main (void)    
{
    int n, factorial, u;

    printf ("Table to calculate factorials from 1 to 10\n");
    printf ("n                    Factorial to n\n");

    for (n = 1; n <= 10; n= n+1)    
    {   
      factorial = u = 1;

      while (u <= n)
      {
          factorial *= u;
          u = u - 1;
      }
        printf ("%i                    %i\n", n, factorial);


    }

    return 0;

}