循环 计算圆周率 新手求帮忙

cwl353253492 2014-10-04 10:07:27
循环-02. 计算圆周率(15)

根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值。


输入格式:

输入在一行中给出小于1的阈值。

输出格式:

在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。

输入样例:
0.01
输出样例:
3.132157
#include <stdio.h>
int main()
{ int a,i,c,k;
float x,p,t;
scanf("%f",&x);
a=1;
c=1;
p=1;
i=0;
k=1;
t=0;
while(t>=x)
{
//p是总和。依次加上后来的t新项
i++; //i是上面的递增数
a=a*i; //分子依次兼程

k=k+2; //k是下面的递增数
c=c*k;
t=(1.0*a)/c; //后面的一项来与阈值比较
p=p+t; //p是总和。依次加上后来的t新项

}


printf("%.6f",2*p);



return 0;
}
...全文
460 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-10-08
  • 打赏
  • 举报
回复
仅供参考
#include <stdio.h>
long a=10000;
long b;
long c=2800;
long d;
long e;
long f[2801];
long g;
int main() {
    for(;b-c;) f[b++]=a/5;
//  while (1) {
//      if (0==b-c) break;
//      f[b]=a/5;
//      b++;
//  }

    //f[0 - 2800] = 10000/5
    for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)
          for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
//  while (1) {
//      d=0;
//      g=c*2;
//      if (0==g) break;
//      c-=14;
//      printf("%.4d",e+d/a);
//      e=d%a;
//      b=c;
//      while (1) {
//          d+=f[b]*a;
//          f[b]=d%--g;
//          d/=g--;
//          --b;
//          if (0==b) break;
//          d*=b;
//      }
//  }

    return 0;
}
emailtome 2014-10-07
  • 打赏
  • 举报
回复
Bigint ? Python for the task. Perl for the task. OpenSSL for the task. GNU MP (multi-precision) library
李天明 2014-10-06
  • 打赏
  • 举报
回复
楼主要问什么?程序编译不过?运行结果不对?
百曉生 2014-10-06
  • 打赏
  • 举报
回复
楼主想问什么
li4c 2014-10-06
  • 打赏
  • 举报
回复
#include<stdio.h>
int main()
{
	double a[50];
	double f(int, double *);
	double x,pi;
	int n = 0;
	pi = 0.0;
	scanf("%f",&x);
	do
	{
		n++;
		a[n] = f(n,a);
		pi = pi +a[n];
	}while(a[n] > x);
	printf("%f", 2 * pi);
}

double f(int n, double * a)
{
	if(n == 1) return 1.0;
	return a[n -1] * ( n - 1) / (2 * n - 1);
}
谁来调试这个烂摊子

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧