當前位置:首頁 » 編程語言 » c語言圓周率計算

c語言圓周率計算

發布時間: 2022-06-11 07:57:28

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.

⑵ C語言:圓周率的計算

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

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

}

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

⑸ 計算圓周率的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;
}
}

⑹ 怎樣編個c語言程序計算圓周率

用蒙特卡羅演算法就行,生成N多個隨機坐標落在1×1的方格里,統計x平方+y平方1000)就好。。詳細代碼見前面的網址。。

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

⑻ 用c語言計算圓周率

#include<math.h>
main()
{
float pi=0,t=1;
int i=1;
do
{
t=1/(float)(2*i-1);
if(i%2==0) t=-t; /*printf("%d ",t);*/
pi+=t;
i++;
}while(fabs(t)>0.00001);
printf("pi=%f\n",4*pi);
getch();
}

⑼ 用C語言寫出計算圓周率的程序

double s = 0;//面積
double pi = 0;//圓周率
double d=200;//直徑(值越大圓周率越精確)
double r = d/2;//半徑
for(int i=1;i<=d;i++){
for(int j=1;j<=d;j++){
if((i-r)*(i-r)+(j-r)*(j-r)<=r*r){
s++;
}
}
}
pi = s/(r*r);

⑽ C語言程序設計,用級數計算圓周率π

我寫過精確10000多位的,但代碼太多無法在此列出,我給你提供一個思路:
定義長度為固定值的位元組的數組當做一個「大整數型」,長度為BI_SIZE,數組的0號數為最低8位,往後是更高8位,以此類推。
考慮計算過程中的溢出問題,BI_SIZE要盡量大,但也不能太大,否則算得會很慢。
#define
BI_SIZE
128
定義小數點後的十進制位數PI_NUM,略大於100。
#define
PI_NUM
103
這樣的數組定義多個,比如計算函數內部用的工作寄存器如下:
uint8_t
R0[BI_SIZE];
uint8_t
R1[BI_SIZE];
uint8_t
R2[BI_SIZE];
……
用戶使用的寄存器如下:
uint8_t
a0[BI_SIZE];
uint8_t
a1[BI_SIZE];
uint8_t
a2[BI_SIZE];
……
定義大整數相關處理函數,包含拷貝、清零、比大小、加、減、乘、移位、除、轉十進制ascii等函數。
比如大整數比大小,相等返回0,a大返回1,b大返回-1。
int
BigInteger_Cmp(uint8_t
*a,uint8_t
*b)
{
uint32_t
i;
for(i
=
BI_SIZE
-
1;i
<
BI_SIZE;i
--)
{
if(a[i]
!=
b[i])
{
if(a[i]
>
b[i])
return
1;
else
return
-1;
}
}
return
0;
}
凡是運算函數都要使用輸入地址的方式,如大整數相加,將a與b相加後的值裝入地址c。
void
BigInteger_Add(uint8_t
*c,uint8_t
*a,uint8_t
*b);
調用每一個函數時,輸出寄存器不能與輸入寄存器沖突。
寫除法函數可能比較難,請參考二進制除法相關資料。
列印函數可以用連續除以10求余獲得。
函數准備完成後就可以算圓周率了,先用循環算出10的PI_NUM次方作為標准系數EXP[BI_SIZE],計算每一項時分子要先乘EXP再除。由於你的級數公制性質,建議乘和除交替進行,以免數字溢出。
每一項不斷累加起來,直到當前算得的項為0為止,累加結果轉十進制列印出來。
調試時PI_NUM可以先改小,如果數字正確,就可以改為100多了。

熱點內容
android設置靜音 發布:2025-02-07 20:11:53 瀏覽:696
bin存儲 發布:2025-02-07 20:00:50 瀏覽:204
android載入界面 發布:2025-02-07 19:55:28 瀏覽:872
好礦雲伺服器 發布:2025-02-07 19:54:31 瀏覽:949
java電話簿 發布:2025-02-07 19:49:26 瀏覽:797
超級腳本製作 發布:2025-02-07 19:31:30 瀏覽:487
怎麼查看支付寶的賬號密碼 發布:2025-02-07 19:26:48 瀏覽:17
惠普伺服器查看ip指令 發布:2025-02-07 19:26:47 瀏覽:435
演算法設計模式 發布:2025-02-07 19:15:52 瀏覽:746
伺服器1u能連接幾台電腦 發布:2025-02-07 18:50:02 瀏覽:154