扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
#include stdio.h
乌什网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联公司2013年至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
double fact(int n)
{
double res = 1.0;
for(int i = 1; i = n; i++)
res *= i;
return res;
}
double multi(int n)
{
double res = 1.0;
for(int i = 1; i = n; i += 2)
res *= i;
return res;
}
int main()
{
double sum=1.0, item=1.0, eps = 1e-6;
for(int i = 1; item = eps; i++)
{
item = fact(i) / multi(2*i + 1);
sum = sum + item;
}
printf("PI=%0.5lf\n", sum * 2);
return 0;
}
//这样可以得到3.14159
我们经常会运用C语言进行各种数学运算,那么如何用C语言编写函数求圆周率Pi的近似值呢?下面我给大家分享一下。
工具/材料
Dev C++
01
首先打开Dev C++软件,新建一个C语言项目,如下图所示
02
然后在C语言文件中导入math库,并编写求Pi近似值的逻辑代码,如下图所示
03
接下来我们编译编写好的C语言文件,如下图所示
04
最后运行C语言文件我们就得到Pi的近似值了,如下图所示
用的是如图的公式,下面是arctg展开的级数。
这个输出没有写好,一组是10位,如果前面是“0”就会少了,要完善一下。
N是定义 算多少组的,N=1000 时 N*10就是10000组,要算到100万位这种算法要好长时间,但是这是最简单的算法之一。
下面分成三个部分,第一是定义数组和
#define N 1000
#include "math.h"
#include "string.h"
main()
{
auto double a1,b1,b2,c1,d,i=1.0,q=-1.0;
auto double n,g,r=10000000000.0;
static double a[N+1],b[N+1],c[N+1];
auto char *str3,str1[15],strs1[11*N],*p_strs1;
auto long p,j,k=1,m=1;
do {
printf("input p= ");
scanf("%ld",p);
} while(p=0 p100);
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("\n");
for(j=p;j=1;j--){g=a[j]+n,n=floor(g/r),a[j]=g-r*n;}
for(j=1;jp;j++) printf("%10.0f ",a[j]);
str3=strs1;
}
因为圆面积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.
#include stdio.h
int main()
{
float f;
double pi,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\n",pi*4.0);
}
return 0;
}
代码如下:
#include iostream
#include fstream
#include math.h
using namespace std;
double randx,randnum;
unsigned long randi=1;
const unsigned long randa=16807;
unsigned long randm=pow(2,31)-1;
const double pi=3.1415926;
// random number creation
void random_number()
{
if ( randi == randm )
{
randi=randm-1;
}
randi=(randa*randi)%randm;
randx=randi;
randnum=randx/randm;
return ;
}
// program main
void main(void)
{
FILE *fp9;
fp9=fopen("mypi.dat","w+");
double jianju;
double zhenchang;
double minjuli;
double hudu;
double shiyanpi;
int cishu;
int i;
int j=0;
cout"请输入投针次数""\n";
cincishu;
cout"请输入平行线间距""\n";
cinjianju;
cout"请输入针的长度""\n";
cinzhenchang;
for (i=1;i=cishu;i++)
{
random_number();
minjuli=randnum*jianju/2;
random_number();
hudu=randnum*pi;
if(minjuli=zhenchang/2*sin(hudu))
j++;
shiyanpi=2*zhenchang*i/(jianju*j);
if(i%1000==0)
fprintf(fp9,"%d%15.6f \n",i,shiyanpi);
}
}
希望能帮到你!望采纳!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流