7-15 计算圆周率(15 分)
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。
2π=1+31+3×52!+3×5×73!+⋯+3×5×7×⋯×(2n+1)n!+⋯
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输入样例:
0.01
输出样例:
3.132157
#include<stdio.h>
//t,n,m得是double型,阶乘会超过整型的范围
int main(){
double d;//精度
double sum=1;//从1 开始,便于找后面的规律
double n=1,m=2;//实现阶乘
double temp=1;//用于判断和精度的大小
int i=2;//用于实现3*5*7。。。
double t=3;
scanf("%lf",&d);//必须得位lf
while (temp>=d)//这里发现变异错误,注意考虑中英文输入的问题
{
temp=n/t;
sum+=temp;
n=n*m;
m++;
t=t*(2*i+1);
i++;
}
printf("%.6f",sum*2);//注意是2倍
return 0;
}