#include <iostream>
#include <string>
using namespace std;
string& big_plus(string& num1, string& num2)
{
//把num1固定为位数较大的那个数,方便后面处理
if(num1.size() < num2.size())
{
std::swap(num1, num2);
}
int flag = 0,a,b,sum;//flag是进位标记
for( int len1 = num1.size(); len1 > 0; --len1)
{
a = num1[len1 - 1] - '0';//取num1低位
b = 0;
for(int len2 = num2.size(); len2 > 0; --len2)
{
b = num2[len2 - 1] - '0';//取num2低位
}
sum = a + b + flag;//num1与num2对应位上的数字相加,再加上进位
if( sum >= 10)
{
num1[len1 - 1] = '0' + sum % 10;
flag = 1;
} else {
num1[len1 - 1] = '0' + sum;
flag = 0;
}
}
//如果两个数对应位都加完了,进位位是1,说明位数要增加1了
//比如99+1,加完之后,变成了三位数100,其实就是再在前面加一位1
if(1==flag) num1="1"+num1;
return num1;
}
int main()
{
string num1;
string num2;
while(cin>>num1>>num2){
cout<<"num1:"<<num1<<endl;
cout<<"num2:"<<num2<<endl;
cout<<"sum:"<<big_plus(num1,num2)<<endl;
}
return 0;
}
result: