在 C++ 代码中,假设 $N$ 为正整数,则 N - N / 10 * 10 与 N % 10 都将获得 $N$ 的个位数。( )
答案A。根据C++基础知识分析判断。
注意题目中的限定词。不确定时用代入法或排除法。
【考点】整数除法|取模运算|表达式求值
GESP二级C++模块考察基础语法与数值运算。命题人把 N % 10 替换成 N - N / 10 * 10,就是卡住那些只会背"取余"结论、却不懂整数除法本质的人。
看到 N / 10 先想"整除截断",N / 10 * 10 就是把"去掉个位后的数"乘回10,结果仍是去掉个位后的数。再用 N 减去它,自然剩下个位。N % 10 是求余,也是直接拿个位。数学上 N = 10·(N / 10) + N % 10,移项得 N % 10 = N - 10·(N / 10) 即 N - N / 10 * 10。
陷阱是"偷换表达":把简单的取余写成复杂的代数变形,利用"只会背结论"的弱点。如果你只记"N % 10 是个位",而不理解 N / 10 是整除、乘10是还原,就会误以为两个表达式是"巧合"或"不同写法"。
命题人若把条件改成"N = 10·k + r (0 ≤ r < 10)",问你 N - N / 10 * 10 等于什么,答案就是 r。刷到这种题先问自己:命题人想考我的是"取余"还是"代数变形"?