| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2013 人关注过本帖
标题:请大家看一看我的求圆周率的程序错在哪?
只看楼主 加入收藏
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 
我帮修改了一下,答案基本正确了。。

#include <stdio.h>/*根据公式Pi=4(1-1/3+1/5-1/7+...)求圆周率*/
int main(void)    /*要求直到某项绝对值小于1e-6为止*/
{
    float t,p,P;
    int n=1;
    int s=1;
    p=1;      /*初始化为第一项*/
    t=1;      /*t一定要初始化,不然不能进入while循环*/
    clrscr();
    while(t>1e-6)
    {
        t=1.0/(2.0*n+1);
        s=-s;
        p=p+s*t;     /*p是累加起来的*/
        n++;
     }
     P=4*p;
     printf("%f",P);
     getch();
     return 0;
}

真理往往掌握在少数人手中,可现实却是少数服从多数!
2008-04-19 12:43
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
#include <stdio.h>
#include <math.h>
int main(void)              /*要求直到某项绝对值小于1e-6为止*/
{
    float n=1.0,t=1.0,Pi=0;//求和赋初值为1,即为第一项的值;
    int s=1;
//    clrscr();
    while(fabs(t)>1e-6)
    {
        n=n+2;
        s=-s;                //s,控制符号.
        t=s/n;
        Pi=Pi+t;
     }
     Pi=4*Pi;
     printf("%f",Pi);
//        system("pause");
     getch();
     return 0;
}
又改了一下,答案还是不对。
2008-04-19 13:06
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
while(fabs(t)>1e-6)
    {
        n=n+2;
        s=-s;               
        t=s/n;
        Pi=Pi+t;
     }
//此循环有问题;你可以逐步算一下,就会发现问题;
修改:
    while(fabs(t)>1e-6)
    {
        t=s/n;
        Pi+=t;
        s=-s;
        n+=2;
     }

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-19 13:29
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
书上有这个例题,是这样编的
#include<stdio.h>
#include<math.h>
void main()
{
 int s;
 float n,t,pi;
 t=1;pi=0;n=1.0;s=1;
 while(fabs(t)>1e-6)
 {
   pi=pi+t;
   n=n+2;
   s=-s;
   t=s/n;
  }
pi=pi*4;
printf("pi=%10.6f\n",pi);
}
2008-04-19 14:05
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
问题解决了,是我的while的循环体语句顺序弄错了,谢谢大家的指点,我会更加努力的。
2008-04-19 14:53
寒秋
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-4-19
收藏
得分:0 
.........................
#include<stdio.h>
#include<math.h>
void main()
{
    int s;
    float n,t,pi;
    t=1;pi=0;n=1.0;s=1;
    while(fabs(t)>1e-6)
      {
          pi=pi+t;
          n=n+2;         
          s=-s;
          t=s/n;
       }
    pi=pi*4;
    printf("pi=%10.6f\n",pi);
}
2008-04-19 17:05
laihulife
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-4-20
收藏
得分:0 
回复 1# 的帖子
#include <stdio.h>
int main(void)
{
    float pi;
    float  p=1;
    float  t=1.0;
    int n=1;
    int s=1;
    while(t>1e-6)
    {
    t=1.0/(2.0*n+1);
        s=-s;
    p=p+s*t;
        n++;
     }
     pi=4*p;
     printf("%f",pi);
}


这是我改的,但是结果是3.141507,把t限制为t>1e-8,结果还是没变,为什么呢?
2008-04-20 18:53
shanfengpk
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-4-15
收藏
得分:0 
#include "math.h"
main( )
{int s;
float n,t,pi;
t=1.0,pi=0,n=1.0,s=1.0;
while(fabs(t)>=1e-6) {pi=pi+t;n+=2.0;s=-s;t=s/n;}
pi=pi*4;
printf("n=%f'pi=%f\n",n,pi);
}
2008-04-20 21:43
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
因为浮点数只能精确到小数点后6位。
2008-04-21 16:44
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
给你贴个某人写的求圆周率的代码
直到现在我也没搞懂
#include <stdio.h>

long a=10000,b,c=2800,d,e,f[2801],g;
int main()
{
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%04d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
return 0;
}

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2008-04-22 01:07
快速回复:请大家看一看我的求圆周率的程序错在哪?
数据加载中...
 
   



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

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