0

显然,这是一个 [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;

}

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

4

2 回答 2

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);
}
于 2013-01-01T21:01:35.063 回答
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;

}
于 2013-01-01T21:15:17.773 回答