c语言数列加法,输入一个n,计算1+1/2+…+1/n的和结果保留六位小数
时间: 2025-02-14 21:20:16 浏览: 20
在C语言中,计算一个数列的求和,尤其是涉及分数的部分,可以使用循环和累加的方式来完成。对于这个特定的问题,1到1/n 的和可以用泰勒级数近似或等比数列求和公式来解决,但是由于涉及到浮点数精度和无限序列的实际截断,我们通常采用循环来逐项相加。
下面是一个简单的C程序示例,它会提示用户输入整数n,并计算从1到1/n的和,结果保留六位小数:
#include <stdio.h>
#include <math.h>
double sum_series(int n) {
double result = 0.0;
for (int i = 1; i <= n; ++i) {
result += 1.0 / i;
}
// 如果结果小于最小的double精度导致舍入误差,添加一个微小量避免溢出
if (result == 0 || isnan(result)) {
return 1e-6; // 避免数值为零造成的无穷大错误
} else {
return round(result * 1e6) / 1e6; // 用round函数四舍五入并转回六位小数精度
}
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
double sum = sum_series(n);
printf("1 + 1/2 + ... + 1/%d = %.6f\n", n, sum);
return 0;
}
请注意,这个程序对于较大的n值可能会遇到浮点数精度问题,因为计算机内部表示的小数不是无限精确的。因此,实际应用中,如果需要处理非常大的n值,可能需要使用更复杂的算法来减少累积误差。
相关推荐


















