c语言求pi
㈠ c语言计算PI值,
在0到1之间取两个随机数,如果这两个随机数(x,y)在四分之一圆内,就加一。
最后用落在专圆内的点数,属除以总点数,就是PI了。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define N 300000
main()
{
long i,n=0;
float x,y,pi;
srand(time(NULL));
for (i=0;i<N;i++)
{
x=1.0*rand()/RAND_MAX;
y=1.0*rand()/RAND_MAX;
if (x*x+y*y<1)
n++;
}
pi=4.0*n/N;
printf("pi=%f\n",pi);
}
㈡ C语言求PI
你的算法不对吧?
/*-----世界上最牛的PI算法---------*/
#include <stdlib.h>
#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("%.4d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}
㈢ C语言用随机数求pi值
首先,rand()返回的是随机正整数,应该改为((rand() % 500000000)/(double)500000000);
然后,1/2、1/4是内整数乘法,结果是0,应该改为0.5
还有srand应该放在循环外容面
㈣ C语言的求π的值
示例代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
double result,fn,t;
int i;
i=1;
result=0;
fn=t=1.0; //fn表示每一项的值
while(fabs(fn)>=1e-6)
{
result+=fn; //将每一项的fn累加
i+=2;
t*=-1; //切换符号
fn=t/i; //计算当前项的值
}
result*=4;
printf("pi = %-10.4f\n",result); //列宽为10,小数点后保留4位,-表示左对齐
return 0;
}
运行结果:
pi = 3.1416
希望对你有帮助,忘点赞哦。
㈤ 计算Pi值,用C语言,程序
楼主这个方法应当用随机数来做。
思想:
在0到1之间取两个随机数,如果这两个随机数(x,y)在四分之一圆内,就加一。
最后用落在圆内的点数,除以总点数,就是PI了。
#include
<stdio.h>
#include
<conio.h>
#include
<stdlib.h>
#include
<time.h>
#define
N
300000
main()
{
long
i,n=0;
float
x,y,pi;
srand(time(NULL));
for
(i=0;i<N;i++)
{
x=1.0*rand()/RAND_MAX;
y=1.0*rand()/RAND_MAX;
if
(x*x+y*y<1)
n++;
}
pi=4.0*n/N;
printf("pi=%f\n",pi);
getch();
}
㈥ C语言求pi,求大神指点错误!
main()不是mian()
㈦ c语言求pi。
#include<stdio.h>
#include<stdlib.h>
voidmain()
{
inti=1,n=1;
intn1=0,n2=0,n3=0;
floatx=0;
do{
x+=4.0*n/(2*i-1);
i++;
n=-n;
if(longint(x*1000000)==3140000&&n1==0)
{ n1++;
printf("%d",i);
printf("pi=%.2f ",x);
}
elseif(int(x*1000000)==3141000&&n2==0)
{
n2++;
printf("%d",i);
printf("pi=%.3f ",x);continue;
}
elseif(int(x*1000000)==3141500&&n3==0)
{
n3++;
printf("%d",i);
printf("pi=%.4f ",x);continue;
}
elseif(int(x*1000000)==3141590)
{
printf("%d",i);
printf("pi=%.5f ",x);break;
}
}while(i<1000000);
}
㈧ C语言求pi
应该是你的算法
有点小问题
#include
<stdio.h>
#include
<math.h>
void
main
()
{
double
i,j=-1,pi=1;
//这里我初始化为1
int
k=1;
while
(fabs(i)>(1e-6))
{
k=k+2;
i=j/k;
pi+=i;
j=-j;//j应该是+1
-1变换的吧
你好像都没改变
其他版就跟你差不多了权
}
pi=pi*4;
printf("pi=%10.6lf\n",pi);
}
㈨ 怎么用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);
}