2013-01-01 96 views
0

很明顯,這是一個[hometask]和我所問的一個全新手問題。我試圖通過多次更改代碼來自己弄清楚,但仍然從階乘計算中得到錯誤的結果。 該計劃的想法是打印階乘的表爲整數從1到10,以獲得把戲完成的,我的想法是對嵌套和while語句使用如下圖所示的代碼:在C中計算階乘時得到錯誤的結果。=

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

} 

但是,在控制檯中出現錯誤結果。猜測我搞砸了一個算法來計算階乘或程序邏輯。我試圖改變代碼,但仍然卡住。任何幫助,將不勝感激。謝謝你,新年快樂!

回答

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); 
} 
+0

謝謝!它現在正在工作。你是對的 - 我錯過了大括號,並在初始化之前開始使用u變量。現在明白了。謝謝! – wondersz1

+0

如果在循環前將factorial設置爲1,然後在循環內乘以n,則根本不需要第二個循環。簡單得多。 –

+0

@Mats好點。我只是試圖用已有的變量來做類似於它已經寫好的東西。 – Antimony

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; 

} 
+0

謝謝!我把它與一個算法在我原來的代碼中計算階乘的算法混淆了,並且(如上所述)錯過了大括號。感謝你的幫助! – wondersz1