以下 C++ 代码段的输出是( )。
for (int i = 0; i < 4; i++) {
for (int j = 0; j <= i; j++) {
cout << j;
}
cout << "#";
}答案A。数组和位运算的代码追踪要特别小心:数组下标从0开始,位运算结果可能不直观。建议画图辅助。
位运算追踪时建议把数字写成二进制形式再逐位计算。
【考点】多重循环|范围控制|输出
1. 考纲定位:本题对应 GESP 三级“循环结构”模块。命题人专门设计这道题,就是要卡住“内层循环范围”和“输出顺序”这两个高频误区——学生要么把内层范围记成j<i,要么误以为只打印j的最后一个值。
2. 解题思维:外层i从0到3,内层j从0到i(含)。i=0时j=0打印0#;i=1时j=0,1打印01#;i=2时j=0,1,2打印012#;i=3时j=0..3打印0123#。四段拼接得0#01#012#0123#。
3. 陷阱拆解:B项错在起始j=1,忽略了j从0开始;C项错在只输出内层最后一个值;D项末尾多印了43#,属于对循环次数数错。这三个错误选项都是命题人利用学生“只看最后结果”或“记错范围”的惯性思维设计的。
4. 反命题思维:如果把内层条件改成j<i,答案会变;如果外层从1开始,输出会少一段。刷到类似题,先问自己“内层是j<=i还是j<i?”“输出的是j还是i?”