执行下面 C++ 代码段求序列 $-1+2+3-4+5+6-7+8+9-10+11+12\ldots$ 之值。例如输入 4,则计算序列前 4 项的值,规律如序列所示,输出为 0。下面说法中正确的是( )。
int N, tnt, i;
cout << "请输入正整数:";
cin >> N;
tnt = 0;
for (i = 1; i < N + 1; i++) // L1
if (i % 3 == 1) // L2
tnt += -i;
else
tnt += i;
cout << tnt;答案D。逐行追踪代码:从main开始,记录每个变量的值变化。注意循环的起止条件和累加过程。
逐行模拟时建议画表格记录变量值的变化过程,特别是循环体中的变化。
【考点】循环控制|条件判断|取模运算
GESP 一级"循环控制"模块第 3 级要求。命题人盯上的是:学生把 i < N + 1 看成多余写法,或死记"每三项一负"却不会用取模去实现——这两处是绝大多数人栽跟头的地方。