qianmubanpingcu 2023-01-25 11:30 采纳率: 83.3%
浏览 22
已结题

有人能为我解释一下用这种方法计算圆周率的原理和三条for语句该如何理解吗


#include"stdio.h"
#include"stdlib.h"

long a =10000, b = 0, c = 10000,d,e,f[10001],g;

int main(int argc, char const *argv[])
{
    for(; b != c; f[b++] = a/5);
    for(; d = 0,g = c*2,c>5000;c--,printf("%.4d",e+d/a),e = d%a)
    for(b = c;d += f[b]*a,f[b]=d % --g, d /= g--, --b; d*=b );

    system("pause");//这行和上面的第二个include是我自己加的。
    return 0;
}

我发现我对于for语句的了解,对于c语言的了解还很困乏。这是一个算圆周率的代码,我看不懂这是咋跑起来的。有人能为我解释一下用这种方法计算圆周率的原理和三条for语句该如何理解吗?
麻烦大家了。

  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-01-25 11:49
    关注

    回答不易,回答有用请你采纳,点击回答右侧采纳即可!
    这段代码是用来计算圆周率的。圆周率是一个无理数,可以通过算法来近似计算。这里使用的是一种叫做"莫比乌斯级数"的方法。

    第一个for语句是初始化数组f,使得f[b] = a/5 (其中b为循环变量,a为10000)。

    第二个for语句是主要的循环,c从10000开始递减,直到5000。在每次循环中,通过计算d和e的值,输出e+d/a的值,并将e的值赋值为d mod a。

    第三个for语句是在第二个for语句中计算d、f[b]和g的值。b从c开始,d += f[b]a,f[b]=d mod --g, d /= g--, --b, d=b。

    这个程序的输出是近似的圆周率值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月27日
  • 已采纳回答 1月26日
  • 创建了问题 1月25日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部