执行如下 C++ 代码,当输入 4 时,其输出是( )。
int n, tot, i, j;
cin >> n;
tot = 0;
for (i = 1; i < n; i++)
for (j = 1; j < i; j++)
tot += 1;
cout << tot;双层循环题先拆解外层循环执行次数,再看内层循环随外层变量变化的执行次数。本题外层 i 从 1 到 n-1,内层 j 从 1 到 i-1,代入 n=4 逐轮累加即可。
选项 B(3)是只算了 i=2,3,4 的内层次数(1+2+3=6)却误以为只到 i=3;选项 D(10)是把 n(n-1)/2 公式直接套到 n=4 却忘了 i 从 1 开始导致少算一轮;选项 A(1)是误判内层循环条件。
本题考查 GESP 二级《算法与程序设计》中的嵌套循环与累加计数。命题人卡住的是"循环边界理解"与"累加逻辑"的脱节——很多考生会机械套用公式,却忽略 j < i 的实际执行次数。
看到双层循环先想"外层跑几轮、内层每轮跑几次"。本题外层 i 从 1 到 n-1(因为 i < n),内层 j 从 1 到 i-1(因为 j < i)。代入 n = 4:i = 1 时内层不执行;i = 2 时执行 1 次;i = 3 时执行 2 次;i = 4 时执行 3 次。累加:0 + 1 + 2 + 3 = 6。