用C语言编程求圆周率,要求用命令行实现,计算到小数点后2000位

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:04:24
问题在2000位这么多怎么实现。
给出整个调试正确的程序我讲追加200积分。
我要请你们解决的就是数组太长的问题。再给出程序的时候希望能在程序中关键部位添加注释,因为我的C不太好,谢谢。

/*
* 编译成可执行文件后,在DOS提示符下执行:
* 如果带一个命令行参数,则该值为要计算的位数;
* 如果还带有第二个参数,则使用stomer公式计算。
* 代码如下:
*/

#include <stdio.h>
#include <stdlib.h>

void main(int argc,char *argv[])
{
long *pi,*t,m,n,r,s;
int t0[][3] = {48,32,20,24,8,4},k0[][3] = {1,1,0,1,1,1},n0[][3] = {18,57,239,8,57,239};
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)
retu