用C語言程式設計求圓周率,要求用命令列實現,計算到小數點後2019位

時間 2021-08-30 11:20:53

1樓:

/** 編譯成可執行檔案後,在dos提示符下執行:

* 如果帶一個命令列引數,則該值為要計算的位數;

* 如果還帶有第二個引數,則使用stomer公式計算。

* **如下:

*/#include

#include

void main(int argc,char *argv)

,k0[3] = ,n0[3] = ;

int d,i,j,k,p,q;

d=(argc>1)?(((i = atoi(argv[1]))<0)?0:i):1000;

q=(argc>2)?1:0;

printf("%s\n\n", "nature (r) pi value compute program (c) tue 2005.11.10");

printf("pi= %s%d * arctg(1/%d) %s %d * arctg(1/%d) %s %d * arctg(1/%d) [%s]\n",

k0[q][0] ? "" : "-", t0[q][0], n0[q][0], k0[q][1] ? "+" : "-", t0[q][1],

n0[q][1], k0[q][2] ? "+" : "-", t0[q][2], n0[q][2], q ? "stomer" : "gauss");

if((t = (long *)calloc((d += 5) + 1, sizeof(long))) == null)

return 1;

if((pi = (long *)calloc(d + 1, sizeof(long))) == null)

return 2;

for(i = d; i >= 0; i--) pi[i] = 0;

for(p = 0; p < 3; p++)

while (j > 0 && t[j] == 0)

j--;

for (k = !k, s = 3, n *= n; j > 0; k = !k, s += 2)

while (j > 0 && t[j] == 0)

j--;

for (r = 0, i = j; i >= 0; i--) }}

for (n = i = 0; i <= d; pi[i++] = r)

printf("pi= %ld.", pi[d]);

for (i = d - 1; i >= 5; i--)

printf("%ld%s", pi[i], ((m = d - i + 5) % 65) ? ((m % 5) ? "" : " ") : "\n");

printf("%sdigits: %d\n", (m % 65) ? "\n" : "", d - 5);

return 2;getch();}

2樓:匿名使用者

不過用tc編譯的時候會提示錯誤 因為陣列太長

最好找別的編譯器

#include "stdio.h"

#include "conio.h"

long a=10000, b, c=28000, d, e, f[28010], g;

void main()

或/** 編譯成可執行檔案後,在dos提示符下執行:

* 如果帶一個命令列引數,則該值為要計算的位數;

* 如果還帶有第二個引數,則使用stomer公式計算。

* **如下:

*/ #include

#include

void main(int argc,char *argv)

,k0[3] = ,n0[3] = ;

int d,i,j,k,p,q;

d=(argc>1)?(((i = atoi(argv[1]))<0)?0:i):1000;

q=(argc>2)?1:0;

printf("%s\n\n", "nature (r) pi value compute program (c) tue 2005.11.10");

printf("pi= %s%d * arctg(1/%d) %s %d * arctg(1/%d) %s %d * arctg(1/%d) [%s]\n",

k0[q][0] ? "" : "-", t0[q][0], n0[q][0], k0[q][1] ? "+" : "-", t0[q][1],

n0[q][1], k0[q][2] ? "+" : "-", t0[q][2], n0[q][2], q ? "stomer" : "gauss");

if((t = (long *)calloc((d += 5) + 1, sizeof(long))) == null)

return 1;

if((pi = (long *)calloc(d + 1, sizeof(long))) == null)

return 2;

for(i = d; i >= 0; i--) pi[i] = 0;

for(p = 0; p < 3; p++)

while (j > 0 && t[j] == 0)

j--;

for (k = !k, s = 3, n *= n; j > 0; k = !k, s += 2)

while (j > 0 && t[j] == 0)

j--;

for (r = 0, i = j; i >= 0; i--) }

} for (n = i = 0; i <= d; pi[i++] = r)

printf("pi= %ld.", pi[d]);

for (i = d - 1; i >= 5; i--)

printf("%ld%s", pi[i], ((m = d - i + 5) % 65) ? ((m % 5) ? "" : " ") : "\n");

printf("%sdigits: %d\n", (m % 65) ? "\n" : "", d - 5);

return 2;getch();}

3樓:匿名使用者

b-s 那些盜用版權者

4樓:科文專家

495196274 - 魔法學徒 一級

如何用c語言程式實現輸出圓周率小數點後100位小數?

5樓:希望村村民

double精度不夠,只有用陣列模擬了。

樓上的程式不正確,我改了下

#include

int main()

用天平,白紙,尺子,圓規等求圓周率

其實割圓法就是畫一個內接於圓形的正六邊形。透過不斷倍增內接多邊形的邊數,他發現其周界會越來越接近圓周。就是把正六邊形畫成正十二邊形,又把正十二邊形畫成正二十四邊形。就這樣,到了後來,就已經是一個圓了。像電腦裡的圓形一樣,以前電腦裡是沒有圓的。但是把一個正方形的角平均的剪了,這個正方形就會變成八角形了...

求C語言程式設計高手編寫以下C程式,本人用VC 6 0除錯。非常感謝

我教你一種很簡單的方法啊.利用pow.pow 2,3 也就是求2的3次方.你想啊.如果要求2的3次根呢.那不就是pow 2,1 3 了麼.但是這樣寫是不行地.必須寫成pow 2,double 1 3 這樣就可以了.include stdio.h include math.h void main 輸入...

用C語言程式設計 求x的n次方的函式

馬新筠營兒 double pow double x,double y pow 用來計算以x 為底的y 次方值,然後將結果返回 可能導致錯誤的情況 如果底數 x為負數並且指數 y不是整數,將會導致 domain error 錯誤。如果底數 x和指數y都是 0,可能會導致 domain error 錯誤...