持續更新中…
#include
#include
#include
using
namespace std;
//大整數的四則運算
struct bign};
//將整數轉換為 bign,例如23456,d[0]=6,...,d[5]=2
bign change
(string str)
//大數的比較
intcompare
(bign a, bign b)
//1:a大;0:相等;-1:a小
return0;
}//大數的加法
bign add
(bign a, bign b)
if(carry !=0)
c.d[c.len++
]= carry;
return c;
}//大數的減法
//注意:使用sub函式前要先呼叫compare函式比較兩個數的大小 ,如果被減數小於減數,需要交換兩個變數,然後輸出負號。
bign sub
(bign a, bign b)
//a-b
c.d[c.len++
]= a.d[i]
- b.d[i];}
//去掉高位的0,同時保留至少一位
while
(c.len >
1&& c.d[c.len-1]
==0) c.len--
;return c;
}//高精度與低精度的乘法
//注意:如果a和b中存在負數,需要先記錄下其符號,然後取他們的絕對值代入函式。
bign multi
(bign a,
int b)
//處理進製,與加法不同,此時carry可能涉及多位數
while
(carry !=0)
return c;
}//高精度與高精度的乘法
//注意:如果a和b中存在負數,需要先記錄下其符號,然後取他們的絕對值代入函式。
bign doublemulti
(bign a, bign b)
//判斷有效位數
for(
int i=a.len+b.len;i>=
0;i--)if
(c.d[i]!=0
)return c;
}//高精度與低精度的除法
bign divide
(bign a,
int b,
int&r)
//a/b,其中r為餘數
else
c.d[i]=0
;}//處理一開始有0的情況,保留至少一位
while
(c.len >
1&& c.d[c.len -1]
==0) c.len--
;return c;
}//輸出
void
print
(bign a)
intmain()
結果:
***
****
****
****
***加****
****
****
****
****
**2222222222**
****
****
****
****減***
****
****
****
****
***0
****
****
****
****
**乘***
****
****
****
****
***11111111110**
****
****
****
****
double乘***
****
****
****
****
***15129**
****
****
****
****除***
****
****
****
****
***111111111
餘數r:
大數四則運算
include include includeusing namespace std define m 1000000000000000 大數加法 將數字以字串的形式傳入add加法函式,在函式內部完成字串 陣列的轉換,然後在陣列中逐位進行相加,再判斷該位相加後是否需要進製,為了方便計算,我們將數字的...
大數的四則運算
演算法與思路 大數的加,減,乘演算法比較簡單,模擬列豎式的計算過程就好 除法模擬實現比較困難,採用減法的形式實現,例如對於大數a b,如果a b,則直接輸出商為0,否則,將a的最後strlen b 位重複減去b,直到得數小於b,將執行減法的次數賦給商的個位,然後將b的最後添上乙個0,相當於乘以10 ...
大數的四則運算
1.加法 輸入採用字元陣列儲存,然後將輸入存在整形陣列裡,然後逐位相加即可,同時注意進製處理。cpp view plain copy include include intmain b 555 c 555 scanf s m len m strlen m for i 0 i len m 1 i a ...