用格雷戈里公式求给定精度的Π值。使用格雷戈里公式求Π的近似值,要求精确到最后一项的绝对值小于给定精度eps。
Π/4=1-1/3+1/5-1/7+···
要求输出Π值和循环次数i
这是一个求累加和的问题,可用“sum=sum+第i项”的循环算式。项数用i表示,项用item表示。
此题没有显式地给出循环次数,只是提出了精度要求。
在反复计算累加的过程中,item的绝对值从1开始越来越小,一旦某一项的绝对值小于eps(即|item|<eps),就达到了给定的精度,计算终止。因此循环条件为|item|>=eps。
题目要求最后一项的绝对值小于给定精度eps,而循环语句中计算出小于eps的item时,循环终止,该项item没有累加到sum。因此循环语句后添加sum=sum+item,将最后一项累加。
实例实现代码为:
#include<stdio.h>
#include<math.h>
int main()
{
int i,flag,a;
double eps,pi,sum,item;
item=1;
i=flag=a=1;
sum=0;
printf("Enter eps:");
scanf("%lf",&eps);
while(fabs(item)>=eps){
sum=sum+item;
i++;
a=a+2;
flag=-flag;
item=flag*1.0/a;
}
sum=sum+item;
pi=4.0*sum;
printf("pi=%lf\ni=%d",pi,i);
return 0;
}
运行结果截图为: