計算 1 - 1/2 + 1/3 - 1/4 + ... + 1/99 - 1/100,展示浮點數累加與奇偶項分離處理技巧。
級數 ∑(-1)^(n+1)/n 收斂於 ln(2) ≈ 0.693147,前 100 項部分和逼近此值。
#include
int main() {
double sum = 0.0;
for (int i = 1; i <= 100; i++) {
if (i % 2 == 1) // 奇數項:正號
sum += 1.0 / i;
else // 偶數項:負號
sum -= 1.0 / i;
}
printf("結果:%lf\n", sum);
return 0;
}
1.0 / i 強制雙精度運算,避免整數除法截斷double 提供足夠精度(15-17 位有效數字)i % 2 確定符號結果:0.688172
接近 ln(2),誤差約 0.005,隨項數增加收斂。
// 符號變量法
double sum = 0, sign = 1.0;
for (int i = 1; i <= 100; i++) {
sum += sign / i;
sign = -sign;
}
// 分離求和法
double odd_sum = 0, even_sum = 0;
for (int i = 1; i <= 100; i += 2) odd_sum += 1.0 / i;
for (int i = 2; i <= 100; i += 2) even_sum += 1.0 / i;
double sum = odd_sum - even_sum;
%lf 輸出 double,%f 亦可(printf 統一處理)此例強化浮點運算、循環累加、條件分支核心技能。