小明和弟弟在玩一个拼数字游戏,游戏规则是:二人各写一个两位正整数 $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。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】条件分支|整除与余数|构造数
命题人设置这道题,是为了卡住那些只懂写代码、不懂读题的人。题目中的"拼数字游戏"是一个典型的"构造数"问题,而"除以 3 的余数添加到后面"这一步,很多人会忽略,直接拼 4 位数就判断是否能被 14 整除,结果就错了。这属于 GESP 一级大纲中的"基本编程能力"模块,考查的是对题目条件的精确理解和实现。