请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): 程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意:部分源程序存在文件PROGl.C文件中。

admin2013-03-29  28

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

    程序运行后,如果输入精度0.0005,则程序输出为3.140578。
    注意:部分源程序存在文件PROGl.C文件中。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
double fun(double eps)
{
}
main()
{ double x;void NONO();
  printf("Input eps:");
  scanf("%lf",&x);printf("\neps=
%lf,PI=%lf\n",x,fun(x));
  NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函
数,输出数据,关闭文件。*/
  FILE*fp,*wf;
  int i;
  double x;
  fp=fopen("in.dat","r");
  wf=fopen("out.dat","w");
  for(i=0;i<10 ; i++){
  fscanf(fp,"%lf",&x);
  fprintf(wf,"%lf\n",fun(x));
  }
  fclose(fp);
  fclose(wf);
}

选项

答案double s; float n,t,pi; t=1;pi=0;n=1.0; s=1.0; //对各个累加项,累加积等赋初始化值 while((fabs(s))>=eps)//精度判断 { pi+=s;//pi存放累加和 t=n/(2*n+1);//每一项 s*=t; //累积 n++; } pi=pi*2;//求得π值 return pi;

解析 进入fun函数,根据前面的分析:
    (1)根据题意,需要把每一项累加起来;若每一累加项的值放在t中,后一项等于前一项累加项的值乘以n/(2*n+1)来求得。
    (2)根据公式将求到的π/2的值放到变量pi中,每累加一次,n的值就增加1,以便求下一个累加项,不断重复,直到满足题目中的精度要求。
转载请注明原文地址:https://kaotiyun.com/show/ZXJp777K
0

最新回复(0)