大数求和,利用整型数组来实现,利用倒序,再注意进位的处理。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s1, s2;
getline(cin, s1, '\n');
getline(cin, s2, '\n');
int size1 = s1.size();
int size2 = s2.size();
int size_res = max(size1, size2);
int num1[10000]{ 0 }, num2[10000]{ 0 };
int num_res[10000] { 0 };
// 倒序
for (int i = 0, j = size1 - 1; i < size1, j >= 0; i++, j--) {
num1[i] = s1[j] - '0';
}
for (int i = 0, j = size2 - 1; i < size2, j >= 0; i++, j--) {
num2[i] = s2[j] - '0';
}
// 各个位置相加
for (int i = 0; i < size_res; i++) {
num_res[i] = num1[i] + num2[i];
}
// 进位处理
for (int i = 0; i < size_res; i++) {
if (num_res[i] > 9) {
num_res[i + 1] += num_res[i] / 10;
num_res[i] %= 10;
if (i == size_res - 1) {
size_res++;
}
}
}
// 倒序输出
for (int i = size_res - 1; i >= 0; i--) {
cout << num_res[i];
}
}

京公网安备 11010502036488号