大数求和,利用整型数组来实现,利用倒序,再注意进位的处理。
#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]; } }