| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1206 人关注过本帖
标题:运行结果不正确。
只看楼主 加入收藏
penghao511
Rank: 2
来 自:安徽
等 级:论坛游民
帖 子:23
专家分:25
注 册:2011-9-1
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:11 
运行结果不正确。
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int n=3,sign=1;
    float PI=1.0,term;
    while(fabs(term) >= pow(10,-6))
    {
        sign=-1*sign;
        term=sign/n;
        n=n+2;
        PI=PI+term;
        }
        printf("PI=%6.5f",PI*4);
        return 0;
    }

这题是求π值的。
π/4=1-1/3+1/5-1/7+…
大神帮我查看下哪里出错了。Thank you!
2011-11-01 10:39
pkwangxinjun
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:170
注 册:2010-8-29
收藏
得分:2 
#include<stdio.h>
#include<math.h>
int main()
{
    float n=3,sign=1;
    float PI=1.0,term;
    while(fabs(term) >= pow(10,-6))
    {
        sign=-1*sign;
        term=sign/n;
        n=n+2;
        PI=PI+term;
    }
    printf("PI=%6.5f",PI*4);
    return 0;
}
2011-11-01 11:01
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:2 
int n=3,sign=1;
这两个变量都是整型,term=sign/n;就变为整除,

2011-11-01 11:02
xd1103121524
Rank: 2
等 级:论坛游民
帖 子:27
专家分:49
注 册:2011-8-29
收藏
得分:2 
#include<stdio.h>
#include<math.h>
int main()
{
    int n=3,sign=1;
    float PI=1.0;
    float term=1.0;
    while(fabs(term) >= pow(10,-6))
    {
        sign=-1*sign;
        term=(float)sign/(float)n;
        n=n+2;
        PI=PI+term;
    }
    printf("PI=%6.5f\n",PI*4);
    return 0;
    }
2011-11-01 11:10
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:2 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    float n=3.0,sign=1.0;
    float PI=1.0,term=0.0;
    do
    {
        sign=-1*sign;
        term=sign/n;//sign和n必须是浮点数否则隐式转换丢失精度
        n=n+2.0;
        PI=PI+term;
        printf("%f\n",term);
     }
     while(fabs(term) >= pow(10,-4));//改为-4,太大运行的太久(自己修改精确度)
     printf("PI=%6.5f\n",PI*4);
     return 0;
}

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-11-01 11:26
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int sign=1;
    double PI=1.0,n=3,term=1;
    while(n<= 100000)
    {
        sign=-1*sign;
        term=sign/n;
        n=n+2;
        PI=PI+term;
        }
        printf("PI=%6.5f",PI*4);
        return 0;
    }
这样运行更快
2011-11-01 13:44
Afah
Rank: 2
等 级:论坛游民
帖 子:40
专家分:70
注 册:2011-8-28
收藏
得分:2 
程序代码:
#include "Stdio.h"
#include "math.h"
int main(void)
{
  int t=1,i;
  float x,s=0;
  for(i=1;i<=1000;i++)
  {
    x=t*1.0/(2*i-1);
    s+=x;
    t*=-1;
  }
  s*=4;
  printf("%f\n",s);
  getch();
  return 0;
}
2011-11-02 23:34
superjian
Rank: 2
等 级:论坛游民
帖 子:8
专家分:15
注 册:2011-9-25
收藏
得分:2 
这里只有2点小毛病。
1.term 在while循环fabs用它之前没有赋值,只需要将其赋为任意大于pow(10,-6)的数即可,以保证循环可以进入。
2. term=sign/n;应该在赋值前执行强制类型转换。term=(float)sign/n。

[ 本帖最后由 superjian 于 2011-11-5 23:34 编辑 ]
2011-11-05 23:33
weiwei555
Rank: 5Rank: 5
来 自:中国
等 级:职业侠客
帖 子:179
专家分:323
注 册:2011-3-4
收藏
得分:2 
回复 楼主 penghao511
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
    int n=3,sign=1;
    float PI=1.0,term; //你没给term赋初值,所以用do……while 方便
     do
    {
        sign=-1*sign;
        term=(float)sign/(float)n;//强制转换
        n=n+2;
        PI=PI+term;
      }while(fabs(term) >= pow(10,-6));

        printf("PI=%6.5f",PI*4);
        return 0;
}
2011-11-06 13:47
福利费
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:109
专家分:197
注 册:2010-9-26
收藏
得分:2 
#include<stdio.h>
#include<math.h>
int main()
{
    int sign=1;
    float PI=0,term=1,n=1.0;
    while(fabs(term) >= pow(10,-6))
    {
        PI=PI+term;
           n=n+2;
         sign=-sign;
         term=sign/n;
        }
        printf("PI=%6.5f",PI*4);
              return 0;
    }
大哥你的肯定结果不对啊 你开始就等于3了


2011-11-06 23:18
快速回复:运行结果不正确。
数据加载中...
 
   



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

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