GESP 五级 · GESP 202512 C++ 五级 第 15 题

选择题 · 答案 B

← 整套速查表 GESP 五级 全部真题

题目

下面代码实现了对两个数组表示的正整数的高精度加法(数组低位在前),则横线上应填写( )。

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;
答案:B

解题思维

根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。

常见错误

填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。

详细解析(节选)

【考点】高精度加法|进位传递逻辑|循环边界处理

1. 🎯 考纲定位

本题在《GESP 五级算法设计》大纲"高精度运算"模块,核心卡点是进位传递的时机与顺序。命题人故意把"push_back 与更新 carry"拆成两行,就是要筛掉那些只背结论、不理解"先写答案再更新进位"这一数学本质的选手。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断