Bootstrap

7-120 近似求PI (15 分)

本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

在这里插入图片描述

输入格式:

输入在一行中给出精度eps,可以使用以下语句来读输入:

scanf("%le", &eps);

输出格式:

在一行内,按照以下格式输出π的近似值(保留小数点后5位):

PI = 近似值

输入样例:

1E-5

输出样例:

PI = 3.14158

代码一:

#include<stdio.h>
#include<math.h>
int main()
{
int i=1;
double eps,n=1,m=1,t=1,sum=1;
scanf("%le", &eps);
    while(n>eps)
    {
        m=m*i;
        t=t*(2*i+1);
        n=m/t;
        sum=sum+n;
        i++;
    }
    printf("PI = %.5lf",sum*2);
    return 0;
}

代码二:

#include <stdio.h>
double f(int n)
{
    if(n==0)
        return 1;
    double x=1,y=1;
    for(int i=1;i<=n;i++)
    {
        x *=i;
        y *= 2*i+1;
    }
    return x/y;
}
int main()
{
    double eps;
    scanf("%le", &eps);
    int i=0;
    double sum=0;
    while(f(i) >= eps)
    {
        sum += f(i);
        i++;
    }
    sum += f(i);
    printf("PI = %.

代码三:

#define N 999999
double chen(int i)
{
  double result=1.0;
  int j=1;
  while(j<=i)
  {
    result=result*(2*j+1);
    j++;
  }
 return result;    
}
double fac(int m)
 {
	  double s=1.0;
	  for(int i=1;i<=m;i++) 
	  {
	   s=1.0*s*i;
	  }
	  return s;
 }
int main(void)
{
   double eps;
   double s=0;double d;
   scanf("%le",&eps);
   for(int i=0;i<=N;i++) 
   {
      d=1.0*fac(i)/chen(i);
      s=s+d;
      if(d<eps)break;	
   }
	 printf("PI = %.5lf",2.0*s);
   return 0;
 } 

代码四:

#include<stdio.h>
int main()
{
    double eps,i,item=1,sum=1;
    scanf("%le", &eps);
    for(i=1;item>=eps;i++)
    {
    item=item*i/(2*i+1);
     sum+=item;
    }
    printf("PI = %.5f",2*sum); 
}
;