C 小案例 利用陣列計算n(防止溢位)

2021-09-14 07:24:28 字數 777 閱讀 8426

輸入乙個整數n,輸出n!

//計算n!

//計算n!

#includeint main()

, len = 0, rem = 0, i, j;

for(i = 2; i<=n; i++)//將每次的階乘結果在陣列中倒序儲存,每次與i相乘之後與10求餘個位留下,十位進到陣列的下一位

}for(i = len; i >= 0; i--)//將陣列倒序輸出

printf("%d", num[i]);

return 0;

}

演算法思想:

舉個例子,比如說我們現在得到了4!= 24,在陣列中是以倒序的方式儲存,即42,a[0] = 4,a[1] = 2(陣列下標從1開始),現在要計算5!

第一次迴圈:i=5,j=0,len=1,rem=0

rem=num[0]i+rem=45=20;

num[0]=rem%10=0;

rem=rem/10=2;

第二次迴圈:i=5,j=1,len=1,rem=2

rem=num[1]i+rem=25+2=12;

num[1]=rem%10=2;

rem=rem/10=1;

j==len=1且rem不為0

則len++

第三次迴圈:i=5;j=2;len=2,rem=1;

rem=num[2]i+rem=05+1=1;

num[2]=rem%10=1;

rem=rem/10=0;

所以倒序輸出可得:120

C 小案例 廚房案例

題目描述 小白想嘗試一些新的料理,每個料理需要一些不同的材料,問完成所有的料理需要準備多少種不同的材料。輸入描述 每個輸入包含 1 個測試用例。每個測試用例的第 i 行,表示完成第 i 件料理需要哪些材料,各個材料用空格隔開,輸入只包含大寫英文本母和空格,輸入檔案不超過 50 行,每一行不超過 50...

Java中陣列小案例

class arraydemo system.out.println 陣列中元素個數 arr.length for int i 0 imax max arr x return max 第二種方式獲取最值 public static int getmax 2 int arr return arr ma...

C 多型應用的小案例(計算器)

如果寫乙個計算器類,實現簡單的加減乘除操作,我們初學者很可能會這麼寫 include using namespace std class calculator void setv2 int v intgetresult string oper else if oper private int val...