下面 C++ 代码执行后的输出是( )。
int loopCount = 0;
for (int i=0; i < 10; i++)
for (int j=1; j < i; j++)
loopCount += 1;
cout << loopCount;答案C。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。
整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。
【考点】嵌套循环|计数求和|边界条件
外层循环 i 遍历 0 到 9,内层 j 从 1 到 i-1。i=0,1 时内层不执行,i=2 贡献 1 次,i=3 贡献 2 次……直到 i=9 贡献 8 次。1+2+3+4+5+6+7+8=36。
选项 A 把 i 当成 1~10 累加得 55,选项 B 误将 i=1 计入一次,选项 D 只加到 i=8。最阴险的是内层条件 j < i,当 i=1 时 j=1 不满足条件,循环体根本不执行。很多人看到 j 从 1 开始就默认会跑一次,这是典型的边界陷阱。
若内层改为 j <= i,答案变成 45;若外层上限变为 9,答案变成 28。刷这类题先问:循环条件到底是 < 还是 <=?