从最后一位开始正常的累加,当前位为sum / 10,进位为sum % 10,每一位存的结果存在stack中,最后输出stack即可
#include <iostream> #include <stack> using namespace std; int main() { string num1, num2; while (cin >> num1 >> num2) { int i = num1.length() - 1, j = num2.length() - 1, n1, n2, carry = 0; stack<int> st; while (i >= 0 || j >= 0 || carry > 0) { n1 = i >= 0 ? num1[i] - '0' : 0; n2 = j >= 0 ? num2[j] - '0' : 0; st.push((n1 + n2 + carry) % 10); carry = (n1 + n2 + carry) / 10; i--; j--; } while (st.size()) { cout << st.top(); st.pop(); } cout << endl; } }