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

これがあなたが物事を修正することができる1つの方法です。

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 に答える