前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >求派。(二级C语言程序设计题)

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

作者头像
pigeon
发布2022-04-11 19:40:07
6450
发布2022-04-11 19:40:07
举报
文章被收录于专栏:电子荣耀

题目描述:

请编写一个函数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=%lf\n", 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, "%lf\n", 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*;
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子荣耀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档