#include<stdio.h>
#include<math.h>
void main()
{
int sign=1// 符号变量 因为要正1-3/1 所以 在进行第一步运算的时候正1-某某
int i=1// 此时的i 也可以等于count 用来存储运算次数 建议用count 我在这里就不改了
double pi=0.0// 我们要求的结果 pi
double n=1.0// 我们的分母
double trem=1.0// 我们的分式本身
while(fabs(trem)>=1e-6) //题干要求的条件表达式
{
pi+=trem //累加式pi=pi+trem
n+=2 // 分母每次加2
sign=-sign// 用来控制符号在这里同时也是充当分子的作用
trem=sign/n//分式本身=分子/分母
i++ // 每次运算完一遍+1
}
pi*=4// 这里也是根据题干来的 就相当于 1/2 *2 =1
}
望采纳谢谢 有什么不懂的可以随时追我
一个足以让你吐血的计算400位pi的C程序:int a=10000, b, c=2800, d, e, f[2801], g
main() {
for(b-cf[b++]=a/5)
for(d=0,g=c*2c -=14,printf("%.4d",e+d/a),e=d%a)
for(b=cd+=f[b]*a,f[b]=d%--g,d/=g--,--bd*=b)
}
理论上只要用大数算法扩了就能一直算下去。我在Palm上面实现的那个就是基于这个算法,没有扩,算到4680位(受到Palm平台32k数组的长度限制)。
这个程序的特点是:你抱着想看看算pi原理的希望来读这个程序,结果发现就是看了也还是看不懂~~
转的,但是百度知道不允许贴地址哦
第二种:
用C语言编程π*π/6=1/1*1+1/2*2+1/3*3+。。。+1/n*n
#include<stdio.h>
#include<math.h>
main()
{
int n,i
double s=0
printf("输入n:")
scanf("%d",&n)
for(i=1i<=ni++)
{s=s+1.0/(i*i)
}
printf("pai=%f",sqrt(s*6))
}
第三种:
求pi=(1+1/(1*3))*(1+1/(3*5))*(1+1/(5*7))…………直到最后一项的分数小于10的负6次方为止。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
double pi,i,j,sigh,term
i=1,j=3,sigh=1,term=1
while(sigh>1e-6)
{
sigh=1/(i*j)
term=(1+sigh)*term
i=i+2
j=j+2
}
pi=term
printf("pi=%f\n",pi)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)