| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2013 人关注过本帖
标题:请大家看一看我的求圆周率的程序错在哪?
只看楼主 加入收藏
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
 问题点数:0 回复次数:22 
请大家看一看我的求圆周率的程序错在哪?
#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
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
变量t一开始是多少?

" border="0" />
2008-04-18 15:51
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
p=1+s*t;
??

2008-04-18 16:16
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
变量t初始为1或0都试过了,还是不对啊?
2008-04-18 16:36
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
#include <stdio.h>/*根据公式Pi=4(1-1/3+1/5-1/7+...)求圆周率*/
int main(void)    /*要求直到某项绝对值小于1e-6为止*/
{
    float t,p,P;  //t = 1;
    int n=1;
    int s=1;
    clrscr();  //必须#include conio.h
    while(t>1e-6)
    {
        t=1/(2*n+1);  // 1应该是1.0, 否则/结果是整数,永远为0.
        s=-s;
        p=1+s*t;
        n++;
     }
     P=4*p;
     printf("%f",P);
     getch();
     return 0;
}

前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
2008-04-18 17:09
xiaoxiaoh16
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-4-18
收藏
得分:0 
???
p=1+s*t;???
p=p+s*t;
2008-04-18 17:20
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
正好我也看看吧,老师刚好布置了这个作业
2008-04-18 23:39
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
收藏
得分:0 
不对吧,按照改了以后答案是3.9998.....
2008-04-18 23:51
qwsfwsxx
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-19
收藏
得分:0 
修改了一下,
/*根据公式Pi/4=1-1/3+1/5-1/7+...求圆周率*/
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "math.h"

int main(void)    /*要求直到某项绝对值小于1e-6为止*/
{
    float t,p=1,P;//求和赋初值为1,即为第一项的值;
    int n=1;
    int s=1;//s,控制符号,
    //clrscr();
    while(fabs(t)>1e-6)
    {
        t=1.0/(2*n+1);//n为整数,1为整数,相除为0,改为1.0,得结果为实数
        s=-s;
        p=p+s*t;
        n++;
     }
     P=4*p;
     printf("%f",P);
system("pause");}
2008-04-19 02:19
心若止水
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2008-4-9
收藏
得分:0 
9楼的改法运行后是4.000000,还是不对啊?
2008-04-19 12:26
快速回复:请大家看一看我的求圆周率的程序错在哪?
数据加载中...
 
   



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

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