执行下面C++代码段求序列 -1+2+3-4+5+6-7+8+9-10+11+12...... 之值。例如输入 4 ,则计算序列前4 项的值,规律如序列所示,输出为 0 。下面说法中正确的是( )。 int N, tnt, i; cout > N; tnt = 0; for (i = 1; i < N + 1; i++) // L1 if (i % 3 == 1) // L2 tnt += -i; else tnt += i; cout << tnt;
A:L1行中 i < N + 1 应该修为 i < N 才会符合预期
B:L2行中 i % 3 == 1 应修改为 i % 3 == 0 才会符合预期
C:L2行中 i % 3 == 1 修改为 i % 3 与当前程序效果相同
D:当前代码能实现题目所描述计算目标
正确答案:D
答案解析
分析序列符号规律:每三项为一组,首项为负,后两项为正。循环变量i从1开始递增,判断i对3取模的结果决定符号。当i % 3 == 1时对应每组第一项,应取负;其余情况取正。原代码在L2行使用i % 3 == 1判断负号条件,符合分组规律。L1行for循环条件i <= N控制累加前N项,边界正确。累加过程通过条件分支更新tnt值,输出结果。需验证模运算结果与项位置的对应关系是否匹配符号周期规律。
试卷来源:202603 CCF-GESP编程能力等级认证C++一级真题