C语言圆周率天书简化,c语言天书__圆周率的计算及分析
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语言天书__圆周率的计算及分析相关推荐
- 51 时间片系统 纯c语言,51单片C语言学习.doc
51单片C语言学习 51单片机C语言学习第三课 [ 作者:明浩????转贴自:电子制作实验室????点击数:1067????更新时间:2004-10-2????文章录入:admin ]减小字体 增大字 ...
- 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态
介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...
- C语言入门(初识C语言)
C语言入门(初识C语言) 前言 什么是C语言? 为什么选择C语言? 计算机语言的发展 高级计算机语言中的经典:C语言 初识C语言(正片开始) 一.第一个C语言程序(你好,C语言) 1.1 #inclu ...
- c语言编译器IDE怎么,C语言编译器和IDE的选择
什么是编译器: CPU只认识几百个二进制形式的指令,C语言对CPU而言简直就是天书.C语言是用固定的词汇与格式组织起来,简单直观,程序员容易识别和理解. 这时候就需要一个工具,将C语言代码转换成CPU ...
- 初识C语言,了解一下C语言轮廓
引语:学习一门语言,若是我们提前清楚这门语言的一个轮廓,既有利于提高我们学习这门语言的效率,又有利于我们更好地掌握这门语言.为什么有这样的好处呢?相当于打战之前提前了解一下敌人的情况,然后对敌人进行 ...
- python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程
本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...
- c语言编译器_学C语言写自己的K语言:编译器词法分析。
词法分析(lexical analysis),是计算机科学中将字符序列转换为记录(Token)序列化的过程.词法分析一般分手动与自动,自动是基于lex,flex词法分析器使用正则式来配置,我们这里将学 ...
- 【详解】Java语言的特点以及Java语言与C/C++的比较
文章目录 一.Java语言的特点 1.跨平台性/可移植性 2.面向对象 3.简单性 4.分布性 5.健壮性 6.安全性 7.解释型 8.多线程 二.Java与C/C++的区别 1.指针 2.多重继承 ...
- 怎么理解python语言_Python语言入门1-理解Python语言
本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...
- 电脑java语言有什么用_Java语言是什么?_Java语言有什么优点
问题:Java是什么?Java有什么优点 Java是一门面向对象计算机编程语言,java不仅仅吸收了C++语言的各种优点,而且还除去了C++里面很多难以理解的多继承.指针等概念,因此java语言就具有 ...
最新文章
- jdk8新特性_JDK8与JDK9新特性学习
- 阿里云、浙江大学成立“智云实验室” 打造中国高校数字化样本
- POJ2118基础矩阵快速幂
- 高考后家有学计算机,2021高考热门专业将有大改动,计算机专业永远的神,榜首才是真黑马...
- Flink从入门到精通100篇(十九)-基于 Flink 的大规模准实时数据分析平台的建设实践
- python目录遍历_python文件操作之目录遍历实例分析
- Mybatis逆向工程的pojo实现序列化接口的代码
- 基于Qt的光盘刻录开发
- java xml解析_Java解析XML(4种方法)
- android图标成功,Android多启动图标实现
- 2016年的题目总结
- 同步发电机励磁调节实验原理_【每日一学】同步发电机的运动方程
- Vue中的动态加载组件
- 阿里巴巴开源项目汇总-(前端)
- 计算机excel插入公式,Excel输入公式
- 计算机基础知识学习第七课,7、新建文件夹--电脑基础知识
- Shell ifs 用法
- SQL注入漏洞 详解
- MSSQL 服务器主体 无法在当前安全上下文下访问数据库,错误:916
- rac节点时间同步方法