| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖, 1 人收藏
标题:关于求π/4的程序
只看楼主 加入收藏
ignewbie
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-7-24
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:7 
关于求π/4的程序
#include <stdio.h>
#include <math.h>
void main()
{                                  /*n和i在未初始化或赋值之前不能使用*/
    double sum=1,a,b,i;
    int n;
    scanf("%d",&n);                /*在未给i赋值使用了i*/
    a=1.0/(2*i-1);
    for (i=2;i<=n;i++)
    {  
      
       b=pow(-1.0,i-1);
       sum=sum+a*b;

    }

   printf("the value:%.3f\n",sum);
}
这个程序有很多不规范之处,导致结果不对,请高手在此算法的基础上修改使其正确!
搜索更多相关主题的帖子: include double 
2010-10-18 20:31
wzqsunb
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:130
注 册:2010-10-11
收藏
得分:0 
求π/4,你要精确到哪啊!π/4=1-(1/3)+(1/5)-(1/7)+.....
2010-10-18 20:48
wzqsunb
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:57
专家分:130
注 册:2010-10-11
收藏
得分:9 
#include<stdio.h>
#include<math.h>
void main()
{
   double e=0.1,b=0.5,c,d;
   long int i;                /*i: 正多边形边数*/
   for(i=6;;i*=2)            /*正多边形边数加倍*/
   {
      d=1.0-sqrt(1.0-b*b);     /*计算圆内接正多边形的边长*/
      b=0.5*sqrt(b*b+d*d);
      if(2*i*b-i*e<1e-15) break;         /*精度达1e-15则停止计算*/
      e=b;      /*保存本次正多边形的边长作为下一次精度控制的依据*/
   }
   printf("pie=%.15lf\n",2*i*b);       /*输出π的值/
 
}
*运行结果
     pie=3.141592653589794
这是求π的值,π/4你自己求吧!
2010-10-18 21:07
ignewbie
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-7-24
收藏
得分:0 
回复 楼主 ignewbie
不知道精确到什么地方才是这个程序最大的败笔!
谢谢指点!
2010-10-18 21:47
ignewbie
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-7-24
收藏
得分:0 
回复 2楼 wzqsunb
不知道精确到什么地方才是这个程序最大的败笔!
谢谢指点!
2010-10-18 21:48
ignewbie
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-7-24
收藏
得分:0 
回复 3楼 wzqsunb
你这个算法太高级了,办不了,还是根据π/4来吧!
2010-10-18 21:53
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:11 
楼主这样改试试:
程序代码:
#include <stdio.h>
#include <math.h>
void main()
{                                 
    double sum=1,a,b,i;
    int n;
    scanf("%d",&n);               
    for (i=2;i<=n;i++)
    { 

 a=1.0/(2*i-1);                    /* 将这一行放到循环体内  */
      
       b=pow(-1.0,i-1);
       sum=sum+a*b;

    }

   printf("the value:%.9f\n",sum);
   printf("the PI value:%.9f\n",4*sum);  /* 这一行为了查看得到的PI的值是否正确(与3.14159265比较) */
}
运行的时候n的值尽量大,比如10000 大概相当于精确到1/10000  
运行结果:
99999999
the value:0.785398166
the PI value:3.141592664


[ 本帖最后由 jack10141 于 2010-10-18 22:10 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-10-18 22:03
ignewbie
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-7-24
收藏
得分:0 
回复 7楼 jack10141
谢谢版主,人不错的!
2010-10-18 22:20
快速回复:关于求π/4的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018297 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved