#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
}
望采纳谢谢 有什么不懂的可以随时追我
楼主这个方法应当用随机数来做。思想:
在0到1之间取两个随机数,如果这两个随机数(x,y)在四分之一圆内,就加一。
最后用落在圆内的点数,除以总点数,就是PI了。
#include
<stdio.h>
#include
<conio.h>
#include
<stdlib.h>
#include
<time.h>
#define
N
300000
main()
{
long
i,n=0
float
x,y,pi
srand(time(NULL))
for
(i=0i<Ni++)
{
x=1.0*rand()/RAND_MAX
y=1.0*rand()/RAND_MAX
if
(x*x+y*y<1)
n++
}
pi=4.0*n/N
printf("pi=%f\n",pi)
getch()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)