进位,余数,
注意判断i ,j 的值,这两个字符串长度不一定相等
最后一个数据的处理
#include <iostream>
#include <string>
using namespace std;
string addStr(string str1, string str2)
{
string str;
int size1 = str1.size();
if (0 == size1)
{
return str2;
}
int size2 = str2.size();
if (0 == size2)
{
return str1;
}
int c = 0;
int i = size1-1;
int j = size2 -1;
int num1 = 0;
int num2 = 0;
int sum = 0;
for(;i>=0||j>=0||c>0;i--,j--) //注意 当i j都越界时,c可能要处理
{
num1 = i>=0 ? str1[i]-'0':0;
num2 = j>=0 ? str2[j]-'0':0;
sum = num1 + num2 + c;
c = sum/10;//进位
str.insert(str.begin(), sum%10+'0');//余数插入字符串中
}
return str;
}
int main()
{
cout<<addStr("910", "123")<<endl;
return 0;
}
来源:http://blog.csdn.net/neilol/article/details/48439107