用c语言的while算圆周率,C语言算圆周率。。。有一程序。。。看不太懂。。。解析一下。。。还有用DEV C++老错。。。。...

n=addu[j]+l;

l=floor(n/BASIC);

addu[j]=fmod(n,BASIC);

if (addu[j]<0){

addu[j]=addu[j]+BASIC;

addu[j-1]=addu[j-1]-1;

}

}

}

void main()

{

time_t bt,et;

clock_t start,end;

char sign;

char fname[21];

char USER_PATH[]="C:\\USER.DAT";

char dir[MAXDIR];

int current_disk;

int length;

FILE *fo;

unsigned long int size,size0,x,y;

unsigned int i,m,r,size_0;

double flu,nat;

clrscr();

printf(" The program calculate value of PI \n");

printf(" Copyright by XU Hou-jun 1999/06/30 \n\n\n");

size_max=farcoreleft()-528;

MAX=size_max/(2*sizeof(double))-1;

printf("input length of PI value (MAX=%lu): ",(MAX-2)*10+1 );

scanf("\n%lu",&size0);

x=(size0-1)/10;

y=(size0-1);

if (y==0) size=x+1;

else size=x+2;

if (size > MAX){

printf("Overflowed MAX !\n");

return;

}

if((addu=(double huge

*)farcalloc((size+1),sizeof(double)))==NULL){

perror("ERROR in farcalloc ADDU !");

exit(1);

}

if((flux=(double huge

*)farcalloc((size+1),sizeof(double)))==NULL){

perror("ERROR in farcalloc FLUX !");

exit(1);

}

current_disk=getdisk();

getcurdir(0,dir);

setdisk(2);

if(chdir("\\")){

perror("Error! chdir()");

exit(1);}

if(chdir(USER_PATH)){

if(mkdir(USER_PATH)){

perror("Error! Unable to create directory C:\USER.DAT");

exit(1);

}

if(chdir(USER_PATH)){

perror("Error! Unable to create directory C:\USER.DAT");}

}

printf("The current director is %s , ",USER_PATH);

printf("input DATA file name : ");

scanf("\n%s",fname);

length=strlen(fname);

for(i=0;i

fname[i]=toupper(fname[i]);}

if ((fo=fopen(fname,"w+"))==NULL){

printf("File %s\\%s not open !\n\n ",USER_PATH,fname);

return;

}

size_0=(unsigned int)size;

start=clock();

time(&bt);

printf("\n\n\n");

printf(" Bigen time is %s",ctime(&bt));

sign=1;

flu=FLUX1;

nat=NATU1;

count(size_0,sign,flu,nat);

time(&et);

printf(" Middle time is %s",ctime(&et));

printf(" 0.00-- %6.0f\ seconds and about

0.00--76.98%\n",difftime(et,bt));

sign=-1;

flu=FLUX2;

nat=NATU2;

count(size_0,sign,flu,nat);

end=clock();

time(&et);

fprintf(fo,"%1.0f\.",addu[0]);

for (i=1;i<=size_0-1;i++){

r=(i-1)%7;

if (r==6) fprintf(fo,"0.0f\n\ ",addu[i]);

else fprintf(fo,"0.0f\ ",addu[i]);

}

fprintf(fo,"\n");

fprintf(fo," %6lu\ bite PI , ",10*(size-1)+1);

if(size<=10000) fprintf(fo,"RUN time is : %4.3f\

seconds\n",(end-start)/CLK_TCK);

else fprintf(fo,"RUN time is : %8.0f\

seconds\n",difftime(et,bt));

fclose(fo);

printf(" End time is %s\n",ctime(&et));

printf(" %6lu\ bits PI , ",10*(size-1)+1);

if(size<=10000) printf("RUN time is : %4.3f\

seconds\n",(end-start)/CLK_TCK);

else printf("RUN time is: %8.0f\ seconds\n",difftime(et,bt));

printf("\n DATA file path and file name is :

%s\\%s\n",USER_PATH,fname);

setdisk(current_disk);

chdir(dir);

farfree(addu);

farfree(flux);

}