C语言计算圆周率

PI 的值可以通过以下两种方法计算出来,

π/4=1-1/3+1/5-1/7……
编写循环程序,当这两种计算方法所得到的偏差小于0.000001时停止计算,并输出PI的值及所需要计算的项数。

这是我写的程序,但是不知道为什么运行不出结果。求帮忙
#include<stdio.h>
#include<math.h>
void main()
{
double p=0,q;
int i;
for(i=1;;i++)
{
p+=(double)6/(i*i);
q=(double)4*pow(-1,i+1)/(2*i-1);
if(fabs(sqrt(p)-q)<1e-6)
break;
}
printf("PI is %lf,项数为%d",q,i);
}
另一种方法没打出来

第1个回答  推荐于2017-10-05
#include<stdio.h>
#include<math.h>
int main(){
double p=0,q=0;
int i;
for(i=1;;i++){
p+=6*1.0/(i*i);
q+=4*1.0*pow(-1,i+1)/(2*i-1);//q后面少一个+
if(fabs(sqrt(p)-q)<1e-6)
break;
}
printf("PI is %lf,项数为%d",q,i);
return 0;
}

追问

谢啦
还想问一下return 0 是用来干什么?一直不太明白

追答

如果是 int main,那么需要 return 一个值。这个值一般是 0,表示没有出现异常情况正常返回。当然也可以 return -1 或者其他值,返回非零值表示主函数执行过程中的异常情况。具体什么数字代表什么异常,可以由编程者自己定义。

本回答被提问者采纳
第2个回答  2015-05-04
 #include "stdio.h"
void main()
{
 int n=0;
    double i=1;
    double sum=0;
    while((1/i)>0.0000001)
    {
     n++;
     if(n%2==0) i=i*(-1);
     sum=sum+1.0/i;
     if(i<0) i=i*(-1);
     i+=2;
    }
    printf("%lf",sum*4);
}

 //刚少了项数

#include "stdio.h"
void main()
{
 int n=0;
    double i=1;
    double sum=0;
    while((1/i)>0.0000001)
    {
     n++;
     if(n%2==0) i=i*(-1);
     sum=sum+1.0/i;
     if(i<0) i=i*(-1);
     i+=2;
    }
    printf("%lf,项数为%d",sum*4,n);
}

追问

不好意思之前题目缺少一个条件,现在是全的了。谢谢

第3个回答  2018-08-24
绝对精妙
#include<stdio.h>
long a=10000,b,c=2800,d,e,f[2801],g;
main()
{
for(;b-c;) f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
scanf("%s");
return 0;
}

相关了解……

你可能感兴趣的内容

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