可怕的階乘

2021-07-02 13:04:43 字數 923 閱讀 6898

計算階乘n!是一件可怕的事情,因為當n並不是很大時,n!將是乙個很大的值。例如13! = 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出

詳細描述:

介面說明

原型:void calcnn(int n, char *pout)

輸入引數:

int n 需要計算的階乘數

輸出引數:

char *pout 結算結果,記憶體由呼叫者負責管理

具體計算演算法如下:

1、定義乙個足夠的大的陣列array[1000],用來儲存計算結果的每一位數;

2、從陣列第一位array[o]開始,臨時變數int temp 儲存陣列每一位數與當前階乘數的運算的結果,記得加上上一位的進製數。 結果 = array[j] * 被乘數 +進製

3、處理每乙個結果,只保留個位數 array[j] = temp % 10

4、計算進製數,結果加入陣列下一位元素相乘結果。重複步驟2,直到遍歷當前陣列每乙個元素;

5、當前陣列成員遍歷完畢,處理最後一位進製數,可能不止一位,要進行迴圈處理,每進一位,陣列長度增加乙個;

6、進入下乙個階乘數,繼續上述步驟,直到階乘完成。

7、轉換成字元陣列。

**如下:

void calcnn(int n, char *pout)

if (n==0||n==1)

int array[1000]=;

array[0]=1;

int carry=0;

int length=1;

int temp=0;

for (int i=2;i<=n;i++)

pout[j]='\0';

return;

}

可怕的階乘

計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...

求教 可怕的階乘

計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...

OJ 系列之可怕的n的階乘

計算階乘n 是一件可怕的事情,因為當n並不是很大時,n 將是乙個很大的值。例如13 6227020800,已經超過了我們常用的unsigned int型別的取值範圍。請設計乙個程式,使其可以計算100以內的數的階乘,結果用字串的形式輸出 詳細描述 介面說明 原型 void calcnn int n,...