圆周率计算的c程序实现

圆周率计算的c程序实现

ID:33578902

大小:166.75 KB

页数:3页

时间:2019-02-27

圆周率计算的c程序实现_第1页
圆周率计算的c程序实现_第2页
圆周率计算的c程序实现_第3页
资源描述:

《圆周率计算的c程序实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2010年5月保定学院学报May,2010第23卷第3期JOURNALOFBAODING保定学院学报UNIVERSITY201Vol.20年第3No.3期3文章编号:1674-2494(2010)03-0070-03圆周率计算的C程序实现荆霜雁,吕树进(保定学院数学与计算机系,河北保定071000)摘要:结合圆周率(π)的近似计算公式,分析C程序设计中几种常用设计思想,给出了π计算算法及源代码,以探讨启发、训练学生编程思维的方法.关键词:圆周率;循环;数组;函数;递归调用中图分类号:TP311.11文献标识码:AC语言是各本

2、专科院校学生学习程序设计的入门课,也是参加计算机等级考试(二级)的首选语言.然而,要想让初涉程序设计的学生真正领会其设计思想并灵活运用,绝非易事.如何在C语言教学中采用灵活有趣的方式,启发训练学生的编程思维,进而转化成他们主动利用计算机编程、解决实际问题的能力,是我们教学的主要目的.笔者在《C程序设计》教学中把π的近似计算问题引入实验课,将数学思维与C程序设计重要思想有机结合,循序渐进地给出4种π近似计算算法及源代码,激发学生学习C语言的兴趣,为后继学习打下基础.文中源代码除有明确说明出处外,均具原创性,并在VC++6.0环

3、境下测试通过.1π的近似计算公式[1]π众所周知:tan=1,从而π=4arctan1,应用泰勒公式将arctanx展开,就可以得到43572n-1xxxn-1xarctanx=x-+-+…+(-1)…3572n-1代入x=1得π111-n-11=1-+-+…+(-1)+…(1)43572n-1在《C程序设计》中,这个展开式常用来求π的近似值,直到最后一项的绝对值小于1e-6为止.2循环结构的运用[2]程序设计教材中,都把利用公式(1)求π的近似值作为循环结构应用的一个范例.循环结构是结构化程序设计的基本结构之一.利用循环解

4、决问题的思路是:将问题的求解转化为有规律的重复运算.公式(1)的计算转化为累加,重复运算为:pi=pi+t;t体现变化规律:n=n+2,s=-s,t=s/n.循环条件由t值控制(fabs(t)>1e-6).代码如下:#include#includevoidmain(){ints;floatn,t,pi;t=1;pi=0;n=1;s=1;while(fabs(t)>1e-6){pi=pi+t;n=n+2;s=-s;t=s/n;}收稿日期:2010-04-09作者简介:荆霜雁(1965-),女,

5、河北保定人,工学硕士,副教授,主要研究方向为计算机基础教育、程序设计.荆霜雁,吕树进:圆周率计算的C程序实现71pi=pi*4;printf("pi=%10.6f",pi);}该程序在VC++6.0中的运行结果pi=3.141594,达到预期计算要求.3数组的应用数组类型是C语言中的构造类型,它是同类型数据的有序集合.数组的引入,方便了循环的组织,从而提高了计算的效率.利用数组解决问题的思路是:将本身没有关联的大批数据存入数组,利用其下标的规律变化,组织循环,简化问题求解.将公式(1)中的每一项按序存入数组s,利用循环计

6、算s的前n项和,直到第n项的绝对值小于1e-6.代码如下:#include#includevoidmain(){floats[10000],pi=0;for(inti=1;i<10000;i++){if(i%2==0)s[i]=-1.0/(2*i-1);elses[i]=1.0/(2*i-1);}for(i=1;i<10000;i++){if(fabs(s[i])>1e-6)pi=pi+s[i];elsebreak;}pi=pi*4;printf("pi=%10.6f",pi);}程序在

7、VC++6.0中的运行结果pi=3.141699.4函数方法的使用利用函数解决问题的思路是:将功能完备的程序段写成函数,在主函数或其他函数中通过参数传递,完成功能调用.本例中,求数组s的前n项和的程序段已实现,将其编写成函数sum(floats[],intn),在主函数中,当第n项的绝对值小于1e-6时,传递参数,完成对sum的调用,计算π的近似值.代码如下:#include#includevoidmain(){floatsum(floats[],intn);floats[10000],pi

8、;for(inti=1;i<10000;i++){if(i%2==0)s[i]=-1.0/(2*i-1);elses[i]=1.0/(2*i-1);if(fabs(s[i])<1e-6)break;}pi=sum(s,i-1);pi=pi*4;printf("pi=%10.6f",pi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。