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