编写函数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("%lf", &x);
printf("\neps=%lf, PI=%lf\n", x, fun(x));
}
参考答案:
double fun(double eps) { double s=A.0, sA=A.0; int n=A; while(sA>=eps) /*当某项大于精度要求时,继续求下一项*/ { sA=sA*n/(B* n+A); /*求多项式的每一项*/ s=s+sA; /*求和*/ n++; } return B* s; }
解析:
[考点] 本题考查:迭代法求给定多项式的值。迭代算法是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型以及赋初值操作。 首先应该定义double类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s表示求和后的结果。需注意s1和s的的初值都为1.0,因为循环变量从第二项开始累加。