编写函数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
double fun ( double eps)
{double s,x;int n;
x=1.0;s=0.;n=1;
while(x>0.0005)
{s=s+x;x=x*n/(2n+1);n++;}
\x05return 2s;
}
main( )
{ double x;void NONO ();
printf("Input eps:") ;
scanf("%lf",&x); printf("\neps = %lf,PI=%lf\n",x,fun(x));
NONO();
}
这个程序说有一个错误.求教大神在哪里?
人气:481 ℃ 时间:2020-04-07 15:48:28
解答
无论是你的答案还是正确答案 都有问题
你的答案 问题在于自变量i设置成了double型
浮点型 做自加操作的时候可能导致死循环的 也就是你的程序 如果精度设置的特别高会出问题
所谓的正确答案,没有这个问题 但是不符题意
即某项小于0.0005时停止迭代
正确答案中是某项小于精度后 把该项累加并在下一项停止迭代
下面是把你的程序改成了完全符合“正确答案”的代码
PS: 题目中也有一个错误 当精度为0.0005时 输出的是3.141106 即保留四位小数位3.1411
要想输出3.1416 最低精度为0.00002
#include doublefun ( doubleeps){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( ){ doublex;printf("Input eps:") ;scanf("%lf",&x); printf("\neps = %lf, PI=%.4lf\n", x, fun(x));//输出4位小数}
推荐
- 下面函数pi的功能是:根据以下公式,返回满足精度(0.0005)要求的π的值,请填空.
- 编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回.m与n为两个正整数且要求m>n.
- 编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;m通过形参传入.
- 编写函数fun:求出二维数组周边元素之和,作为函数值返回二维数组的值在主函数中赋予
- C语言程序改错:下列给定程序中,函数fun()的功能是根据整型形参m,计算如下公式的值.
- 有积木18块棱长为1cm的正方体堆积而成的,请求出它们的表面积
- 写出大于1并且小于2的5个有理数
- 从一至九排列成四位数,尾数为八,这四位数字为两奇两偶
猜你喜欢
- 请你分别在4个5与4个9之间加上运算符号和括号,使结果=100.
- 使用材料的变化标志着人类文明的进步.下列用品的材料不是通过化学变化制取的是( ) A.铁器 B.青铜器 C.塑料器具 D.石器
- 宇宙间什么物质密度最大,什么最小
- 化学计算题:已知一个碳-12原子的质量为a kg,一个A原子的质量为m kg,则A原子的相对原子质量为多少?
- 已知a,b,c是△ABC的三边长,若方程(a-c)x^2+2bc+a+c=0有两个相等的实数根,则△ABC是什么三角形?
- Many students said they learnt by using English.这句话中为什么要用learnt
- 已知O为坐标原点,点M(-2,0),若N(x,y)满足不等式组 X大于等于1
- I often welk to school.的同义句