编写函数fun(),其功能是:根据以下公式求的值(要求精度0.0005,即某项小于0.0005时停止迭代)。 程序运行后,若输入精度0.0005,则程序应输出为3.14…。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在

admin2012-07-18  27

问题 编写函数fun(),其功能是:根据以下公式求的值(要求精度0.0005,即某项小于0.0005时停止迭代)。

程序运行后,若输入精度0.0005,则程序应输出为3.14…。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填人你编写的若干语句。
试题程序:
#include
#include
#include
double fun(double eps)
{
}
void main()
{
  double x;
  printf("Input eps:");
  scanf("%1f",&x);
  printf("\neps=%1f,PI=%lf\n",
  x,fun(x));
}

选项

答案 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; }

解析 此题考查的是用迭代法求多项式的值。通过观察题目中给出的数学公式可知,后面一项是前面一项乘以n/(2*n+1),发现这个规律后,问题迎刃而解。通过定义double类型变量,并且赋初值,用来存放多项式的总和。此题中需要注意的是,表示每一项的s1和表示多项式之和的s,两者的初值都是1.0。
转载请注明原文地址:https://jikaoti.com/ti/wikiFFFM
0

最新回复(0)