大整數演算法(加減法)

2021-08-15 09:58:56 字數 1255 閱讀 5561

現將兩個數分別計算出長度,然後用將長度較短的數為界,寫乙個for迴圈,將兩個數從末往前依次相加。這個迴圈結束後,將長度較大的陣列未計入計算的數進行運算

#include#includeint main()

;//將陣列初始化為0

int l1,l2;

l1=strlen(a);

l2=strlen(b);

if(l1>l2)

c[k-1]=c[k-1]+y;

if(c[k-1]>=10)//若進製的值大於10,就再進一次

k--;

j--;

}for(;j>=0;j--)//將a陣列剩餘的數字加起來

k--;

}if(c[0]!=0) printf("%d",c[0]);//檢查和的長度是否加一

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

c[k-1]=c[k-1]+y;

if(c[k-1]>=10)

k--;

j--;

}for(;j>=0;j--)

k--;

}if(c[0]!=0) printf("%d",c[0]);

for(i=1;i首先要比較這兩個數的大小,然而因為是用乙個陣列存的,所以先比較其長度,若長度相同,則就用strcmp進行比較。若第乙個數小於第二個數,結果就會有乙個負號,但是通過陣列計算是得不到負號的,所以我就通過比較大小判斷是否需要新增負號

#include#includechar a[100],b[100];

int c[120];

int l1,l2;

void jian(char p,char q,int l1,int l2)//計算差值

c[k]+=x;//將差值賦給c陣列

k++;

j--;

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

while(c[k-1]==0) k--;//去掉前導0

for(i=k-1;i>=0;i--) printf("%d",c[i]);

printf("\n");

}int main()

{ while(~scanf("%s %s",a,b))

{ l1=strlen(a);

l2=strlen(b);

if(l1>l2) jian(a,b,l1,l2);

else if(l10) jian(a,b,l1,l2);//a,b陣列長度相等時,a陣列大於b陣列的值

else if(strcmp(a,b)<0)//a,b陣列長度相等時,a

大整數類 實現加減法

上次寫了乙個 無符號大整數加法 是比較容易的,這次實現了完整的大整數的加減法,支援有符號的!不過實現起來感覺不是很順暢,感覺可以優化的地方還很多,先貼一下 日後再來優化。另,思路主要是模擬手算的過程,計算方式在注釋裡有說清楚。biginteger.h ifndef big integer h def...

大整數(高精度)加減法

第一次寫,涉及大整數加減運算 先來看看加法,主要思想是逐位相加,進製加1 include include using namespace std void add int a,int b string str1,string str2 void print int a 輸出控制,多餘的0不要輸出 i...

整數加減法練習

程式自動產生隨機數 srand 設定種子為系統時間,以保證每次執行程式產生的隨機數有差別 然後使用者輸入結果,程式判斷使用者輸入是否正確 減法運算時要保證隨機產生的a要大於b 用while迴圈判斷,當然前提條件是使用者選擇的為減法運算,這裡只保證式子產生的結果為非負整數 include includ...