C语言:求π近似值

#include <stdio.h>
int main()
{
double term,p,b;
p=1.0,term=1.0;
for(b=2.0;b<=100.0;b+=2.0)
{
p=p*term;
term=term*(b*b)/(b*b-1);
}
p=p*2;
printf("p=%f\n",p);
return 0;
}
自学一个星期,π/2=(2*2)/(1*3)*(4*4)/(3*5)......捣鼓着瞎编,哪里不对啊

#include <stdio.h>
int main()
{
double term,p,b;
p=1.0,term=1.0;
for(b=2.0;b<=1000000.0;b++)
{
if((int)b%2==0)
{
p-=1.0/(2.0*b-1.0);
}
else
{
p+=1.0/(2.0*b-1.0);
}
}
p=p*4;
printf("p=%f\n",p);
system("pause");
return 0;
}
循环次数越多结果越精确

这里用的是莱布尼兹级数求pi追问

不明觉厉!先不说精准不精准,我的那个错在哪里?还有不知道是不是我编译器问题,加了“system(''pause");”运行不了

追答

删掉 system(''pause") 没有也可以

追问

算了,被自己研究出来了
#include
int main()
{
double p,b;
p=1.0;
for(b=2.0;b<=1000000.0;b+=2.0)
{
p=p*(b*b)/(b*b-1);
}
p=p*2;
printf("p=%f",p);
return 0;
}

”term“完全是多此一举了,哈哈,突然发现我的好简洁

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-03
int main 应该是void main
你想要输出什么呢 你这个程序会一直输出2.0
你想没循环一次就输出一个?那应该是
{
p=p*term;
term=term*(b*b)/(b*b-1);
p=p*2;
printf("p=%f\n",p);

}追问

求π值啊

第2个回答  2013-03-03
问下百度吧追问

⊙﹏⊙b汗 我这不是来百度了吗

相关了解……

你可能感兴趣的内容

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