程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 最短的計算大數乘法的c程序

最短的計算大數乘法的c程序

編輯:關於C
#include 
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語句和void關鍵字,
去除回車和不必要的空格,總長度僅僅196個字節。
另外,程序刻意避免使用數組來存貯中間結果和最終結果。
為此,使用了遞歸程序,同時,遞歸的使用也簡化了代碼。
4.在實際工作中,千萬不要寫這樣的程序,否則會被罵死。
5.不要用這個程序考你的學生和面試者,即使他宣稱精通C語言。

此類最短程序的特點
1.經常使用全局變量,全局變量的優點是
1).自動初始化數組和單變量為0,可省去某些變量初始化語句。
2).數組初始化為0也使得邏輯更簡單,可省去某些邊界值的判斷。
3).在子程序,直接使用全局變量可省去某些參數定義和參數傳遞語句。

2.在表達式,大量使用“++”或者“--”之類運算符,此類語句往往起到
一箭雙雕的效果,可有效的縮短代碼長度.但在工作中,我強烈反對使用
這類運算符。

3.在比較語句中,很少使用if(i>=c)這類語句,而是使用“if(i)”這樣的
寫法,這種寫法比>=c少了3個字母。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved