进位,余数,
注意判断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

posted on 2016-10-09 17:42  邶风  阅读(163)  评论(0编辑  收藏  举报