大整數加法

2021-10-18 19:35:59 字數 706 閱讀 9273

對於如1000位的整數,普通的變數型別無法進行直接處理。

這裡定義了結構體bign,選用陣列由低位至高位儲存各個數字(因為計算時是由高到低進行),同時用變數len儲存數字位數。

使用字串輸入,而後將字串轉化為bign型別。

在進行計算時,採用加法的本質原理,由低位至高位逐位相加,處理進製。

注意點:

將字串逐位賦值給陣列時,char型別為其ascii編碼,需要減去』0』得到數字。

要注意處理當計算到最高位仍有進製的情況。

bign中的陣列容易忘記初始化,這樣會有髒資料從而出錯。把初始化的**寫在建構函式中可以避免此問題。

倒序儲存的目的是能夠方便相加時最低位就是對齊的。

#include

#include

struct bign};

//一般情況下不能對結構體變數整體引用,只能引用其成員。

bign change

(char a)

return b;

}bign add

(bign a,bign b)

if(carry!=0)

return c;

}void

print_bign

(bign a)

printf

("\n");

}int

main()

大整數加法

include include include include define debug void plus char char char int is valid char void reverse char int main int argc,char argv up loop 0 strcpy...

大整數加法

方法 這裡用了資料結構棧,實際上棧更方便實現高精度加法。步驟 1 第乙個資料加數按輸入順序 高位到低位 入棧1。此時棧頂為最低位 2 第二個資料加數按輸入順序 高位到低位 入棧2。此時棧頂為最低位 3 將棧1 棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。4 處理多餘的棧...

大整數加法

include include include define max len 200 int an1 max len 10 int an2 max len 10 char szline1 max len 10 char szline2 max len 10 int main bool bstarto...