最短的計算大數乘法的c程序
阿新 • • 發佈:2018-03-04
div 強烈 tracking ati track trac 鍵盤輸入 void 精通
?
#include <stdio.h> char s[99],t[99]; int m,n; void r(int i,int c) { int j=0,k=i; while(k)c+=s[j++]*t[k---1]; if(i)r(i-1,c/10); printf("%d",c%10); } void main() { gets(s);gets(t); while(s[n])s[n++]-=48; while(t[m])t[m++]-=48; r(m+n-1,0); }
說明:
? 1.這個程序接收2個從鍵盤輸入的整數。計算他們的乘積,並輸出結果。
??? 輸入的兩個整數的總長度不能大於99.
? 2.這個程序沒什麽大用,不過用來玩玩兒而已。
? 3.這個程序的主要目標是,使用盡可能短的代碼來實現大數乘法。上面的代碼
?? 可在VC下編譯並執行. 在GCC下編譯,可省略#include語句和voidkeyword,
?? 去除回車和不必要的空格,總長度只194個字節。
?? 另外,程序刻意避免使用數組來存貯中間結果和終於結果。
?? 為此,使用了遞歸函數,同一時候,遞歸的使用也簡化了代碼。
? 4.在實際工作中,千萬不要寫這種程序。否則會被罵死。
? 5.不要用這個程序考你的學生和面試者,即使他宣稱精通C語言。
此類最短程序的特點
1.常常使用全局變量,全局變量的長處是
? 1).自己主動初始化數組和單變量為0,可省去某些變量初始化語句。
? 2).數組初始化為0也使得邏輯更簡單。可省去某些邊界值的推斷。
? 3).在子程序,直接使用全局變量可省去某些參數定義和參數傳遞語句。
2.在表達式。大量使用“++”或者“--”之類運算符,此類語句往往起到
一箭雙雕的效果,可有效的縮短代碼長度.但在工作中。我強烈反對使用
這類運算符。
3.在比較語句中。非常少使用if(i>=0)這類語句,而是使用“if(i)”這種
寫法,這種寫法比">=0"少了3個字母。
最短的計算大數乘法的c程序