*下列给定程序中,函数fun的功能是:根据以下公式求PI(3.14)的值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。 PI/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: */ #include <stdio.h> #include <math.h> double fun(double eps) {double s,t; int n=1; s=0.0; /**********ERROR**********/ t=0; /**********ERROR**********/ while(t>eps) { s+=t; t=t*n/(2*n+1); n++; } /**********ERROR**********/ return (s); } int main() { double x; printf("\nPlease enter a precision: "); scanf("%lf",&x); printf("\nPi=%lf\n ",fun(x)); return 0; }
时间: 2023-07-18 19:51:00 浏览: 204
C语言程序设计-编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=12!+14!+…+1m!(m是偶数)
以下是修改后的函数fun的代码:
double fun(double eps) {
double s = 1.0; // 初始值为1
double t = 1.0; // 初始值为1
int n = 1;
while (fabs(t) > eps) { // 判断条件改为绝对值大于eps
t *= n / (2.0 * n + 1.0); // 计算当前项的值
s += t; // 将当前项加入到s中
n++; // n增加1
}
return s * 2; // 计算PI的值
}
解释:修改后的函数fun中,使用while循环计算公式中每一项的值,直到当前项的绝对值小于等于精度eps为止。在每一轮循环中,计算当前项的值t,将其加入到s中,n加1。最后将s乘以2得到PI的值,并返回。由于公式中的每一项都是正数,所以在计算精度时可以直接使用绝对值,不用考虑正负号。
阅读全文