可乐88989 发表于 2014-3-13 12:22:58

高手帮我看下,哪里出问题了结果不是3.141592?

#include<stdio.h>
#include<math.h>
void main()
{
        int f=1;
        double m=1.0,h=1,z=0,p=0,pi=0;
        while(fabs(h)>1e-6)
        {
                f=-f;
                m=m+2;
                h=f/m;
                z=z+h;
        }
        pi=4*z;
        printf("pi=%ld\n",pi);
}

可乐88989 发表于 2014-3-13 12:38:25

哪里错了啊

littleqiang 发表于 2014-3-13 12:46:41

:sweat:你打印的是%ld

超级忍者龟 发表于 2014-3-13 13:22:54

while里面顺序错了:
h = f/m;
m++++;
f = -f;
z = z + h;
就行了,然后把printf改成%f

可乐88989 发表于 2014-3-14 05:40:22


#include<stdio.h>
#include<math.h>
void main()
{
        int f=1;
        double m=1.0,h=1,z=0,p=0,pi=0;
        while(fabs(h)>1e-6)
        {
                h=f/m;
                m=m+2;
                f=-f;
                z=z+h;
        }
        pi=4*z;
        printf("pi=%d\n",pi);
}
还是不行啊?

未闻丶花名 发表于 2014-3-14 09:49:48

路过看看= =!

nicho_Y 发表于 2014-3-14 11:05:10

%d只能打印整数把,改为%f就可以打印小数

jackchen10 发表于 2014-3-14 13:48:56

哎···简单的C程序,我也是入门的····

可乐88989 发表于 2014-3-20 12:49:08


#include<stdio.h>
#include<math.h>
void main()
{
      int f=1;
      double m=1.0,h=1,z=0,p=0,pi=0;
      while(fabs(h)>1e-6)
      {
                h=f/m;
                m=m+2;
                f=-f;
                z=z+h;
      }
      pi=4*z;
      printf("pi=%f\n",pi);
}
终于搞对了
页: [1]
查看完整版本: 高手帮我看下,哪里出问题了结果不是3.141592?