如何用C语言程序实现输出圆周率小数点后100位小数

如题所述

    π=3.1415926……无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题。现在有了电脑, 这个问题就简单了。
    电脑可以利用级数计算出很多高精度的值, 有关级数的问题请参考《高等数学》,以下是比较有名的有关π的级数:
    π = 2 + 2/3 + 2/3*2/5 + 2/3*2/5*3/7 + ...

    例程:
    /*这是一位大神编制的算pi程序,精确到800位,具体算法已不可考*/

    #include<stdio.h>
    int main()
    {
        long   a=10000,b=0,c=3500,d=0,e=0,f=0,g[3501]; 
        for(;b-c;)g[b++]=a/5; 
        for(;d=0,f=c*2;c-=14,printf( "%.4d ",e+d/a),e=d%a) 
        for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b); 
        reutrn 0;
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-08
double精度不够,只有用数组模拟了。
楼上的程序不正确,我改了下

#include<stdio.h>
int main()
{
long a=10000,b=0,c=3500,d=0,e=0,f=0,g[3501];
for(;b-c;)g[b++]=a/5;
for(;d=0,f=c*2;c-=14,printf( "%.4d ",e+d/a),e=d%a)
for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b);
}本回答被网友采纳
第2个回答  2019-01-20
可以用如下程序:

注:先输入要几位小数
#include<iostream>
#include <stdio.h>
using namespace std;
int main()
{
long a=10000,b=0,d=0,e=0,f=0,i,j;
cin>>i;
j=i/288*1000;
long c=j,g[j+1];
while(b-c)
{
g[b++]=a/5;
}
while(d=0,f=c*2)
{
b=c;
while(d+=g[b]*a,g[b]=d%--f,d/=f--,--b)
{
d*=b;
}
c-=14;
printf("%.4d ",e+d/a);
e=d%a;
}
getchar();getchar();
return 0;
}
第3个回答  2012-11-01
long a=10000,b,c=3500,d,e,f,g[3501];

for(;b-c;)g[b++]=a/5;
for(;d=0,f=c*2;c-=14,printf( "%.4d ",e+d/a),e=d%a)
for(b=c;d+=g[b]*a,g[b]=d%--f,d/=f--,--b;d*=b);
这个是100位程序

#include<stdio.h>

main()
{
double i,pi=1;

for(i=5;i<=1000000;i=i+4)
{
pi=pi-1/(i-2)+1/i;
}

pi=pi*4;

printf("\n3.100%lf",pi);
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网