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

(5页)

本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!

19.90 积分

求 圆周率 π的 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语言天书__圆周率的计算及分析相关推荐

  1. 51 时间片系统 纯c语言,51单片C语言学习.doc

    51单片C语言学习 51单片机C语言学习第三课 [ 作者:明浩????转贴自:电子制作实验室????点击数:1067????更新时间:2004-10-2????文章录入:admin ]减小字体 增大字 ...

  2. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

  3. C语言入门(初识C语言)

    C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...

  4. c语言编译器IDE怎么,C语言编译器和IDE的选择

    什么是编译器: CPU只认识几百个二进制形式的指令,C语言对CPU而言简直就是天书.C语言是用固定的词汇与格式组织起来,简单直观,程序员容易识别和理解. 这时候就需要一个工具,将C语言代码转换成CPU ...

  5. 初识C语言,了解一下C语言轮廓

     引语:学习一门语言,若是我们提前清楚这门语言的一个轮廓,既有利于提高我们学习这门语言的效率,又有利于我们更好地掌握这门语言.为什么有这样的好处呢?相当于打战之前提前了解一下敌人的情况,然后对敌人进行 ...

  6. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  7. c语言编译器_学C语言写自己的K语言:编译器词法分析。

    词法分析(lexical analysis),是计算机科学中将字符序列转换为记录(Token)序列化的过程.词法分析一般分手动与自动,自动是基于lex,flex词法分析器使用正则式来配置,我们这里将学 ...

  8. 【详解】Java语言的特点以及Java语言与C/C++的比较

    文章目录 一.Java语言的特点 1.跨平台性/可移植性 2.面向对象 3.简单性 4.分布性 5.健壮性 6.安全性 7.解释型 8.多线程 二.Java与C/C++的区别 1.指针 2.多重继承 ...

  9. 怎么理解python语言_Python语言入门1-理解Python语言

    本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...

  10. 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点

    问题:Java是什么?Java有什么优点 Java是一门面向对象计算机编程语言,java不仅仅吸收了C++语言的各种优点,而且还除去了C++里面很多难以理解的多继承.指针等概念,因此java语言就具有 ...

最新文章

  1. jdk8新特性_JDK8与JDK9新特性学习
  2. 阿里云、浙江大学成立“智云实验室” 打造中国高校数字化样本
  3. POJ2118基础矩阵快速幂
  4. 高考后家有学计算机,2021高考热门专业将有大改动,计算机专业永远的神,榜首才是真黑马...
  5. Flink从入门到精通100篇(十九)-基于 Flink 的大规模准实时数据分析平台的建设实践
  6. python目录遍历_python文件操作之目录遍历实例分析
  7. Mybatis逆向工程的pojo实现序列化接口的代码
  8. 基于Qt的光盘刻录开发
  9. java xml解析_Java解析XML(4种方法)
  10. android图标成功,Android多启动图标实现
  11. 2016年的题目总结
  12. 同步发电机励磁调节实验原理_【每日一学】同步发电机的运动方程
  13. Vue中的动态加载组件
  14. 阿里巴巴开源项目汇总-(前端)
  15. 计算机excel插入公式,Excel输入公式
  16. 计算机基础知识学习第七课,7、新建文件夹--电脑基础知识
  17. Shell ifs 用法
  18. SQL注入漏洞 详解
  19. MSSQL 服务器主体 无法在当前安全上下文下访问数据库,错误:916
  20. rac节点时间同步方法

热门文章

  1. C# 大华相机图像采集
  2. 分析BarTender的SDK帮助文档
  3. python中文分词+词频统计
  4. excel 转txt文件
  5. 数据库查询优化-添加索引
  6. Hadoop面试题总结
  7. PHP TCPDF导出支持中文的pdf
  8. 设备管理器里“SM总线控制器”、“其它PCI桥设备”驱动有问题
  9. 中航信e-build php,学习PHP精粹,编写高效PHP代码之质量保证
  10. 《统计学》第八版贾俊平第十章方差分析知识点总结及课后习题答案