GESP 六级 · GESP 202409 C++ 六级 第 7 题

选择题 · 答案 B · 考点:算法

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

题目

以下C++代码实现 $n$ 位的格雷码,则横线上应填写( )。

#include <iostream>
#include <vector>
#include <string>

using namespace std;

// 生成 n 位的格雷码
vector<string> generate_graycode(int n) {
    vector<string> graycode_list;
    if (n <= 0) {
        return graycode_list;
    }

    // 初始1位格雷码
    graycode_list.push_back("0");
    graycode_list.push_back("1");

    // 迭代生成 n 位的格雷码
    for (int i = 2; i <= n; i++) {
        int current_size = graycode_list.size();

        for (int j = current_size - 1; j >= 0; j--) {
            graycode_list.push_back("1" + graycode_list[j]);
        }

        for (int j = 0; j < current_size; j++) {
            ________________________  // 在此处填入代码
        }
    }

    return graycode_list;
}
答案:B

考点

算法

解题思维

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

常见错误

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

详细解析(节选)

【考点】格雷码生成算法|字符串前缀拼接|迭代修改

1. 🎯 考纲定位

GESP六级 C++ 考察算法流程设计与字符串操作的综合能力。命题人意图检测你是否真正理解格雷码的递归构造本质,而非机械套用 push_back。这道题是区分"只会调用库函数"和"懂算法原理"的硬指标。

同考点真题

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