看看问题出在哪里
计算公式:求π的值a
【问题描述】
已知可以用下列公式计算π的近似值。给定一个π的近似值e,编程利用下列公式求得最接近e并且小于e的近似值;,以及迭代次数n。
π/2=1+1!/3+2!/(35)+3!/(357)+(省略)+(n-1)!/(357(省略)*(2n-1))
【输入形式】
从控制台输入e( e大于2,小于3.1415925)的值。
【输出形式】
输出最接近e并且小于e的近似值π,以及迭代次数n(以一个空格分隔,并且输出π时要求小数点后保留7位有效数字)。
【样例输入】
3.14159
【样例输出】
3.1415896 18
#include<stdio.h>
int fac1(int x)
{
int i, m;
m = 1;
for (i = x; i > 0; i--)
{
m = i * m;
}
return m;
}
int fac2(int x)
{
int i, m;
m = 1;
for (i = x; i > 0; )
{
m = i * m;
i = i - 2;
}
return m;
}
int main() {
int n;
double e;
long double pi[1000] = { 1.0 };
do {
scanf_s("%lf", &e);
} while (e <= 2 || e >= 3.1415925);
for (n = 1; n < 998; n++)
{
pi[n] = pi[n-1]*1.0 + (fac1(n) * 1.0 / fac2(2 * n + 1));
if (pi[n] * 2 > e && pi[n - 1] * 2 <= e)
{
break;
}
}
printf("%.7lf %d\n", pi[n - 1]*2, n);
return 0;
}