c语言天书圆周率的计算及分析.doc

求圆周率π的C程序分析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); scanf("%s");}简短的4行代码,就可以精确计算机出800位的PI(圆周率)值。实在太震撼人心了。这样的程序也能运行,竟然还能能完成这样让人难以置信的任务,真是太神了。一、源程序本文分析下面这个很流行的计算PI的小程序。下面这个程序初看起来似乎摸不到头脑,不过不用担心,当你读完本文的时候就能够基本读懂它了。程序一:很牛的计算Pi的程序#include int 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);}二、数学公式数学家们研究了数不清的方法来计算PI,这个程序所用的公式如下:pi = 2 +?1/3 * (2 +?2/5 * (2 +?3/7 * (2 + ...? (2 +?k/2k+1 * (2 + ... ))...)))至于这个公式为什么能够计算出PI,已经超出了本文的能力范围。下面要做的事情就是要分析清楚程序是如何实现这个公式的。我们先来验证一下这个公式:程序二:Pi公式验证程序#include void main(){?? float pi=2;?? int? i;?? for(i=100;i>=1;i--)????? pi=pi*(float)i/(2*i+1)+2;?? printf("%f\n",pi);?? getchar();}上面这个程序的结果是3.141593。三、程序展开在正式分析程序之前,我们需要对程序一进行一下展开。我们可以看出程序一都是使用for循环来完成计算的,这样做虽然可以使得程序短小,但是却很难读懂。根据for循环的运行顺序,我们可以把它展开为如下while循环的程序:程序三:for转换为while之后的程序#include int a=10000,b,c=2800,d,e,f[2801],g;main() {int i;for(i=0;i

c语言圆周率天书解释,c语言天书圆周率的计算及分析.doc相关推荐

  1. c语言指针官方解释_C语言中的指针解释了–它们并不像您想象的那么难

    c语言指针官方解释 Pointers are arguably the most difficult feature of C to understand. But, they are one of ...

  2. c语言中编译解释,C语言既可以编译执行又可以解释执行吗? 编译执行怎么解释? 解释执行又怎么解释?...

    C 语言程序仅可以解释执行. 解释程序是将源程序(如BASIC)作为输入,解释一句后就提交计算机执行一句,并不形成目标程序.编译程序是把高级语言(如FORTRAN.COBOL.Pascal.C等)源程 ...

  3. c语言switch case解释,C语言switch case语句详解

    C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英 ...

  4. python怎么解释语言_python属于解释语言吗

    Python是一门解释型语言? Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在. 如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写 ...

  5. 一段话系列-Java是否是解释执行语言?

    2019独角兽企业重金招聘Python工程师标准>>> Java是半执行半解释执行语言,首先,Java会由Javac编译成字节码,这是编译:然后字节码会交由JVM中的解释器进行解释执 ...

  6. 回旋矩形C语言,C语言回旋函数解释下,该如何处理

    当前位置:我的异常网» C语言 » C语言回旋函数解释下,该如何处理 C语言回旋函数解释下,该如何处理 www.myexceptions.net  网友分享于:2013-06-08  浏览:30次 C ...

  7. php编写解一元一次方程,解释C语言(逐句) 解一元一次方程的 怎样用C语言编一个解一元二次方程的程序?...

    导航:网站首页 > 解释C语言(逐句) 解一元一次方程的 怎样用C语言编一个解一元二次方程的程序? 解释C语言(逐句) 解一元一次方程的 怎样用C语言编一个解一元二次方程的程序? 相关问题: 匿 ...

  8. c语言高精度计算n的阶乘,高精度计算n阶乘的c语言源代码和解释

    <高精度计算n阶乘的c语言源代码和解释>由会员分享,可在线阅读,更多相关<高精度计算n阶乘的c语言源代码和解释(9页珍藏版)>请在金锄头文库上搜索. 1.1高精度计算大数阶乘的 ...

  9. 解释词超文本标记语言html,超文本标记语言html的解释

    超文本标记语言的网络地址格式是怎样的 HTML是超文本标记语言英文的简写, 从字面就能够理解,它比普通纯文字的文本要强悍些,并可以进行标记,是一种用来制作超文本文档的简单标记语言.超文本传输协议规定了 ...

  10. 编译型和解释型、动态语言和静态语言、强类型定义语言和弱类型定义语言

    一.编译型与解释型语言 我们编写程序也就是源代码基本是用高级编程语言,比如JavaScript, java, c等等,这些语言计算机是不理解的,所以需要转化(翻译)成计算机理解的机器语言,或者说目标C ...

最新文章

  1. 跟阿里云技术专家阙寒一起深度了解视频直播CDN技术
  2. @程序员:这些瓜没吃到,可以告别互联网了!
  3. 台式电脑键盘f1是计算机怎么取消,开机F1怎么取消,教您开机F1怎么取消
  4. 如何实现 C/C++ 与 Python 的通信?
  5. RocksDB 写入流程详解
  6. 胡润发布《2019胡润80后白手起家富豪榜》:拼多多黄峥1350亿第一
  7. Python让繁琐工作自动化——chapter18 GUI控制键盘与鼠标
  8. Error loading syntax file “packages/zzz A File Icon zzz/aliases/Plain Text(CSV).sublime-synax“:……解决
  9. 计算机键盘基础知识课件,高中信息技术计算机基础应用课件:键盘操作练习
  10. (转) latch 入门
  11. python3爬虫下载音乐_python3.4爬虫批量下载音乐
  12. 京东数据化运营(三)- 复购率
  13. python写闲鱼脚本_自动化篇 - 躺着收钱!闲鱼自动发货机器人来啦~
  14. 数组、字符串及对象-常用方法
  15. 自定义漂亮的圆形进度条
  16. 奥利给! loading效果这么搞真的太棒了
  17. 人民币贬值之后该买什么
  18. 常见近红外/红外定量分析指标(论文投稿)
  19. 哪个软件可以用来python编程_python编程用哪个软件
  20. 【去耦电容如何布局放置】

热门文章

  1. 光敏传感器实验报告_光敏电阻传感器实验报告.doc
  2. python 批量word文档转pdf
  3. maven命令行打包
  4. html - html5 audio 音乐自动播放,循环播放等9款播放器
  5. Java读取TXT文件中文输出乱码
  6. 3. 内存控制器与SDRAM
  7. hive建表语句 增加字段、分区基础操作
  8. vue json对象转数组
  9. Oracle Solaris系统,诺禾
  10. Chrom安装Axure插件浏览原型图