如果一个整数 $N$ 能够表示为 $X\times X$ 的形式,那么它就是一个完全平方数,下面 C++ 代码用于完成判断 $N$ 是否为一个完全平方数,在横线处应填入的代码是( )。
int N;
cin >> N;
for(int i = 0; i <= N; i++)
if(________________)
cout << N << "是一个完全平方数\n";答案D。先分析已有代码的功能,确定输出目标,再反推横线处需要的代码。可用代入法验证。
将每个选项代入横线处验证是最可靠的方法。注意代码的完整逻辑和输出格式。
【考点】数论基础|循环结构|条件判断
1. 考纲定位 GESP 一级"数学基础"模块,专门考查完全平方数的概念理解。命题人卡住的是"数学定义转编程条件"的转化能力——很多考生能背"完全平方数"定义,但一到代码里就张冠李戴。
2. 解题思维 看到"完全平方数"立刻想到定义:存在整数 i 使 i×i=N。题目已给出 for 循环遍历 i,只需在条件里写 i*i==N。这是最基础的"数学概念→程序条件"映射,以后遇到"判断质数/判断回文/判断是否被某数整除",套路完全一样:先写数学等式,再套进 if 括号。
3. 陷阱拆解 A 项 i==N*N 把乘方方向反了,i 是循环变量,N 是待判断数,这条件永远不成立(除非 N=0 或 1)。B 项 i*10==N 考的是"10 的倍数"概念,完全偏题。C 项 i+i==N 考的是"偶数"概念,偷换了"平方"这个核心词。四个选项都是把数学运算符号换掉,命题人就是在测试"能不能分清 i*i 和 i==i*i 的区别",只背结论不看运算符号必错。
4. 反命题思维 如果改循环上限为 i*i<=N 再判断 i*i==N,答案不变但效率提升 49%;如果换成判断 N 是否为立方数,条件要改成 i*i*i==N。刷到"数字性质判断"类题,先问自己"这道题到底在考哪个数学等式",别被循环变量带偏。