大數四則運算

2021-08-29 12:16:49 字數 1358 閱讀 6121

#include#include#includeusing namespace std;

#define m 1000000000000000

//大數加法

//將數字以字串的形式傳入add加法函式,在函式內部完成字串->陣列的轉換,

//然後在陣列中逐位進行相加,再判斷該位相加後是否需要進製,為了方便計算,我們將數字的低位放在陣列的 //前面,高位放在後面。

void add(char stra,char strb)

} for(i=maxlen;i>0;i--)

printf("%d",a[i]);

}//大數減法

//相減演算法也是從低位開始減的。

//先要判斷被減數和減數哪乙個位數長,若被減數字數長是正常的減法;若減數字數長,則用被減數減去減數,

//最後還要加上負號;當兩數字數長度相等時,需要比較哪乙個數字大,否則負號處理會很繁瑣;這裡以

//a[0]==1為前一項大於後一項;處理每一項時要,如果前相減小於0需要向前一位借1,

void subtract(char stra,char strb)

else if(alen==blen)

else

for(i=alen-1;i>=0;i--)//從位址為1開始到存放資料

a[alen-i]=stra[i]-'0';

for(i=blen-1;i>=0;i--)

b[blen-i]=strb[i];

for(i=1;i0;i--)

printf("%d",a[i]);

} if(a[0]==0) }

//計算的過程基本上和小學生列豎式做乘法相同。為了程式設計方便,並不急於處理進製,而是將進製問題留待最後

//統 一處理。

void cheng (char stra,char strb)

} for(i=maxlen;i>0;i--)

printf("%d",a[i]);

}//大數除法

//看了網上大多數的大數除法都是以遞減的形式進行運算,我不喜歡這種方法,所以找了一種不能完全屬於大

//數的除法,具體方法以123/12位例,1/12=0~1,b[1]=0; 12/12=1~0 ,b[2]=1; 3/12=0~3,

//b[3]=0;

//所以123/12=10~3;

void divide(char stra,char strb)

while(b[i]==0)

i++;

for(i;i<=alen;i++)

printf("%d",b[i]);

printf("模為%d",x);

}

大數的四則運算

演算法與思路 大數的加,減,乘演算法比較簡單,模擬列豎式的計算過程就好 除法模擬實現比較困難,採用減法的形式實現,例如對於大數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 ...

大數四則運算模板

該模板能傳任意數字進去計算結果 不管是小算大的還是大的算小的都能得到正確結果 除法那裡只精確到小數點後10位數。乘法用加法來模擬 除法用減法來模擬 下面的注釋很詳細。include include using namespace std void string a,string b void del...