当前位置:首页 » 编程语言 » 求圆周率的值公式c语言代码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

求圆周率的值公式c语言代码

发布时间: 2022-11-26 16:06:17

A. c语言:圆周率的计算

在for循环后加一句: sum -= f;
你多加了最后那个小于epsioon的值。

B. 用C语言写出计算圆周率的程序

double s = 0;//面积
double pi = 0;//圆周率
double d=200;//直径(值越大圆周率越精确)
double r = d/2;//半径
for(int i=1;i<=d;i++){
for(int j=1;j<=d;j++){
if((i-r)*(i-r)+(j-r)*(j-r)<=r*r){
s++;
}
}
}
pi = s/(r*r);

C. C语言求圆周率

#include<stdio.h>

intmain()
{
floatf;
doublepi,i,sign;
while(scanf("%f",&f)==1)
{
pi=0;
i=1;
sign=1;
do
{
pi+=sign*1.0/i;
}while(1.0/i>=f&&(sign=-sign)&&(i+=2));
printf("%lf ",pi*4.0);
}
return0;
}

D. 怎么用C语言编程计算出π的值

一个足以让你吐血的计算400位pi的C程序:
int a=10000, b, c=2800, d, e, f[2801], g;
main() {
for(; b-c; f[b++]=a/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);
}
理论上只要用大数算法扩了就能一直算下去。我在Palm上面实现的那个就是基于这个算法,没有扩,算到4680位(受到Palm平台32k数组的长度限制)。
这个程序的特点是:你抱着想看看算pi原理的希望来读这个程序,结果发现就是看了也还是看不懂~~

转的,但是网络知道不允许贴地址哦

第二种:
用C语言编程π*π/6=1/1*1+1/2*2+1/3*3+。。。+1/n*n
#include<stdio.h>
#include<math.h>
main()
{
int n,i;
double s=0;
printf("输入n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s+1.0/(i*i);
}
printf("pai=%f",sqrt(s*6));
}

第三种:
求pi=(1+1/(1*3))*(1+1/(3*5))*(1+1/(5*7))…………直到最后一项的分数小于10的负6次方为止。

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
double pi,i,j,sigh,term;
i=1,j=3,sigh=1,term=1;
while(sigh>1e-6)
{
sigh=1/(i*j);
term=(1+sigh)*term;
i=i+2;
j=j+2;
}
pi=term;
printf("pi=%f\n",pi);
}

E. C语言编程求圆周率

用的是如图的公式,下面是arctg展开的级数。

这个输出没有写好,一组是10位,如果前面是“0”就会少了,要完善一下。

N是定义算多少组的,N=1000时N*10就是10000组,要算到100万位这种算法要好长时间,但是这是最简单的算法之一。

下面分成三个部分,第一是定义数组和

#defineN1000

#include"math.h"

#include"string.h"

main()

{

autodoublea1,b1,b2,c1,d,i=1.0,q=-1.0;

autodoublen,g,r=10000000000.0;

staticdoublea[N+1],b[N+1],c[N+1];

autochar*str3,str1[15],strs1[11*N],*p_strs1;

autolongp,j,k=1,m=1;

do{

printf("inputp=");

scanf("%ld",&p);

}while(p<=0&&p>100);

p=p+1;

b[1]=r*20.0,c[1]=239*r;

do

{q=-q,a1=0,b1=0,c1=0;

for(j=m;j<=p;j++){c1=c[j]+c1*r,c[j]=floor(c1/57121),c1=c1-c[j]*57121;}

if(c[m]<1e-5)m++;

for(j=k;j<=p;j++){

a1=b[j]+a1*r,b[j]=floor(a1/25.0),a1=a1-b[j]*25.0;

d=b1*r+b[j]-c[j],b1=floor(d/i),a[j]=4*q*b1+a[j];

b1=d-b1*i;

}

if(b[k]<=1e-5){

k++;

printf("k=%ld",k);}

i=i+2;

}while(m<=p);

do

{q=-q,a1=0,b1=0;

for(j=k;j<=p;j++){

a1=b[j]+a1*r,b2=floor(a1/25),b[j]=b2;

a1=a1-b2*25,d=b2+b1*r;

b1=floor(d/i),a[j]=a[j]+4*q*b1;

b1=d-b1*i;

}

if(b[k]<=1e-5){k++;printf("k=%ld",k);}

i=i+2;

}while(k<=p);

printf(" ");

for(j=p;j>=1;j--){g=a[j]+n,n=floor(g/r),a[j]=g-r*n;}

for(j=1;j<p;j++)printf("%10.0f",a[j]);

str3=strs1;

}

F. C语言计算圆周率

#include<stdio.h>
#include<math.h>
intmain(){
doublep=0,q=0;
inti;
for(i=1;;i++){
p+=6*1.0/(i*i);
q+=4*1.0*pow(-1,i+1)/(2*i-1);//q后面少一个+
if(fabs(sqrt(p)-q)<1e-6)
break;
}
printf("PIis%lf,项数为%d",q,i);
return0;
}

G. C语言的求π的值

#include <stdio.h>

#include <math.h>


int main(){

double pi=0,result;

int i=1;

int s=-1;

do{

s*=-1;

result=1.0/i*s;

i+=2;

pi+=result;

}while(fabs(result)>0.000001);

printf("pi=%10.4lf ",pi*4);

return 0;

}

H. 计算圆周率的C语言程序

#include <stdio.h>
#define L 10000 //求10000位PI值
#define N L/4+1

// L 为位数,N是array长度

/*圆周率后的小数位数是无止境的,如何使用电脑来计算这无止境的小数是一些数学家与程式设计师所感兴趣的,在这边介绍一个公式配合 大数运算,可以计算指定位数的圆周率。

John Wallis的圆周率公式:
//详细看网站介绍:https://ke..com/item/%E5%9C%86%E5%91%A8%E7%8E%87/139930?fr=aladdin
PI = [16/5 - 16 / (3*53) + 16 / (5*55) - 16 / (7*57) + ......] - [4/239 - 4/(3*2393) + 4/(5*2395) - 4/(7*2397) + ......]

*/
void add ( int*, int*, int* );
void sub ( int*, int*, int* );
void div ( int*, int, int* );

int main ( void )
{
int s[N+3] = {0};
int w[N+3] = {0};
int v[N+3] = {0};
int q[N+3] = {0};
int n = ( int ) ( L/1.39793 + 1 );
int k;

w[0] = 16*5;
v[0] = 4*239;

for ( k = 1; k <= n; k++ )
{
// 套用公式
div ( w, 25, w );
div ( v, 239, v );
div ( v, 239, v );
sub ( w, v, q );
div ( q, 2*k-1, q );

if ( k%2 ) // 奇数项
add ( s, q, s );
else // 偶数项
sub ( s, q, s );
}

printf ( "%d.", s[0] );
for ( k = 1; k < N; k++ )
printf ( "%04d", s[k] );
printf ( "\n" );
return 0;
}

void add ( int *a, int *b, int *c )
{
int i, carry = 0;

for ( i = N+1; i >= 0; i-- )
{
c[i] = a[i] + b[i] + carry;
if ( c[i] < 10000 )
carry = 0;
else // 进位
{
c[i] = c[i] - 10000;
carry = 1;
}
}
}

void sub ( int *a, int *b, int *c )
{
int i, borrow = 0;
for ( i = N+1; i >= 0; i-- )
{
c[i] = a[i] - b[i] - borrow;
if ( c[i] >= 0 )
borrow = 0;
else // 借位
{
c[i] = c[i] + 10000;
borrow = 1;
}
}
}

void div ( int *a, int b, int *c ) // b 为除数
{
int i, tmp, remain = 0;
for ( i = 0; i <= N+1; i++ )
{
tmp = a[i] + remain;
c[i] = tmp / b;
remain = ( tmp % b ) * 10000;
}
}

I. c语言 计算π的值

好像是这个公式把
π/4 = 1-1/3+1/5-1/7……
要是这样的话,就我下面的代码
#include <stdio.h>
#include <math.h>
main()
{
int i,j=1;
float pi=0;
for(i=1;1.0/i>=1e-6;i+=2)
{
pi+=j*1.0/i;
j*=-1;
}
printf("PI的近似值为%d",4*pi);
}
看我的代码,有什么感想?

J. C语言:计算圆周率(精度保留到小数点后6位),用程序实现,公式如下:

#include<stdio.h>

#include<math.h>

int main()

{double pi=1,t=0;

for(;t<1.9999999;)

{t=sqrt(2+t);

pi*=2/t;

}

printf("%lf ",pi*2);

return 0;

}