方法:這裡用了資料結構棧,實際上棧更方便實現高精度加法。
步驟:1、第乙個資料加數按輸入順序(高位到低位)入棧1。此時棧頂為最低位
2、第二個資料加數按輸入順序(高位到低位)入棧2。此時棧頂為最低位
3、將棧1、棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。
4、處理多餘的棧1、棧2。
5、直接pop出棧3,即正好的從高位到低位的結果。
完整的實現**如下:
[cpp]view plain
copy
#include "iostream"
#include "stack"
using
namespace std;
stacks1;
stacks2;
stacks3;
char c1[100];
char c2[100];
int main(void)
for(int i=0;i
int tmp=0;
while(!s1.empty() && !s2.empty())
while(!s1.empty()) //處理多餘的棧1
while(!s2.empty()) //處理多餘的棧2
if(tmp) //處理多餘的進製
printf("兩個數相加的結果為:");
while(!s3.empty()) //直接pop出棧3,即正好的從高位到低位的結果
cout
return 0;
}
執行效果圖如下:
任意長度的高精度大整數加法
方法 這裡用了資料結構棧,實際上棧更方便實現高精度加法。步驟 1 第乙個資料加數按輸入順序 高位到低位 入棧1。此時棧頂為最低位 2 第二個資料加數按輸入順序 高位到低位 入棧2。此時棧頂為最低位 3 將棧1 棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。4 處理多餘的棧...
任意長度的高精度大整數加法
方法 這裡用了資料結構棧,實際上棧更方便實現高精度加法。步驟 1 第乙個資料加數按輸入順序 高位到低位 入棧1。此時棧頂為最低位 2 第二個資料加數按輸入順序 高位到低位 入棧2。此時棧頂為最低位 3 將棧1 棧2均pop出棧頂做加法,並考慮進製,結果入棧3,這時棧3正好是低位入棧。4 處理多餘的棧...
高精度 大整數加法
求兩個不超過200位的非負整數的和。有兩行,每行是乙個不超過200位的非負整數,可能有多餘的前導0。一行,即相加後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。22222222222222222222 33333333333333333333 本題考察的是高精度計算...