A. C語言編程題:用計算機計算圓周率到小數點後一百位。
有公式 π/4=1-1/3+1/5-1/7+... 可據此編寫程序。 我只做到了8位,至於還有沒回有其他的計算公式答,我也不清楚了。
#include<stdio.h>
#include<math.h>
int main()
{ int sign=1;
double pi=0.0, n=1, term=1.0;
while (fabs(term)>=1e-6 )
{ pi+=term;
n+=2;
sign=-sign;
term=sign/n;
}
pi*=4;
printf("pi=%10.8f", pi);
return 0;
}
B. C語言編程,用for循環完成。用格里高利公式計算並輸出圓周率的值。
#include<stdio.h>
#include<math.h>
intmain()
{
doublesign=1.0;
doublesum=0.0;
intn;
printf("請輸入循環次數:n=");
scanf("%d",&n);
for(inti=1;i<n;i=i+2)
{
sum=sum+sign/i;
sign=(-1)*sign;
}
sum=4*sum;
printf("pi=%f ",sum);
return0;
}
C. C語言編程求圓周率
用的是如圖的公式,下面是arctg展開的級數。
這個輸出沒有寫好,一組是10位,如果前面是「」就會少了,要完善一下。
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;
}