这是我最近研究大数问题的一点心得,我发现用string s比用char *s要好用的多,因为在string中加入一个字符删除一个字符要简单很多,下面这个代码是只针对都是整数的大数进行的加法,如果想要进行小数的加法,只要记下小数点的位置,最后加上去就可以了。
#include <iostream>
#include<string>
using namespace std;
void add(string a,string b)
{
int la = a.size();
int lb = b.size();
string s = "";
int max = (la > lb ? la : lb);
s.insert(s.begin(), max+1,'0');//可能会进位所以多一个‘0’
for (int i = la - 1, j = lb - 1, k = s.size()-1;i>=0||j>=0; i--, j--,k--)//从s的最后一位数开始添加。
{
int temp;
if(i>=0&&j>=0)
temp= a[i] - '0' + b[j] - '0';
else if (i >= 0)
temp = a[i] - '0';
else if (j >= 0)
temp = b[i] - '0';
s[k] = temp % 10 + '0';
s[k - 1] = s[k - 1] - '0' + temp / 10 + '0';
}
if (s[0] == '0')
s.erase(s.begin());
cout << s;
}
void main()
{
string a = "111111111111111111111111";
string b = "22222222222222";
add(a, b);
system("pause");
}