执行下面C++代码输出是()。
int temp=0;
for(int i=1;i<7;i++)
{
for(int j=1;j<5;j++)
{
if(i/j==2)
{
temp++;
}
}
}
cout<<temp<<endl;答案C。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。
位运算追踪时建议把数字写成二进制形式再逐位计算。
【考点】循环结构|整数除法|条件判断
🎯 考纲定位:本题考查 GESP 三级大纲"循环与条件"模块,命题人专门卡住考生对 C++ 整数除法的理解——在 i/j 运算中,5/2=2 而非 2.5,这导致大量考生误判满足条件的(i,j)对数量,把"i 是 j 的两倍"当成充要条件。
🧠 解题思维:外层 i∈[1..6]、内层 j∈[1..4],条件 i/j==2 等价于 2j≤i≤3j−1。逐行枚举:j=1 时 i=2;j=2 时 i=4,5;j=3 时 i=6;j=4 时 i 需≥8 无解。恰好 4 对满足条件,temp=4。通法:嵌套循环配合整数运算时,先导出代数不等式,再在循环域内计数,比盲目模拟更高效。
🪤 陷阱拆解:A 选项 10 是只统计循环总次数(6×4=24)再粗略估计;B 选项 8 是误把 i/j==2 当成 i==2j 且忽略截断,漏掉 i=5,j=2 这组;D 选项 3 是仅考虑 i=2j 的等式解,完全不懂整数除法。最阴险之处在于"i/j==2"被命题人包装成等式条件,诱导考生用乘法思维而非除法区间思维。
🔄 反命题思维:若把条件改成 i/j==3,则 j=1 时 i=3,4,5,6 共 4 组;若改成 i%j==0 且 i/j==2,则只有 3 组。刷到类似题先问自己:"这是浮点除还是整数除?截断会多算还是少算?"