GESP C++ 真题 · 逐题精解
首页C++五级真题 › 2026年6月 › 第9题

GESP 2026年6月 C++五级 单选题 第9题

C++五级单选题2026年6月第9题

所属知识点:查找与二分 难度要求:掌握 考频:—

在一个有序数组中查找第一个大于或等于 x 的元素位置(lower_bound),横线处应填写( )。
int lowerBound(vector<int>& a, int x) {
    int l = 0, r = a.size();
    while (l < r) {
        int mid = l + (r - l) / 2;
        if (a[mid] >= x) ______________;  // 在此处填入代码
        else l = mid + 1;
    }
    return l;
}

正确答案:C

题目解析
求「第一个 ≥ x 的位置」:当 a[mid] ≥ x 时,mid 本身可能就是答案,不能跳过它,要收缩右边界到 mid(r = mid)继续在左半找,选 C。若写 r = mid-1 会漏掉答案,写 l = mid 可能死循环。💡 lower_bound 的标准写法:满足条件时 r = mid,否则 l = mid + 1。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习