階乘計算公升級版

2021-07-14 21:35:06 字數 871 閱讀 3654

本題要求實現乙個列印非負整數階乘的函式。

void print_factorial ( const int n );
其中n是使用者傳入的引數,其值不超過1000。如果n是非負整數,則該函式必須在一行中列印出n!的值,否則列印「invalid input」。

1000的階乘結果是乙個接近3000位的數字, 用程式語言的變數型別已經無法儲存, 這道題用了乙個3000位長的陣列來儲存結果.

計算方法:

用乙個陣列儲存結果,乙個下標儲存結果的一位,低的下標儲存結果的低位數,所以陣列的0下標對應儲存結果的個位數,以此類推.

在一開始,陣列初始化為1,然後用乙個迴圈,從2開始,乘以這個陣列,一次迴圈結束後更新陣列的值.

比如迴圈做到5,此時陣列的值為24(即4!),這時先用5*4,=20,先把0儲存在陣列的第乙個下標(result[0]),記下進製2,再用5*2,=10,

加上進製2=12,先把2儲存在第二個下標(result[1]),

最後用另乙個迴圈,把1儲存在第三個下標.

#include void print_factorial ( const int n );

int main()

void print_factorial ( const int n )

int result[3000] = ;

int temp, k = 1, n = 0;

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

while (n)

}for (int l = k - 1 ; l >= 0; l--)

}

階乘計算公升級版

本題要求實現乙個列印非負整數階乘的函式。函式介面定義 void print factorial const int n 其中n是使用者傳入的引數,其值不超過1000。如果n是非負整數,則該函式必須在一行中列印出n 的值,否則列印 invalid input 也就是說階乘結果大於int範圍該如何計算階...

4 10 階乘計算公升級版

本題要求實現乙個列印非負整數階乘的函式。函式介面定義 void print factorial const int n 其中n是使用者傳入的引數,其值不超過1000。如果n是非負整數,則該函式必須在一行中列印出n 的值,否則列印 invalid input 裁判測試程式樣例 include void...

4 10 階乘計算公升級版

本題要求實現乙個列印非負整數階乘的函式。void print factorial const int n 其中n是使用者傳入的引數,其值不超過1000。如果n是非負整數,則該函式必須在一行中列印出n 的值,否則列印 invalid input include void print factorial...