當前位置:首頁 » 編程語言 » c語言計算的圓周率
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言計算的圓周率

發布時間: 2023-05-23 19:08:14

① 求用三種方法計算圓周率(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...

② 能用C語言或C#語言算圓周率嗎

是的,C 語言和 C# 語言都可以用來計算圓周率。

多邊形法是一種常用的求圓周率的方法,其基本思路是將一個正多邊形內接於單位圓上,通過不斷增加多邊形的邊數,槐斗脊逐漸逼近圓的周長和面積。具體來說,我們可以使用如下的 C 語言或 C# 語言代碼實現:

```c
#include <stdio.h>
#include <math.h>

int main() {
int n = 6; // 初始為六邊形

double side = 1.0; // 正多邊銷老形的邊長
double radius = 1.0; // 單位圓的半徑
double pi = 0.0; // 圓周率的估計值

while (n <= 1048576) { // 增加多邊形的邊數直到達到 2^20
side = 2 * radius * sin(M_PI / n);
radius = sqrt(pow(radius, 2) - pow(side / 2, 2));
pi = n * side / 2; // 計算圓周率的估計值
printf("%d 邊形:%.15f\n", n, pi);
n *= 2;
}

return 0;
}
```

在上述代碼中,我們首先定義了三個變數 `side`、`radius` 和 `pi`,分別鉛滲表示正多邊形的邊長、單位圓的半徑和圓周率的估計值。初始時,我們將正多邊形初始化為一個六邊形,即 `n=6`。然後,我們在一個循環內不斷增加正多邊形的邊數,直到邊數達到 $2^{20}$。在每次循環中,我們使用正多邊形的邊長公式和勾股定理計算出新的正多邊形的邊長和半徑,並根據正多邊形的計算結果計算出圓周率的估計值 `pi`,並輸出結果到控制台中。

需要注意的是,在實際應用中,還需要考慮數值溢出、精度誤差等問題,以確保計算結果的正確性。

③ C語言計算圓周率

#include<stdio.h>
doublefact(intn)
{
doubleres=1.0;
for(inti拆氏改=1;i<=n;i++)
核斗res*=i;
returnres;
}
doublemulti(intn)
{
doubleres=1.0;
for(inti=1;i<=n;i+=2)
res*=旅判i;
returnres;
}
intmain()
{
doublesum=1.0,item=1.0,eps=1e-6;
for(inti=1;item>=eps;i++)
{
item=fact(i)/multi(2*i+1);
sum=sum+item;
}
printf("PI=%0.5lf ",sum*2);
return0;
}
//這樣可以得到3.14159

④ C語言:圓周率的計算

在for循環後加一句: sum -= f;
你多加了最後那個小於epsioon的值。

⑤ 用C語言編一個計算圓周率的程序,用戶輸入指定位數,並計算到指定位數(精度不夠可以用整數)

#include "stdio.h"

#include <stdlib.h>

#include <string.h>

int main(int argc,char *argv[]){

int a,b,c,d,e,f[2801],g,i,n;

char pi[801]="",t[5]="";

for(a=10000,b=0,c=2800;b-c;f[b++]=2000);//a/5

for(i=e=0;d=0,g=c*2;c-=14,e=d%a){

for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);

n=e+d/a,t[0]=t[1]=t[2]=t[3]='';

n<10 ? t[0]=t[1]=t[2]='0',i=3 : n<100 ? t[0]=t[1]='0',i=2 : n<1000 ? t[0]='0',i=1 : i=0;

itoa(n,t+i,10);

strcat(pi,t);

}

printf("Please enter the length n(int 0<n<800)... n=");

if(scanf("%d",&n)!=1 || n<1 || n>800){

printf("Input error, exit... ");

return 0;

}

for(i=0;i<n;printf("%c",pi[i++]));

printf(" ");

return 0;

}

代碼格式和運行樣例圖片:

⑥ C語言計算圓周率

計算溢出了。你的 fact 和 multi 都使用整數保存計算結果,參數稍大帶謹纖一點就超出整數表示範圍了,於是溢蠢仿出變成負數。
你把這兩個函數改成 double 類晌指型,內部變數 res 也聲明成 double,就能算出正確結果了。

⑦ 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;

}

⑧ C語言編程計算圓周率π到小數點後五位

1.
#include "stdio.h"

int main()
{
float pi=0.0f;
int i=0;
do
{
pi+=1.0/遲棚凳(i*2+1)*(i%2?1:-1);
i++;
}while(1.0/i>和局0.00001);
pi*=4;
printf("pi=%0.5f",pi);
}

2.
#include "stdio.h"

int main()
{
double pi=1.0;
int i=1;
do
{
pi*=2.0*i/碼旅(2*i-1)*2.0*i/(2*i+1);
i++;
}while(i<100000);
pi*=2;
printf("pi=%0.5f",pi);
}

⑨ 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;

}

⑩ 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;
}