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

选择题 · 答案 D · 考点:模拟

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

题目

在下列代码的横线处填写(),可以使得输出是 “20 10”。

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

考点

模拟 讲解 →模拟 真题汇总 →

解题思维

这道题考的是整数运算和表达式求值,核心是逆向推导:先定最终输出 a=20、b=10,再顺着代码倒推横线处 a 必须等于 1020(1000+20),代入选项验证即可锁定答案。

常见错误

最容易栽跟头的是选 C,盯着输出里的 20 就以为 b*100+a 能凑出 20,却没注意 a 在前 b 在后,C 算出来是 2010 对 100 取余得 10、除以 100 得 20,输出会变成 10 20;其次是 A,把横线当成普通加法,忽略了后面除法和取余会彻底改写值;还有人会以为 D 随便拼个数就行,其实它必须严格满足除以 100 取整得 10、取余得 20 这两个约束,不能乱凑。

详细解析(节选)

考点定位

GESP 一级 C++「基本运算与表达式」模块。命题人刻意放这道题,就是要卡住一部分考生「不会逆向推导」的弱点——你只敢正向写代码,却不会从输出反推中间变量该是什么值。

解题心法

拿到这种填空改输出题,第一步永远先锁定最终输出:a 要变成 20,b 要变成 10。然后顺着代码往下走,看每一步操作对变量做了什么。

代码里关键两步:

这两个条件同时满足的数只有 1020(1000 + 20)。因此横线要填一个能算出 1020 的表达式。

同考点真题

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