| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2013 人关注过本帖
标题:请大家看一看我的求圆周率的程序错在哪?
取消只看楼主 加入收藏
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
 问题点数:0 回复次数:6 
请大家看一看我的求圆周率的程序错在哪?
#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;
    clrscr();
    while(t>1e-6)
    {
        t=1/(2*n+1);
        s=-s;
        p=1+s*t;
        n++;
     }
     P=4*p;
     printf("%f",P);
     getch();
     return 0;
}
我运行的结果是-0。000000这是为什么?请大家解答。
搜索更多相关主题的帖子: 圆周率 int float void 
2008-04-18 15:48
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
变量t初始为1或0都试过了,还是不对啊?
2008-04-18 16:36
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
9楼的改法运行后是4.000000,还是不对啊?
2008-04-19 12:26
心若止水
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
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
问题解决了,是我的while的循环体语句顺序弄错了,谢谢大家的指点,我会更加努力的。
2008-04-19 14:53
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
因为浮点数只能精确到小数点后6位。
2008-04-21 16:44
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
好象不大对啊,f[b++]=a/5;即为  f[b++]=10000/5=2000;2000是一个常量不变的啊。
2008-04-22 10:22
快速回复:请大家看一看我的求圆周率的程序错在哪?
数据加载中...
 
   



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

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