题目编号
语言
全部语言
等级
全部等级
考查知识点
选择考查知识点 (0)
找到 1505 道单选题
EXY-SC-1455
第 291 题

高精度减法中,假设两个高精度数按低位在前存储,且已经保证被减数不小于减数。下面处理借位逻辑代码中横线处应填入( )。

if (a[i] < b[i]) {
    a[i + 1]--;
    ________________;
}
t = a[i] - b[i];
A

a[i] += 10

B

a[i] -= 10

C

b[i] += 10

D

a[i] = a[i+1] + 10

语言: C++
GESP真题 五级
2026.6
单选题号: 15
EXY-SC-1454
第 292 题

小杨在学校义卖会上负责打包“零食盲盒”。每个盲盒重量不同,快递盒最多承重 limit 克,每个快递盒最多装两个盲盒。为了尽量少用快递盒,他采用如下策略:

(1)每次把最轻的盲盒和最重的盲盒尝试放在一起;

(2)如果两者重量之和不超过 limit,就一起装;

(3)否则,只能让最重的盲盒单独装一盒。

下面代码用于计算最少需要多少个快递盒,则横线处应填入的是( )。

int minBoxes(vector<int>& w, int limit) {
    sort(w.begin(), w.end());
    int l = 0, r = w.size() - 1;
    int boxes = 0;
    while (l <= r) {
        if (w[l] + w[r] <= limit) {
            __________; // 在此处填入代码
        } else {
            r--;
        }
        boxes++;
    }
    return boxes;
}
A

l++;

B

r--;

C
l++;
r--;
D

boxes--;

语言: C++
GESP真题 五级
2026.6
单选题号: 14
EXY-SC-1453
第 293 题

在对长度为 $n$($n≥1$)的数组进行归并排序的过程中,mergeArray 函数(合并两个有序子数组的操作)被调用的次数是( )。

const int MAXN = 100005;
int a[MAXN];
int tempArr[MAXN];

void mergeArray(int left, int mid, int right) {
    int i = left;      // 左半部分起点
    int j = mid + 1;   // 右半部分起点
    int k = left;      // 临时数组下标

    while (i <= mid && j <= right) {
        if (a[i] <= a[j]) {
            tempArr[k++] = a[i++];
        } else {
            tempArr[k++] = a[j++];
        }
    }

    while (i <= mid) {
        tempArr[k++] = a[i++];
    }

    while (j <= right) {
        tempArr[k++] = a[j++];
    }

    for (int p = left; p <= right; p++) {
        a[p] = tempArr[p];
    }
}

void mergeSort(int left, int right) {
    if (left >= right) {
        return;
    }

    int mid = left + (right - left) / 2;
    mergeSort(left, mid);
    mergeSort(mid + 1, right);
    mergeArray(left, mid, right);
}
A

$n-1$

B

$log n$

C

$nlog n$

D

$2n$

语言: C++
GESP真题 五级
2026.6
单选题号: 13
EXY-SC-1452
第 294 题

下面哪句话最符合归并排序的思想?( )

A

每次选择最小元素放到前面

B

将数组分成两半分别排序,再合并两个有序部分

C

相邻元素两两交换

D

从左到右把元素插入有序区

语言: C++
GESP真题 五级
2026.6
单选题号: 12
EXY-SC-1451
第 295 题

下面代码段实现了快速排序的划分操作(以首元素为基准),横线处代码应填入( )。

int partition(vector<int>& arr, int low, int high) {
    int pivot = arr[low];
    int i = low, j = high;
    while (i < j) {
        while (i < j && arr[j] >= pivot) j--;
        while (i < j && arr[i] <= pivot) i++;
        if (i < j) swap(arr[i], arr[j]);
    }
    ________________; // 在此处填入代码
    return i;
}
A

swap(arr[low], arr[high])

B

swap(arr[low], arr[i])

C

swap(arr[i], arr[high])

D

arr[i] = pivot

语言: C++
GESP真题 五级
2026.6
单选题号: 11
当前页显示 291 - 295 ,共 1505 道单选题