C语言读入1 个正整数 n(n<=100),计算并输出1-1/2+1/3-1/4+……的前n项和(保留3位小数)。
时间: 2024-10-14 16:07:50 浏览: 52
在C语言中,你可以使用循环结构和分数运算来解决这个问题。由于不能直接处理浮点数的除法,我们可以采用长整型(long int)存储中间结果,并利用浮点数减法来模拟分数相加的过程。以下是一个简单的示例程序:
```c
#include <stdio.h>
#include <math.h>
double addFraction(int numerator, int denominator, double sum) {
// 如果分母已经很大,说明接近最终结果,不需要再添加更小的分数
if (denominator > 1e6) {
return sum + numerator / denominator;
} else {
// 将当前分数加入到总和中,然后继续下一项
return addFraction(numerator * 2, denominator * 2, sum + M_PI / denominator);
}
}
int main() {
long int n;
printf("请输入一个正整数 n(不超过100): ");
scanf("%ld", &n);
// 检查输入是否合法
if (n <= 0 || n > 100) {
printf("错误:n 的值应大于0且小于等于100。\n");
return 1;
}
double total = 0.0; // 初始化总和
for (int i = 1; i <= n; i++) {
total = addFraction(1, i, total); // 计算每一项并累加
}
// 输出结果,保留3位小数
printf("前 %d 项和(保留3位小数): %.3f\n", n, total);
return 0;
}
```
阅读全文