GESP 二级 · GESP 202303 C++ 二级 第 13 题

选择题 · 答案 C

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

题目

在下列代码的横线处填写(),使得输出是 50 10。

#include <iostream>
using namespace std;
int main() {
    int a = 10, b = 50;
    ________; // 在此处填入代码
    b -= a;
    a += b;
    cout << a << " " << b << endl;
    return 0;
}
答案:C

解题思维

这题本质是逆向推导。先锁定最终 a=50, b=10,再根据后面两步反推横线处执行后 a 应为 40、b 应为 50。代入初始值验算,只有 C 能把 a 从 10 变成 40 且不碰 b,后续才能凑出答案。

常见错误

最容易栽跟头的就是选项 A 和 B。A 看起来像交换,但 a -= b 是减法,a 会变成 -40,完全跑偏;B 是 a += b,a 变成 60,虽然离 50 近,可 b 没变,后面 b -= a 就会把 b 减成 10,a += b 再变回 60,输出是 60 10,错。D 直接把 a 赋成 50,b 还是 50,随后 b -= a 变成 0,a += b 变成 50,输出 50 0,也不对。很多学生只背结论,不看执行顺序,就会误选。

详细解析(节选)

【考点】变量赋值|运算符优先级|顺序执行

1. 考纲定位

GESP 二级「C++编程」模块「基本语法」考点。命题人卡住绝大多数考生的弱点:看到输出反推答案时,习惯直接凑数,却忘了代码是按顺序执行的,每一步变量值都在变。这道题本质考的是"给定最终结果,倒推初始操作"的逆向调试能力。

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