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

选择题 · 答案 D

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

题目

小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数 $M$ 和 $N$;然后将较大的数字放在较小的前面,拼成一个 4 位数;将这个 4 位数除以 3 的余数添加到4位数的后面,得到一个 5 位数;最后判断这个 5 位数能否被 14 整除。下面的 C++ 代码用于判断 $M$ 和 $N$ 是否符合全部要求,如果符合则输出 Y 否则输出 N。例如输入 85 和 79,可以拼出 85792,恰好是 14 的倍数,则输出 Y。关于下面代码描述正确的是( )。

int M, N, Q;
cin >> M >> N;

if(M > N)     // L1
    Q = M*100+N;
else
    Q = N*100+M;

if((Q*10+Q%3) % 14 == 0)   // L2
    cout << "Y";
else
    cout << "N";
答案:D

解题思维

答案D。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。

常见错误

逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。

详细解析(节选)

【考点】条件分支|整除与余数|构造数

1. 🎯 考纲定位(考点定位)

命题人设置这道题,是为了卡住那些只懂写代码、不懂读题的人。题目中的"拼数字游戏"是一个典型的"构造数"问题,而"除以 3 的余数添加到后面"这一步,很多人会忽略,直接拼 4 位数就判断是否能被 14 整除,结果就错了。这属于 GESP 一级大纲中的"基本编程能力"模块,考查的是对题目条件的精确理解和实现。

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