BCSP-X · 2024 BCSP-X 上半年活动基础知识测评(小学低年级组) 第 5 题

选择题 · 答案 D

← 整套速查表 BCSP-X 全部真题

题目

执行下列 C++ 代码,程序的输出是:

int a = 1, b, c = 2;
a = b + c;
b = a + c;
c = a + b;
cout << c << endl;
答案:D

解题思维

这题考程序阅读与变量作用域,拿到题先别急着算,先看变量有没有初值——b 没初始化,赋值又依赖它,这就是坑。

常见错误

最容易错的是以为变量没写初值就是0,或者把未定义行为当成确定的数来算。其实C++标准规定局部变量若未初始化,其值是不确定的,后续任何依赖它的运算结果都不可预测,所以不能硬算出一个数字。

详细解析(节选)

这道题考查的是C++程序阅读能力,核心知识点是变量的初始化与作用域规则。命题人喜欢在这种基础题里挖坑,往往不是考复杂的算法,而是考你是否真正理解“未初始化变量”的含义——很多初学者会默认局部变量没写初值就是0,或者以为编译器会自动补0,这完全是误区。本题的坑就藏在第二行“a = b + c”:b 从未被赋值,它的值是不确定的,导致a的值随之不确定,进而b = a + c、c = a + b也全部陷入不可预测的状态,最终cout输出的结果自然也无法确定。正确的思路不是去模拟计算,而是识别出变量b未初始化这一事实,从而判断整个程序的行为是未定义行为(undefined behavior),因此答案只能是“受编译器影响,无法确定输出”。在考频趋势上,根据历年真题数据,此类程序阅读与变量作用域的题目出现频率较低,仅占0.3%,属于低频考点,但因其隐蔽性强、易被忽视,命题人仍喜欢在基础题中设置陷阱。从历年趋势看,这类题目未来可能继续以单选形式出现,考察学生对变量初始化规则的敏感度,但暂无足够数据支撑更具体的预测。解题技巧上,遇到程序阅读题,不要急着代入数值计算,先逐行检查每个变量的定义与赋值,特别留意是否有未初始化的局部变量、是否有循环边界错误、运算符优先级是否搞混等。本题的关键就是抓住“b未初始化”这一细节,从而否定所有具体数值的选项。避坑方面,学生常会误选A(5)或B(0),以为b=0或b=1,这是典型的“默认值幻觉”;也有人选C(3),可能是把某一步的中间结果当成了最终答案。这些错误都源于对C++变量存储规则的误解。总之,这题看似简单,实则是对基础概念的深度检验,提醒我们在做程序阅读题时,务必严谨对待每一个变量的状态,尤其是未初始化的情况。

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