输入精度e,使用格雷戈里公式(π/4=1-1/3+1/5+...)求π的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funpi(e)求π的近似值。
我们这里的e就是我们下文要输入的n的值(精度e),再此程序中我们可以主观输入我们想输入的值,从而规定其格雷戈里公式计算到后面的多少位。
比如在本题中,我主观输入0.000001(1e-6),从而得出其输出的值,在结尾printf的输出程序内,我们也可以去改变其小数的精度位数,从而得出更精确的π值(在下面的程序中的π都以pi来表示)。
#include<stdio.h> #include<math.h> double funpi(double x) { int sign=1; double n=1.0,term=1.0,pi=0.0; while(fabs(term)>=x) { pi=pi+term; n=n+2; sign=-sign; term=sign/n; } return pi; } int main() { double n; printf("输入:"); scanf("%lf",&n); double pi=0.0; pi=funpi(n); pi=4.0*pi; printf("输出:pi = %.6lf\n",pi); return 0; } #include<stdio.h> #include<math.h> double funpi(double x) { int sign=1; double n=1.0,term=1.0,pi=0.0; while(fabs(term)>=x) { pi=pi+term; n=n+2; sign=-sign; term=sign/n; } return pi; } int main() { double n; printf("输入:"); scanf("%lf",&n); double pi=0.0; pi=funpi(n); pi=4.0*pi; printf("输出:pi = %.6lf\n",pi); return 0; }
运行程序: