问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

计算圆周率的C语言程序

发布网友 发布时间:2022-06-02 03:35

我来回答

3个回答

热心网友 时间:2023-10-27 07:03

#include <stdio.h>
#define L 10000 //求10000位PI值
#define N L/4+1

// L 为位数,N是array长度

/*圆周率后的小数位数是无止境的,如何使用电脑来计算这无止境的小数是一些数学家与程式设计师所感兴趣的,在这边介绍一个公式配合 大数运算,可以计算指定位数的圆周率。

John Wallis的圆周率公式:
//详细看网站介绍:https://ke.baidu.com/item/%E5%9C%86%E5%91%A8%E7%8E%87/139930?fr=aladdin
PI = [16/5 - 16 / (3*53) + 16 / (5*55) - 16 / (7*57) + ......] - [4/239 - 4/(3*2393) + 4/(5*2395) - 4/(7*2397) + ......]

*/
void add ( int*, int*, int* );
void sub ( int*, int*, int* );
void div ( int*, int, int* );

int main ( void )
{
int s[N+3] = {0};
int w[N+3] = {0};
int v[N+3] = {0};
int q[N+3] = {0};
int n = ( int ) ( L/1.39793 + 1 );
int k;

w[0] = 16*5;
v[0] = 4*239;

for ( k = 1; k <= n; k++ )
{
// 套用公式
div ( w, 25, w );
div ( v, 239, v );
div ( v, 239, v );
sub ( w, v, q );
div ( q, 2*k-1, q );

if ( k%2 ) // 奇数项
add ( s, q, s );
else // 偶数项
sub ( s, q, s );
}

printf ( "%d.", s[0] );
for ( k = 1; k < N; k++ )
printf ( "%04d", s[k] );
printf ( "\n" );
return 0;
}

void add ( int *a, int *b, int *c )
{
int i, carry = 0;

for ( i = N+1; i >= 0; i-- )
{
c[i] = a[i] + b[i] + carry;
if ( c[i] < 10000 )
carry = 0;
else // 进位
{
c[i] = c[i] - 10000;
carry = 1;
}
}
}

void sub ( int *a, int *b, int *c )
{
int i, borrow = 0;
for ( i = N+1; i >= 0; i-- )
{
c[i] = a[i] - b[i] - borrow;
if ( c[i] >= 0 )
borrow = 0;
else // 借位
{
c[i] = c[i] + 10000;
borrow = 1;
}
}
}

void div ( int *a, int b, int *c ) // b 为除数
{
int i, tmp, remain = 0;
for ( i = 0; i <= N+1; i++ )
{
tmp = a[i] + remain;
c[i] = tmp / b;
remain = ( tmp % b ) * 10000;
}
}

热心网友 时间:2023-10-27 07:04

没有问题啊,只是你的循环次数太少,所以计算出来的数值不正确
n=1000时 pre=3.140024
n=10000时pre=3.141436
n=100000时pre=3.141577

n=1000000时pre=3.141591追问对于圆周率的计算是不是有好几种啊,能给一种比较好的算法吗?谢谢,我刚刚学C语言还有好多不懂得啊。

追答你百度一下吧,百度文库中说的比较详细

热心网友 时间:2023-10-27 07:04

循环次数越多计算精度越高
1000次就能算出3.14了追问我原以为是我对于数据的类型搞错了呢,是不是float类型的会产生误差啊,非常感谢

追答http://wenku.baidu.com/view/a10bf224482fb4daa58d4b5d.html

#include
long a=10000,b,c=2800,d,e,f[2801],g;
main()
{
for(;b-c ; )
f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf(%.4d,e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求助:补全成语. _然而止、_然不屈、_然四顾、_然若失、_然而至、_然拒绝、_然无声... 我姑妈(姑妈去世),现奶奶的房产 姑妈的女儿有继承权吗? 丈夫去世遗产应该能怎么分配 《人世间》骆士宾遗产股权归谁所有 为什么说曹珊不应该得罪水自流_百 ... 有谁知我国十大元帅及十大上将? 解放中国的10大元帅是那几个? 对中国有何影响? 中国历史上的十大元帅 为什么中国过去有元帅现在没有了 ...想看中国80年代、90年代热播的电视剧,《渴望》、《蛙女》等,越多... 自1960年以来有几次奥运会是在北美洲举行的 曾经奥运会在哪些城市举办过? 你穿着白色上衣蓝色的裤子在舞台上跳舞,我用红色灯照你 观众看你的衣服... 白衣服被染紫 香油炒核桃仁怎样拌冰糖 有哪些动漫人物是紫色假发,衣服是过膝的白裙子 怎么下在视频 mv在手机上? 怎么下在视频? 姜红糖香油怎么熬 如何下在视频? 怎么下在视频在手机上 如何在电脑上下在视频 win8的Internet Explorer9为什么点击图标没有用,打不开,只能用管理员用打开! 怎么下在视频在手机 为什么win8任务栏的文件图标点击无用 有什么好看的小说?求搞笑的。 求电子书 污点 名人 《污点教练》txt下载在线阅读全文,求百度网盘云资源 孩子误吃了瓢葫芦籽怎么办 污点小说txt全集免费下载 C语言:圆周率的计算 怎样编个c语言程序计算圆周率? c语言概率法求圆周率 用c语言解决圆周率pi 玩伴猫耳娘下载网址或链接 上海浦东新区唐镇建设银行休息时间谢谢了,大神帮忙啊 这种号码的人民币值不值得收藏? C语言没学好,学JAVA有影响么 如果C语言和数据结构都没学好,还有可能学好Java吗 我的C语言没学好,请问能继续学好JAVA语言吗?请给个专业的答案 【车主点评:吉利 缤越 用车评价】 C语言没学太好,对JAVA影响很大吗? 运动与呼吸,心跳有什么关系 【车主点评:吉利缤越提车两个月点评分享】 【车主点评:吉利缤越非常好看】 【车主点评:精致的吉利缤越】 【车主点评:吉利缤越】 【车主点评:时尚好开的吉利缤越】 为什么运动时呼吸和心跳会同时加快? 【车主点评:让我赞不绝口 浅谈吉利缤越的用车感受】