具体情形还应略作修改
#include <iostream.h>
#include <string>
using namespace std;
char a[1000];
void add(string str1, string str2, char* a) //str1+str2=a;皆字符串
{
if(str1.length()<str2.length())
str1.swap(str2); //保证str1>=str2
int len = str1.length();
str2.insert(0,str1.length()-str2.length(),'0'); //两者等长,便于操作,于计算无义
int i;
int carry = 0;
//两者相加,长度或len或len+1,故先取len
for(i=0;i<len;i++)
{
a[len-1-i] = (str1[len-1-i]+str2[len-1-i]-2*'0'+ carry)%10 + '0';
carry = (str1[len-i-1]+str2[len-1-i]-2*'0'+ carry)/10;
}
if(carry!=0)//有进位则必是1,打印之
cout<<'1';
cout<<a<<endl;
}
int main()
{
string str1,str2;
str1.clear();
str2.clear();
cin>>str1>>str2;
// cout<<str1<<endl<<str2<<endl;
add(str1,str2,a);
//cout<<str3<<endl;
return 0;
}