C語言求n的階乘(n!)

2020-07-16 10:04:30
從鍵盤輸入一個數,求出這個數的階乘,即 n!。

演算法思想

首先要清楚階乘定義,所謂 n 的階乘,就是從 1 開始乘以比前一個數大 1 的數,一直乘到 n,用公式表示就是:1×2×3×4×…×(n-2)×(n-1)×n=n!

具體的操作:利用迴圈解決問題,設迴圈變數為 i,初值為 1,i 從 1 變化到 n;依次讓 i 與 sum 相乘,並將乘積賦給 sum。
① 定義變數 sum,並賦初值 1。
② i 自增 1。
③ 直到 i 超過 n。

程式程式碼

#include <stdio.h>
int main()
{
    int i,n;
    double sum=1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        sum=sum*i;
    printf("%d!=%lf",n,sum);
    printf("n");
    return 0;
}

偵錯執行結果

輸入 5,對應的階乘輸出情況如下所示;

5
5!=120.000000

輸入20,對應的階乘輸出情況如下所示:

20
20!=2432902008176640000.000000

總結

① 由於階乘一般較大,會超出整型甚至是長整型所能表示的範圍,因此定義變數時就不能定義為整型,而應該考慮雙精度數。

② 實訓中定義了一個雙精度型的變數,用來存放結果。因此在輸出時應注意雙精度數的輸出格式。