早教吧 育儿知识 作业答案 考试题库 百科 知识分享

编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).π/2

题目详情
编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代).
请编写函数fun,其功能是根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代).
π/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……+(1*2*3*4*……*n)/(3*5*7*……*(2n+1))
程序运行后,若输入精度为0.0005,则输出为3.1416
#include
#include
double fun ( double eps)
{ double pi=0,a=1,i;
for(i=1;a>=eps;i++){
pi=pi+a;
a=a*i/(2*i+1);
}
return 2*pi;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n",x,fun(x));
NONO();
}
double fun ( double eps)
{ double s=1.0,s1=1.0; int n=1;
while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1); /*求多项式的每一项*/
s=s+s1; /*求和*/
n++; } return 2*s; }
▼优质解答
答案和解析
无论是你的答案还是正确答案 都有问题
你的答案 问题在于自变量i设置成了double型 
浮点型 做自加操作的时候可能导致死循环的 也就是你的程序 如果精度设置的特别高会出问题


所谓的正确答案,没有这个问题 但是不符题意
即某项小于0.0005时停止迭代

正确答案中是某项小于精度后 把该项累加并在下一项停止迭代


下面是把你的程序改成了完全符合“正确答案”的代码


PS:题目中也有一个错误 当精度为0.0005时 输出的是3.141106 即保留四位小数位3.1411
要想输出3.1416 最低精度为0.00002
#include 
double  fun ( double  eps)
{    double pi=1,a=1;
\x09int i;
    for(i=1;a>=eps;i++){
        a=a*i/(2*i+1);
        pi=pi+a;
    }
    return 2*pi;
}
main( )
{ double  x;
  printf("Input eps:") ;
  scanf("%lf",&x); printf("\neps = %lf, PI=%.4lf\n", x, fun(x));//输出4位小数
}
看了编写函数fun,其功能是:根据...的网友还看了以下:

java题(考试了)五.编写程序(1、2题各13分,共26分)1.摄氏温度与华氏温度的转换公式为:  2020-05-13 …

汇编语言的最主要的功能是将汇编语言源程序翻译成目标程序。它还具有以下功能:对源程序进行检查,  2020-05-23 …

北宋司马光编写的《资治通鉴》是我国古代一部编年体的通史巨著.这部书按年代顺序记述的是()A.皇帝到  2020-06-10 …

用labview编写程序编写程序,设计一个简单的按钮测试系统。在前面板上添加一个按钮,要求完成以下  2020-06-29 …

400分求用MFC编程一个24点游戏!!1、提出总体方案的设计思想和原理,绘制程序流程图和描述程序  2020-06-29 …

在java中如果同一个包中父类在a.java中,子类在b.java中,编译时已成功编译父类,为何子  2020-07-17 …

用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出,一为原文输出;一为将字母变成其下一用  2020-11-23 …

C#一个简单问题10运行错误:编译错误说明:在编译向该请求提供服务所需资源的过程中出现错误。请检查下  2020-11-23 …

阅读下列材料:(18分)材料一我国近代前期民族企业发展状况表——根据陈旭麓主编《中国近代史》编制材料  2020-11-28 …

下面关于文学常识说法有误的一项是[]A.《左传》是中国古代一部编年体的历史著作。《左下面关于文学常识  2021-01-16 …