题目描述:
计算 1-3+5-7+…+97-99 的值,请将代码未完成的部分填入,使之完整。
代码:
#include <iostream>
using namespace std;
int main()
{
int sum = 0;
// 从 1 开始,每次步长为 2,即 1, 3, 5, ..., 99
for (int i = 1; i <= 99; i += 2)
{
if ( (1) ) { // 检查是否为加项
sum += i; // 如果是加项,累加
}
else {
sum -= i; // 如果是减项,累减
}
}
cout << "表达式的值是: " << sum << endl;
return 0;
}
提示:
遍历的奇数 i 为:1, 3, 5, 7, 9, 11, …,一直到 99。
当 i = 1 时,i / 2 = 0
当 i = 3 时,i / 2 = 1
当 i = 5 时,i / 2 = 2
当 i = 7 时,i / 2 = 3
当 i = 9 时,i / 2 = 4
…
i 为奇数遍历, i / 2 产生了一个连续的整数序列:0, 1, 2, 3, 4, …,这个序列代表 i 在奇数序列中的"索引"
i | i / 2 | 操作 |
---|---|---|
1 | 0 | 加 |
3 | 1 | 减 |
5 | 2 | 加 |
7 | 3 | 减 |
9 | 4 | 加 |
11 | 5 | 减 |
13 | 6 | 加 |
15 | 7 | 减 |
17 | 8 | 加 |
19 | 9 | 减 |
… | … | … |
97 | 48 | 加 |
99 | 49 | 减 |
因此,(i / 2) % 2 == 0 可以实现按照奇数位置进行交替加减
当然,也可以直接为 i % 4 == 1