在 C++ 中表达式 N * 2 % N 中如果 $ N $ 的值为正整数,则其值为 2。( )
答案B。根据计算机/编程基础知识分析判断。
仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。
【考点】整数运算|取模运算|运算符优先级
考纲定位:GESP 一级 C++“数据类型与运算”模块,专门考查取模运算的性质。命题人盯住学生容易混淆“除”与“取余”的弱点,把看似简单的乘法取模包装成陷阱题。
解题思维:先识别运算顺序,乘法优先级高于取模,等价于 (N×2) % N。根据取模定义,x % y 等于 x 除以 y 的余数。因为 2N 是 N 的整数倍,2N ÷ N = 2 余 0,所以 (N×2) % N = 0。这一类题的通法是:若 a 是正整数,则 (k×a) % a 恒等于 0,任何倍数取模自身必为 0。
陷阱拆解:命题人把“商”偷换成“余数”。学生看到 N×2 很容易想成 2,又看到 % N 会下意识认为结果还是 2。绝对化表述“如果 N 为正整数,则其值为 2"是致命漏洞——把 N=1 代入验证:1×2 % 1 = 2 % 1 = 0,直接证伪。这种“换皮不换核”的表述,专卡死记结论者。
反命题思维:若把表达式改为 N×2 % (N+1),答案会怎样?命题人想考的是你是否理解取模运算对除数的依赖性。刷到类似题先问“命题人想考我什么”,别被表面符号带偏。