下面代码实现了对两个数组表示的正整数的高精度加法(数组低位在前),则横线上应填写( )。
vector<int> add(vector<int> a, vector<int> b) {
vector<int> c;
int carry = 0;
for (int i = 0; i < a.size() || i < b.size(); i++) {
if (i < a.size()) carry += a[i];
if (i < b.size()) carry += b[i];
_________________________ // 在此处填入代码
}
if (carry) c.push_back(carry);
return c;
}A.
c.push_back(carry / 10);
carry %= 10;B.
c.push_back(carry % 10);
carry /= 10;C.
c.push_back(carry % 10);D.
c.push_back(carry);
carry /= 10;根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】高精度加法|进位传递逻辑|循环边界处理
本题在《GESP 五级算法设计》大纲"高精度运算"模块,核心卡点是进位传递的时机与顺序。命题人故意把"push_back 与更新 carry"拆成两行,就是要筛掉那些只背结论、不理解"先写答案再更新进位"这一数学本质的选手。