本代码不为最优代码 ,仅供参考
#include<iostream>
#include<string>
#include<stack>
#include<algorithm>
using namespace std;
int main(){
string a;string b;
while(cin>>a){
cin>>b;
int l=max(a.size(),b.size());
int l1=a.size(),l2=b.size();int num1=0; char d[l];
for(int i=0;i<l;i++){
int q=0,w=0;
if(i<a.size()){
q=a[l1-1]-'0';l1--;
}
//;两边分别 取值
if(i<b.size()){
w=b[l2-1]-'0';
l2--;
}
//num1 为进位数 要摸为1 要么为0
int num =0;num=num1+q+w;num1=0;
if(num>=10){
num-=10;num1=1;
}
char tmp=num+'0';
//输入
d[i]=tmp;
}
string c=d;
c.resize(l);//这里有一个bug当l为10会多分配空间。。。 所以我用resize
reverse(c.begin(),c.end());
if(num1==1)cout<<"1";//判断最开头那位是否进位
for(int i=0;i<c.size();i++){
cout<<c[i];
}cout<<"\n";
}
}