GESP 四级 · GESP 202606 C++ 四级 第 4 题

选择题 · 答案 C · 考点:作用域与生命周期

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

题目

关于下面程序,说法正确的是( )。

void show() {
    int stars = 5;
}
int main() {
    cout << stars;
    return 0;
}
答案:C

考点

作用域与生命周期

解题思维

在纸上逐行模拟程序执行,重点追踪变量值变化和输出语句。按照题目输入代入计算。正确答案C。

常见错误

关键提醒:C++中的^是异或运算符,不是乘方!2^5=7而非32。这是最高频的错误。

详细解析(节选)

【考点】作用域|变量声明|编译规则

本题考查 GESP 四级"基础编程概念"中的变量作用域与编译规则。命题人专挑"函数内声明、函数外使用"这类边界场景,卡住那些只背"变量有值就能输出"的学生。

看到题先定位声明位置:stars 定义在 show 函数内部,作用域仅限该函数。main 里直接写 cout << stars 时,编译器找不到符号,直接报错。这类题通法是:1. 逐行标变量定义处;2. 检查使用点是否在作用域内;3. 若不在,编译必挂。

逐个拆选项:A 看似有值 5 就输出,但忘了 stars 根本没传出来;B 假设编译通过,却忽略作用域缺失;D 把 cout 当成特殊运算符,完全误解其用法。最阴险的是"只在 show 中有效"这句绝对化表述——若只记结论不追本质,就会以为"有效"就能用,掉进编译陷阱。

站在命题人角度:若把 stars 改成全局变量,答案变 A;若在 main 里先调用 show() 再输出,答案变 B。刷到类似题先问:考我作用域还是考我语法细节?

同考点真题

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