| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2509 人关注过本帖
标题:用公式1-1\3+1\5-1\7+1\9···求圆周率 错在哪里
只看楼主 加入收藏
白水而已
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-2-22
收藏
 问题点数:0 回复次数:8 
用公式1-1\3+1\5-1\7+1\9···求圆周率 错在哪里
用公式1-1\3+1\5-1\7+1\9···求圆周率
下面是我写的一段代码,在Dev-c++中编译没错,但得到的结果是PI=-5.333333
肯定是我那一段写错了,检查了很多遍,觉得没错啊,也修改了很多边就是得不
到正确结果
各位看一看到底哪里错了
/*利用公式求圆周率的近似值*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
    double PI,a=0;
    int i,b;
    int ss(int);
    for(i=1;1/(2*i-1)>1.0e-6;i++)
    {
        b=ss(i);
        a+=(double)1/(2*i-1)*b;
    }
        b=ss(i);   
        a+=(double)1/(2*i-1)*b;
        PI=4*a;
        printf("PI=%g",PI);
        system("pause");
        return 0;
}
int ss(int t )
{
   int y;
    if(y%2==1)
    return 1;
    else
    return -1;
}
搜索更多相关主题的帖子: 圆周率 公式 
2008-03-04 20:48
白水而已
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-2-22
收藏
得分:0 
忘了说了
要求最后一项的绝对值小于0.000001

[img]
  http://down./pic3/aa60338398.jpg  
[img\]
2008-03-04 20:57
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
收藏
得分:0 
回复 1# 的帖子
很明显的一个问题是:函数ss()中的局部变量 y 没有赋初值!
2008-03-04 21:14
Kid_X
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:216
专家分:515
注 册:2007-10-8
收藏
得分:0 
错误的关键是 for循环当中的条件错了,>左边结果是整形的,i=1是,左边=0,不满足条件,跳出了循环。其他有没有问题不清楚。
2008-03-04 21:25
白水而已
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-2-22
收藏
得分:0 
我自己又改了一下PI=2.66667    还是不懂楼上的
如下
/*利用公式求圆周率的近似值*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
    double PI,a=0;
    int i,b;
    int ss(int i);
    for(i=1;1/(2*i-1)>1.0e-6;i++)
    {
        b=ss(i);
        a+=(double)1/(2*i-1)*b;
    }
        b=ss(i);   
        a+=(double)1/(2*i-1)*b;
        PI=4*a;
        printf("a=%g,PI=%g",a,PI);
        system("pause");
        return 0;
}
int ss(int i )
{
   
    if(i%2==1)
    return (1);
    else
    return (-1);
}

[img]
  http://down./pic3/aa60338398.jpg  
[img\]
2008-03-04 21:27
白水而已
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-2-22
收藏
得分:0 
明白了

[img]
  http://down./pic3/aa60338398.jpg  
[img\]
2008-03-04 21:29
Ethip
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:771
专家分:0
注 册:2008-1-18
收藏
得分:0 
一不小心的错误
for(i=1;1/(2*i-1)>1.0e-6;i++)
其中i是int类型,那么1/(2*i-1) = 0
改为1.0 / (2*i-1)>1.0e-6就OK!
2008-03-04 21:44
xfcyjhb
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:116
专家分:0
注 册:2008-2-26
收藏
得分:0 
回复 7# 的帖子
同意!

多C多智慧,将C进行到底.........
2008-03-05 08:46
白水而已
Rank: 1
来 自:武汉
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-2-22
收藏
得分:0 
谢谢各位啊

[img]
  http://down./pic3/aa60338398.jpg  
[img\]
2008-03-06 17:55
快速回复:用公式1-1\3+1\5-1\7+1\9···求圆周率 错在哪里
数据加载中...
 
   



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

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