问题 问答题

编写函数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。

单项选择题
单项选择题 B型题