1. 计算圆周率的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;
}
}
2. C语言:圆周率的计算
在for循环后加一句: sum -= f;
你多加了最后那个小于epsioon的值。
3. 怎样编个c语言程序计算圆周率
用蒙特卡罗算法就行,生成N多个随机坐标落在1×1的方格里,统计x平方+y平方1000)就好。。详细代码见前面的网址。。
4. C语言 圆周率
因为圆面积s=pi*r^2,
所以pi=s/r^2.
点(x,y)是0~1正方形范围内的随机点,如果x^2+y^2<=1,则该点在单位圆内.
x^2+y^2就是r^2,即圆半径的平方.d/N为点x,y落入单位圆内的概率,即约为圆面积.
圆的半径为1/2,而不是1,所以pi=4*d/N.
5. 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;
}
6. 圆周率在c语言中怎么表达
#define PI 3.1415926 宏定义。在语句中出现PI,系统自动认为是3.1415926 除了赋值就是宏定义了,然后没了···计算机不是人···都是要看代码做事
7. 怎么用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);
}
8. 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;
}
9. 求用三种方法计算圆周率(C语言)
给你个C程序吧:
#include <stdio.h>
long a=10000,b,c=2800,d,e,f[2801],g;
void main()
{
for(;b-c;)
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%04d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
PI=3.510597317328160963185...
10. 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;
}