中M2018春C入門和進階練習集-程式設計題50 7-50 近似求PI(15 分)
阿新 • • 發佈:2019-02-07
7-50 近似求PI(15 分)
本題要求編寫程式,根據下式求π的近似值,直到最後一項小於給定精度eps。
2π=1+31!+3×52!+3×5×73!+⋯+3×5×⋯×(2×i+1)i!+⋯
輸入格式:
輸入在一行中給出精度eps,可以使用以下語句來讀輸入:
scanf("%le", &eps);
輸出格式:
在一行內,按照以下格式輸出π的近似值(保留小數點後5位):
PI = 近似值
輸入樣例:
1E-5
輸出樣例:
PI = 3.14158
#include<stdio.h> double fact1(int n) { int i; double plus=1.0; for(i=1;i<=n;i++) { plus*=i; } return plus; } double fact2(int n) { int i; double plus=1.0; for(i=3;i<=2*n+1;i+=2) { plus*=i; } return plus; } int main(void) { double eps,sum=1.0,k; int i=1; scanf("%le", &eps); if (eps<=1) {do { sum+=fact1(i)/fact2(i); k=fact1(i)/fact2(i); i++; //printf("%d %lf %lf %lf %lf\n",i,fact1(i),fact2(i),k,sum); }while(k>=eps);} printf("PI = %.5lf",sum*2); return 0; }