题目描述
求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数。
输入
输入正整数n(n>0)。
输出
输出一个实数,保留3位小数,单独占一行。
样例输入 Copy
5
样例输出 Copy
0.917
#include <stdio.h> // 引入标准输入输出库,以便使用 printf 和 scanf 函数
int main() { // 主函数入口,程序从这里开始执行
int n, t = -1; // 定义整数 n 用于存储用户输入的正整数,t 初始化为 -1,用于控制项的符号
double sum = 0.0; // 定义双精度浮点数 sum,用于累加结果,初始值为 0.0
// 提示用户输入正整数 n
scanf("%d", &n); // 从标准输入读取一个整数 n,用户需要输入一个正整数
// 开始循环计算前 n 项的和
for (int k = 1; k <= n; k++) // 循环变量 k 从 1 增加到 n
{
t *= -1; // 每次循环时改变 t 的符号,奇数项为正,偶数项为负,因此 t 在每次迭代中取反
// 计算当前项并将其累加到 sum 中,(double)k 确保浮点除法
sum += (double)k / (2 * k - 1) * t; // 当前项计算公式:k / (2*k - 1),乘以符号 t
}
// 输出结果,保留三位小数
printf("%.3f\n", sum); // 打印 sum 的值,格式化为保留三位小数的浮点数
return 0; // 返回 0,表示程序正常结束
}