c语言 计算π的值

#include <stdio.h>
#include <math.h>
main()
{
int i,j;
float pi=0,a;

for(i=1,j=1;fabs(a)>=1e-6;i++,j+2)
{
if(i%2==0)
a=-1/(float)j;
else
a=1/(float)j;

pi=pi+a;
}

printf("PI的近似值为%d",4*pi);

}

计算不出结果是为什么?

第1个回答  2012-02-02
好像是这个公式把
π/4 = 1-1/3+1/5-1/7……
要是这样的话,就我下面的代码
#include <stdio.h>
#include <math.h>
main()
{
int i,j=1;
float pi=0;
for(i=1;1.0/i>=1e-6;i+=2)
{
pi+=j*1.0/i;
j*=-1;
}
printf("PI的近似值为%d",4*pi);
}
看我的代码,有什么感想?
第2个回答  2012-02-02
for(i=1,j=1;fabs(a)>=1e-6;i++,j+2) //差等号,j的值没变
改为:
for(i=1,j=1;fabs(a)>=1e-6;i++,j+=2)追问

#include
#include
main()
{
int i,j;
float pi=0,a;

for(i=1,j=1;fabs(a)>=1e-6;i++,j=j+2)
{
if(i%2==0)
a=-1/(float)j;
else
a=1/(float)j;

pi=pi+a;
}

pi=pi*4;

printf("PI的近似值为%d",pi);

}

改成了这样但还是不对啊

追答

我勒个去,最后那个printf输出把我害惨了,该用%f啊,你用的是%d难怪结果一直不对。
还有就是for循环那儿的处理,for是先判断条件的在运行代码,所以第一次判断条件时a没赋值。
完整代码如下:

#include
#include
void main()
{
int i,j;
float pi=0,a=1;

for(i=1,j=1;;i++,j=j+2)
{
if(i%2==0)
a=-1/(float)j;
else
a=1/(float)j;

if(fabs(a)<1e-6) break;

pi=pi+a;
}

pi=pi*4;

printf("PI的近似值为%10.8f\n",pi);
}

本回答被提问者采纳
第3个回答  2012-02-07
太无聊了,根本没有大数运算,还不如直接acos(-1)
第4个回答  2012-02-05
你的for循环用的有问题吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网