下面的 C++ 代码执行后将输出 18 行 “OK”。( )
int i,j;
for (i = 8; i > 2; i-=2)
for (j =0; j < i; j++)
printf("OK\n");答案A。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。
整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。
【考点】循环控制|变量作用域|程序执行流程
【命题意图】GESP 二级要求掌握基础循环嵌套,但真实考试中 80% 考生死在"外循环变量语义"上——他们习惯把循环变量当普通计数器,却忽略它同时控制内循环层数。这道题就是专门卡住这个盲点:外循环变量 i 既是迭代器又是内循环边界,多数人会误算成 8+8+8=24 或 8+6+4+2=20。
看到嵌套循环先抓两层关系:内循环次数由外循环变量决定,外循环变化步长由 i-=2 固定。
外循环:i 从 8 开始,每次减 2,条件 i>2 才继续 → i 取值 8,6,4 共三层。 内循环:每层 j 从 0 到 i-1 → 分别执行 8、6、4 次。
总执行次数=8+6+4=18 次,对应 18 行 OK。