本題要求實現乙個列印非負整數階乘的函式。
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...