某单位工号的编码规则:编码总长 5 位,均为数字。前 4 位依次整除以 3 其值累加之和除以 10 的余数为第 5 位数字。如某工号为 76587,前 4 位分别整除以 3 后,商分别为 2、2、1、2,其累加之和为 7,除以 10 的余数为 7,故第 5 位为 7。下面代码依次输入前 4 位后,两个横线处分别应填的是( )。
int rst = 0, N;
for (int i = 0; i < 4; i++) {
cin >> N;
rst += __________; // L1
}
cout << __________; // L2A.
N % 3
rst / 10B.
N % 3
rst % 10C.
N / 3
rst / 10D.
N / 3
rst % 10答案D。循环补全要分析循环变量的初始值、条件和更新方式,确保能产生目标输出。
代入法验证时注意选项之间的细微差别。循环条件中的<和<=可能导致完全不同的结果。
【考点】循环结构|整除运算|取余运算
🎯 考纲定位:定位 GESP 二级循环与算术运算核心考点,卡住大量考生对“整除”与“取余”语法的混淆——看到“除以 3"就下意识写 N % 3,完全忽略“商”才是累加对象。
🧠 解题思维:看到“整除以 3 其值累加”立即锁定 N / 3,循环内 rst += N / 3 是核心操作;末尾“除以 10 的余数”直指 rst % 10。此类“累加商、取余末位”题的通法是:循环内只写除法,循环外只写取余。若误写 rst / 10 则输出高位,与题意“第 5 位数字”完全相悖。
🪤 陷阱拆解:A、B、C 分别用 N % 3 或 rst / 10 偷换概念:命题人利用“除以”一词诱导考生写取余,又用“余数为第 5 位”诱导写 rst / 10。若只背结论不读题,必选错——整除求商才是累加对象,取余求末位才是输出。
🔄 反命题思维:若改成“前 4 位整除 3 的余数累加”,L1 改 N % 3;若问“第 4 位数字”,L2 改 rst / 10。刷到类似题先问自己:究竟是求商还是求余?输出是末位还是高位?