编写函数fun,其功能是:根据以下公式求值(要求精度0.0005,即某项小于0.0005时停止迭代)。
程序运行后,若输入精度0.0005,则程序应输出为3.14…
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<math.h>
double fun(double eps)
void main ()
double x;
printf("Input eps:");
scanf("%If”,&x);
printf("\neps=%If,PI=%1f\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。