兩個大數相加

2021-09-24 03:22:39 字數 1537 閱讀 3463

前言我們知道在計算機語言中數字的表示範圍都是有限制的,例如我們熟知的int,float,double,long int,long long int等這些型別表示的數字範圍都是限制的。如果我們要對位數達到幾百位,上千位,甚至上萬位大的整數進行計算,這些型別顯然不能實現,因此我們可以用一些演算法來實現這些功能。

題目:兩個大數相加

思路

兩個大數我們可以用字串number1 ,number2(字元型陣列)來儲存

數字,及數字的和都是整型的

int a[500]=;

int b[500]=;

int c[501]=;

char number1[500];

char number2[500];

注意字元型別的轉換,字元型數字-『0』=整型數字

存入字串的順序與我們位數相加的順序正好相反,可以通過for迴圈來實現

for(i=t1-1,j=0;i>=0;i--,j++)

for(i=t2-1,j=0;i>=0;i--,j++)

然後依次讓對應位數相加,那麼問題來了怎麼實現呢?我們可以求出兩字串的長度(輸入的大數的位數)t1,t2,然後把最大值賦給maxl,注意不足的位數要補0(這個可以通過初始化來實現)。

maxt=(t1>t2?t1:t2);
對應位數相加

注意進製,兩個單位數相加 ,滿10進1,即bit=1(9+9=18),在這裡我們需要對滿10的數取餘相加,但要注意最後一位不取餘(如果取餘就需要增加一位肯定是1,cout<<1即可)

所以數字和最多比數字的位數多一位

for(j=0;j=10)

}

完整**

#include#includeusing namespace std;

int a[500]=;

int b[500]=;

int c[501]=;

char number1[500];

char number2[500];

int main()

for(i=t2-1,j=0;i>=0;i--,j++)

maxt=(t1>t2?t1:t2);

for(j=0;j=10)

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

cout<執行結果

兩個大數相加

兩個大數相加,暫時選擇簡單版本,使用兩個正整數相加,直接上 了,不再囉嗦了。include define maxnum 10000 bool inspectcharvalid char value void add char num1,char num2,char result int main i...

兩個大數相加

大數相加考慮到資料長度有限,因此採用字串的方式進行計算,還要考慮到進製的問題,看下 void big data add char num1,char num2 int intnum2 max len if num1 null num2 null length1 strlen num1 length2...

兩個大數相加

我們以前計算兩個整數的和,需要定義兩個整型變數來儲存兩個運算元。但是,若這兩個數大到任何整型型別都存放不下時,我們該怎麼來計算它們的和呢?這就是我們今天所討論的話題!解決思路 1 儲存問題 我們可以使用字串來儲存運算元,這樣不管運算元有多長都能放得下。2 計算問題 自定加法時,我們要考慮每一位的相加...