用C語言處理長整數的計算

2021-10-05 23:08:31 字數 1528 閱讀 7746

//宣告:本人所作部落格均為自己學習複習所用

題目:假定用乙個整型陣列表示乙個長整數,陣列的每個元素儲存長整數的一位數字,實際的長整數m表示為:m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]

其中a[0]儲存該長整數的位數。完成:長整數乘普通整數。

#include

#include

void

chartonum

(int num,

char arr)

}//將字元陣列逆序儲存在整型陣列中,低位在前,高位在後

//個位數為num[1],十位數num[2] ……

void

multiply

(int a,

int b,

int c,

int maxlen)

}//將兩個陣列的每一位相乘,相加的結果儲存到同乙個位置

for(i=

2;i<

2*maxlen+

1;i++

)//計算進製,陣列中的每個元素大於10的向高位進一位

}int

main()

}//判斷longnuma中的數是否為負數,如果是則去掉負號,長度減一

if(longnumb[0]

=='-')}

//判斷longnumb中的數是否為負數,如果是則去掉負號,長度減一

int maxlen=

strlen

(longnuma)

>

strlen

(longnumb)

?strlen

(longnuma)

:strlen

(longnumb)

;//求出兩個字元陣列中的最大長度

int a[

110]=;

int b[

110]=;

chartonum

(a,longnuma)

;chartonum

(b,longnumb)

;//將字元轉化成整數 並逆序儲存

int res[

201]=;

multiply

(a,b,res,maxlen)

;//對兩個整數進行相乘 得到逆序的結果

printf

("長整數乘積為:");

if(temp1==

1&&temp2==

0||temp1==

0&&temp2==1)

//若兩個數異號則加負號

int flag=1;

for(i=

2*maxlen+

1;i>=

2;i--

)printf

("%d"

,res[i]);

flag=0;

}//將逆序的元素正序,同時把正序後首位的0去掉

printf

("\n");

return0;

}

用長整數求取普通整數的階乘

袁紅崗的程式設計師修煉之道 引言 袁紅崗1994 年加盟金蝶,1996 年在整個行業還處在 dos時代時最早成功開發出基於 windows 平台的金蝶財務軟體,開創了依靠技術創新推動企業快速發展的典範 1998 年成功開發出基於三層結構元件技術的金蝶 k 3系統並引入金蝶企業應用軟體 率領當時的金蝶...

C語言綜合實驗2 長整數運算

1 實驗題目 長整型數運算,c中的long int所能表示的資料範圍有限,現要求程式設計完成超過long int所能表示的資料範圍以上的十進位制正的長整數的加法和乘法運算。1 int readlongint char x 此函式用於讀入乙個正的長整數到x中,函式返回長整數的實際長度 要求輸入時檢查所...

用C語言解「計算工資」題

某公司員工的工資計算方法如下 一周內工作時間不超過40小時,按正常工作時間計酬 超出40小時的工作時間部分,按正常工作時間報酬的1.5倍計酬。員工按進公司時間分為新職工和老職工,進公司不少於5年的員工為老職工,5年以下的為新職工。新職工的正常工資為30元 小時,老職工的正常工資為50元 小時。請按該...