如图所示
解释
3+8>9
用变量存储11
然后将11%10
存入容器,此时变量/=10
变量 = 2+2+变量
,再将5%10
存入容器,此时变量/=10
注意此时下面一位数字没有数字可以加了,故不进行运算
变量 = 1 + 变量
,最后变量%10
存入容器,再次变量/=10
很重要的一点来了,最后结束的时候要判断最高位是否有进位
假设最后是1+9
我们把10%10
存入容器,但并没有向前进位,故需要在最后进行判断
此时整个加法过程结束,但需要注意的是上文提到的变量需要在第一步就进行运算,即3+8+变量
默认值为0,因为在进行第一步个位+个位
的时候不需要考虑更低位是否有进位,只考虑整数加法不考虑浮点数(小数)
代码
#include
#include
using namespace std;
vector<int> add(vector<int> &A, vector<int> &B) {
vector<int> C;
int t = 0;
for (int i = 0; i < A.size() || i < B.size(); ++i) {
if (i < A.size()) {
t += A[i];
}
if (i < B.size()) {
t += B[i];
}
C.push_back(t % 10);
t /= 10;
}
if (t != 0) {
C.push_back(t);
}
return C;
}
int main() {
string a, b;
cin >> a >> b;
vector<int> A;
// 将A字符串逆序读入容器
for (int i = a.size() - 1; i >= 0; --i) {
A.push_back(a[i] - '0');
}
vector<int> B;
// 将B字符串逆序读入容器
for (int i = b.size() - 1; i >= 0; --i) {
B.push_back(b[i] - '0');
}
// 调用函数加
vector<int> C = add(A, B);
// 逆序输出结果
for (int i = C.size() - 1; i >= 0; --i) {
cout << C[i];
}
return 0;
}