具体情形还应略作修改
#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; }