代码如下:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void alg(string, string);
int main() {
string s1;
string s2;

cin >> s1 >> s2;
alg(s1, s2);

cout << endl;
system("pause");
return 0;
}
void alg(string s1, string s2) {
//1.反转
reverse(s1.begin(), s1.end());
reverse(s2.begin(), s2.end());
//2.使s1较长
if (s1.length() < s2.length()) {
swap(s1, s2);
}
int len1 = s1.length();
int len2 = s2.length();
//3.计算
int *res = new int[len1 + 1];
int addz = 0, temp = 0;
int i = 0;
//3.1.分成三份,第一份公共部分
for (; i < len2; i++) {
temp = addz + (s1[i] - '0') + (s2.at(i) - '0');
res[i] = temp % 10;
temp > 9 ? addz = 1 : addz = 0;
}
//3.2.较长部分
for (; i < len1; i++) {
temp = addz + s1[i] - '0';
res[i] = temp % 10;
temp > 9 ? addz = 1 : addz = 0;
}
//3.3.进位部分
addz == 1 ? res[len1] = 1 : res[len1] = 0;
//4.输出
int p = len1;
while (true) {
if (res[p] != 0)
break;
p--;
}
while (true) {
cout << res[p];
if (--p < 0)
break;
}

cout

运行效果:

大数相加_C++