#include?stdio.h
烏什網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站設計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)公司。
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
我們經(jīng)常會運用C語言進行各種數(shù)學運算,那么如何用C語言編寫函數(shù)求圓周率Pi的近似值呢?下面我給大家分享一下。
工具/材料
Dev C++
01
首先打開Dev C++軟件,新建一個C語言項目,如下圖所示
02
然后在C語言文件中導入math庫,并編寫求Pi近似值的邏輯代碼,如下圖所示
03
接下來我們編譯編寫好的C語言文件,如下圖所示
04
最后運行C語言文件我們就得到Pi的近似值了,如下圖所示
用的是如圖的公式,下面是arctg展開的級數(shù)。
這個輸出沒有寫好,一組是10位,如果前面是“0”就會少了,要完善一下。
N是定義?算多少組的,N=1000?時?N*10就是10000組,要算到100萬位這種算法要好長時間,但是這是最簡單的算法之一。
下面分成三個部分,第一是定義數(shù)組和
#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"請輸入投針次數(shù)""\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);
}
}
希望能幫到你!望采納!
名稱欄目:求圓周率的函數(shù)C語言指針 c語言中計算圓周率的值
分享鏈接:http://sd-ha.com/article44/doosdee.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、品牌網(wǎng)站制作、定制網(wǎng)站、標簽優(yōu)化、外貿建站、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)