求派。(二级C语言程序设计题)

2022-04-11 19:40:07 浏览数 (1)

题目描述:

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

程序运行后,如果输入精度0.0005,则程序输出为3.140578

注意:部分源程序存在文件 progl.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

部分代码:

代码语言:javascript复制
#include <stdio.h>
#include <math.h>
double  fun ( double  eps)
{

}

main( )
{ double  x;void NONO ();
  printf("Input eps:") ;
  scanf("%lf",&x); printf("neps = %lf, PI=%lfn", x, fun(x));
  NONO();
  getchar();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i ;
  double x ;

  fp = fopen("C:\WEXAM\000000000000\in.dat","r") ;
  wf = fopen("C:\WEXAM\000000000000\out.dat","w") ;
  for(i =  ; i <  ; i  ) {
    fscanf(fp, "%lf", &x) ;
    fprintf(wf, "%lfn", fun(x)) ;
  }
  fclose(fp) ;
  fclose(wf) ;
}

参考答案:

本题的考核点是求派的值的算法,循环语句的使用。

解题思路:通过循环语句判断公式中某项是否在精度范围之内,以控制迭代。

代码语言:javascript复制
int n=;
    double down=,up=;
    double one,pi=;
    one=(double)up/(double)down;
    while(one>=eps)
    {
        pi =one;
        n  ;
        up=up*n;
        down=down*(*n );
        one=(double)up/(double)down;
    }
    return pi*;

0 人点赞