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

选择题 · 答案 A

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

题目

采用如下代码实现检查输入的字符串括号是否匹配,横线上应填入的代码为( )。

#include <iostream>
#include <stack>
#include <string>

using namespace std;

bool is_valid(string s) {
    stack<char> st;
    char top;

    for (char& ch : s) {
        if (ch == '(' || ch == '{' || ch == '[') {
            st.push(ch);   // 左括号入栈
        }
        else {
            if (st.empty())
                return false;
            ________________________  // 在此处填入代码
            if ((ch == ')' && top != '(') ||
                (ch == '}' && top != '{') ||
                (ch == ']' && top != '[')) {
                return false;
            }
        }
    }

    return st.empty();   // 栈为空则说明所有括号匹配成功
}
答案:A

解题思维

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

常见错误

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

详细解析(节选)

【考点】栈操作(top/pop顺序)

1. 🎯 考纲定位

GESP六级C++必考栈操作。命题人专门在top与pop之间设陷阱——这是六级考生最容易栽跟头的地方,很多人背住"栈顶先取后弹"的口诀,但一到代码里就顺序搞反。

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