解决超大数相加的问题的一种思路是把整形转化成字符串,废话不多说直接上代码,已经调试通过。
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
string add(string str1, string str2)
{
int i;
string str;
int len_str1 = str1.length();
int len_str2 = str2.length();
int n = abs(len_str1-len_str2);
//长度对齐
if(len_str1 < len_str2)
for(i=0; i<n; i++)
str1 = "0"+ str1;
else
for(i=0; i<n; i++)
str2 = "0"+ str2;
len_str1 = str1.length(); //此时两个字符串的长度一样
int cf=0; //进位标志位
int temp; //存放两个数相加的和
for(i=len_str1-1; i>=0; i--)
{
temp = str1[i]-'0' + str2[i]-'0' + cf; //把字符串转化为整型
cf = temp/10;
temp = temp%10;
str = char(temp+'0') + str;
}
if(cf!=0)
str = char(cf+'0') + str;
return str;
}
int main()
{
string str1, str2;
cin >> str1;
cin >> str2;
cout << add(str1, str2) << endl;
return 0;
}