请编写一个函数fun,它的功能是:根据以下公式求 的值(要求满足精度0.005,即某项小于0.005时停止迭代)。 /2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1)) 程序运行后,如果输入精度0.005,则程序输出3.137130。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: */ #include <stdio.h> #include<stdlib.h> #include <math.h> double fun(double eps) { /*************Begin************/ /*************End**************/ } int main() { double x; FILE *wf,*in; printf("Input eps: "); scanf("%lf",&x); printf("\neps=%lf,PI=%lf\n",x,fun(x));
时间: 2023-07-18 22:46:11 浏览: 298
下面是实现所需的代码:
```c
double fun(double eps) {
double sum = 1.0;
double cur = 1.0;
int i = 1;
while (cur >= eps) {
cur = cur * i / (2 * i + 1);
sum += cur;
i += 1;
}
return sum * 2;
}
```
这个函数与第一题的 Python 版本实现类似,使用了一个 while 循环,每次计算一个新的项,直到计算出来的项小于精度要求时停止迭代。然后将计算出的每一项相加,最后将总和乘以 2 就是所求的结果。注意在 C 语言中,需要使用 `double` 类型来表示浮点数。
阅读全文