下面 C++ 代码执行后的输出是?( )
int n,i,result;
n = 81;
i = 1, result = 1;
while (i * i <= n){
if (n % (i * i) == 0)
result = i * i;
i += 1;
}
cout << result;这题考循环条件边界和取余运算,别被平方数迷惑,逐次模拟 i 从 1 到 9 即可。
很多学生看到 81 是平方数就选 D,或者误以为循环会跑到 10,其实 i*i 一旦超过 81 循环就停了。更隐蔽的是把取余%当成除法,或者以为只要 i 能整除 81 就行,忽略了题目要求的是 i*i 整除 81。
【考点】循环结构|整除判断|平方数
解题思维:先观察循环条件 i*i≤n,i 从 1 递增,当 i=9 时 81≤81 成立,i=10 时 100>81 循环终止,所以 i 最大只到 9。每次判断 n%(i*i) 是否为 0,若为 0 则更新 result。81 是 9 的平方且在循环范围内,当 i=9 时 81%81=0 触发更新,result 赋值为 81;i=10 时 100>81 循环终止,输出 81。
陷阱拆解:A 选项 16 是 2⁴,但 81%16=1 不整除;B 选项 36 是 6²,81%36=9 不整除;C 选项 49 是 7²,81%49=32 不整除。命题人利用学生“看到平方数就认为能整除”的思维定式,81 作为完全平方数却故意放在循环末尾,若只关注循环条件而不验证整除关系就会丢分。
反命题思维:若将 n 改为 100,81 仍是最大平方数整除值;若 n 改为 99,result 仍为 81(因 81%99=81≠0)。这类题本质是考察“在满足循环条件的所有平方数中,哪些能整除 n”,而非单纯找最大平方数。
考频趋势:控制结构在题库中占 429 题,2024 年考了 138 题,2025 年 160 题,说明这类逻辑判断是高频考点;循环结构 609 题,2024 年 128 题,2025 年 158 题,GESP 二级更是 172 题,可见该题型在二级考试中非常常见,命题人喜欢在循环边界和取余运算上挖坑。
预测:基于近年数据,未来 GESP 二级和三级仍会高频出现此类“循环+取余+边界”题目,可能变化的是 n 的数值或循环条件(如改为 i*i<n),但核心考察点不变。暂无足够依据预测具体年份考题变化。