| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3621 人关注过本帖
标题:菜鸟问题,求π,求教高手解惑!
只看楼主 加入收藏
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
[bo]以下是引用 [un]失败呀[/un] 在 2008-2-2 10:52 的发言:[/bo]

利用公式π/4≈1-1/3+1/5-1/7+...求π的近似值,直到最后一项绝对值小于0.000001.
请教一下高手下面程序有多少错,错在那?
#include<stdio.h>

void main()
{
    int i=0;
    float a,b;
         a=0;
    for(i=0;(i*2+1)<=1e6;i++)
         {
          b=1/(i*2+1);

    if(i%2==0)
    a=a+b;
    else
    a=a-b;
        }

        printf("%lf\n",4*a);


}现在改了,但还是不行。

共三个错误
2008-02-02 23:31
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
收藏
得分:0 
程序代码:
#include<stdio.h>

void main()
{
    double i,j,sum=0;

    for(i=1,j=1;;i+=2)
    {
        sum+=j/i;
        j*=-1;
        if(i>1e6)
            break;
    }
    printf("%1.9lf\n",4*sum);
    system("pause");
}
2008-02-03 01:09
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
收藏
得分:0 
[bo]以下是引用 [un]失败呀[/un] 在 2008-2-2 10:52 的发言:[/bo]

利用公式π/4≈1-1/3+1/5-1/7+...求π的近似值,直到最后一项绝对值小于0.000001.
请教一下高手下面程序有多少错,错在那?
#include

void main()
{
    int i=0;
    float a,b;
         a=0;
    for(i=0;(i*2+1) ...

int i=0;改成double i;就行了
2008-02-03 01:19
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
[bo]以下是引用 [un]sxn0508[/un] 在 2008-2-3 01:19 的发言:[/bo]
int i=0;改成double i;就行了

你这个是越改越错
2008-02-03 01:20
tequila
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-2-1
收藏
得分:0 
给个笨一点的办法,希望对你有用
#include <stdio.h>
void main()
{
    float i;
    float Pi,a=0,b=0.0;
    for (i=1;2*i+1<100000;i+=2)
        a-=1/(2*i+1);
    for (i=1;2*i-1<100000;i+=2)
        b+=1/(2*i-1);
    Pi=4*(a+b);
    printf("Pi=%f\n",Pi);
}
2008-02-03 02:00
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
收藏
得分:0 
[bo]以下是引用 [un]雨中飞燕[/un] 在 2008-2-3 01:20 的发言:[/bo]


你这个是越改越错

真失败,忘了还有个if([color=Blue]i%2==0)[/color]了,添个(long)就好了
if((long)i%2==0)
2008-02-03 02:14
aladbccn
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-2-3
收藏
得分:0 
1. check the range of "int"  10E6?
2. b=1.0/(i*2.0+1.0);  TC2.0
2008-02-03 11:45
snvxv
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-2-1
收藏
得分:0 
#include<stdio.h>

void main()        /*只改了下面3个地方*/
{
    long i;             /* 为了跑1e4 以上所以改的long*/
    float a,b;
         a=0;
    for(i=0;(i*2+1)<=1e5;i++)   /*我机子只能跑到1e5  1e6跑不上去*/
         {
          b=1.0/(i*2+1);  /*注意这里是1.0*/

    if(i%2==0)
    a=a+b;
    else
    a=a-b;
        }

        printf("%lf\n",4*a);


}
2008-02-03 13:11
hhlwlj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-2-3
收藏
得分:0 
一点小建议
先说,我不是高手,
你可以用求菲布拉基数列的方法来试一下咯。
然后再把求出来的值带到那个1.3.5.7.......的位置~~~
很简单的。
网上一找就有。
我以前就试验过。
我不提供代码。
怕你不自己思考了。
2008-02-03 21:06
hhlwlj
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2008-2-3
收藏
得分:0 
你i的数据类型的最大长度不够啦。
2008-02-03 21:08
快速回复:菜鸟问题,求π,求教高手解惑!
数据加载中...
 
   



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

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