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

在C中计算阶乘时得到错误的结果=,c,factorial,C,Factorial,显然,这是一个[家庭任务],也是我要问的一个完全陌生的问题。我试图通过多次修改代码来自己解决这个问题,但仍然从阶乘计算中得到错误的结果。 该程序的思想是打印1到10的整数的阶乘表。为了完成这个技巧,我的想法是使用嵌套的for和while语句,如下代码所示: #include <stdio.h> int main (void) { int n, factorial, u; u = n; printf ("Table to calculate factori

显然,这是一个[家庭任务],也是我要问的一个完全陌生的问题。我试图通过多次修改代码来自己解决这个问题,但仍然从阶乘计算中得到错误的结果。 该程序的思想是打印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;

}
#包括
内部主(空)
{
整数n,阶乘,u;
u=n;
printf(“计算从1到10的因子的表”);
printf(“n阶乘到n\n”);

对于(n=1;n您实际上遇到了几个问题,以至于很难判断您的初衷。
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);
}

for(n=1;n如果您想使用您的原始想法:

#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;

}
#包括
内部主(空)
{
整数n,阶乘,u;
printf(“计算从1到10的因子的表”);
printf(“n阶乘到n\n”);

对于(n=1;n谢谢!它现在可以工作了。你是对的-我错过了大括号,在初始化它之前开始使用u变量。现在知道了。谢谢!如果你在循环之前将factorial设置为1,然后在循环内部乘以n,你根本不需要第二个循环。简单多了。@Mats很好的一点。我只是想做类似于它的事情已使用现有变量编写。谢谢!我在原始代码中使用了计算阶乘的算法,结果(如上所述)遗漏了大括号。感谢您的帮助!