计算圆周率

上传人:今*** 文档编号:108102673 上传时间:2019-10-22 格式:DOC 页数:21 大小:241.50KB
返回 下载 相关 举报
计算圆周率_第1页
第1页 / 共21页
计算圆周率_第2页
第2页 / 共21页
计算圆周率_第3页
第3页 / 共21页
计算圆周率_第4页
第4页 / 共21页
计算圆周率_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《计算圆周率》由会员分享,可在线阅读,更多相关《计算圆周率(21页珍藏版)》请在金锄头文库上搜索。

1、C程序设计课程设计报告(2015 2016 学年第2学期)题 目: 计算圆周率 学 院: 电气与电子工程学院 班 级: 电气1309 学 号: 1304080053 姓 名: 余康 指导教师: 罗涛华老师 时 间:起 2015.4.27 止 2015.4.30 21一、 课程设计基本信息课程代码:05190124课程名称:计算机基础课程设计课程英文名称: Computer-based Course Design课程所属单位(院(系)、教研室):数学与计算机学院计算机基础课程群课程面向专业:食品科学与工程学院、机械工程学院、电气与电子工程学院、土建学院、动物科学与营养工程学院、化学与环境工程学院

2、、工商管理类、国际经济与贸易、旅游管理、金融学、行政管理、汉语言文学、英语、护理学、康复治疗专业、生物科学类、制药工程、制药工程(生物制药)、药物制剂、物流管理课程类型:必修课先修课程:大学计算机基础通识选修课程、程序设计课程学分:1 总学时:1周二、 课程设计目标掌握所学语言程序设计的方法,熟悉 所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。通过综合设计要求达到下列基本技能:1培养查阅参考资料、手册的自学能力,通过独立思考深入钻研问题,学会自己分析、解决问题。 2通过对所选题目方案分析比

3、较,确立方案,编制与调试程序,初步掌握程序设计的方法,能熟练调试程序。 3系统设计编程简练,可用,功能全面,并有一定的容错能力。用户界面良好,有较好的输出功能。在完成课题基本要求后,具有创新型设计,具有一定的实用价值。4根据个人的设计调试过程,撰写设计报告。三、 课程设计内容熟练掌握所学语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。四、 课程设计要求1. 要求

4、每个同学都要认真对待,积极参与。2. 课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同时填写并完成课程设计报告册。3. 不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计中完全未参与的将作不及格处理。五、 考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,百分制计算,具体考核标准主要包含以下几个部分:1. 程序运行情况20分2. 程序功能的完善程度10分3. 程序结构的合理性10分4. 对问题的答辩情况20分5. 创新情况10分6. 学生的工作态度与独立工作能力10分7. 设计报告内容的规范性20分备注:1.

5、 按规定时间填写各阶段文档,学习态度加5分2. 设计报告内容雷同扣40分,无调试过程问题分析扣10分,无参考文献扣10分3. 源程序无注释则在程序结构合理性扣10分六、 课程设计主要参考资料1. 谭浩强著. C程序设计(第3版). 北京:清华大学出版社,2005.72. 刘光蓉、汪靖、陆登波主编. C程序设计实验与实践教程. 北京:清华大学出版社,2011.23. 游洪跃主编. C语言程序设计实验与课程设计教程. 北京:清华大学出版社,2011.54. (美)PerterVan DerLinden著,徐波译. C 专家编程(C编程语言经典之作) . 北京:人民邮电出版社,2008.25. 凯尼

6、格 著,高巍 译. C陷阱与缺陷. 北京:人民邮电出版社,2008.26. Mark de Berg等著,邓俊辉译,计算几何-算法与应用(第3版),清华大学出版社,2009年8月7. 杨克昌编著,计算机程序设计典型例题精解,国防科技大学大学出版社,1999年3月七、 课程设计计划安排时 间任 务课程设计前一周选择课程设计题目,分析课题的要求,确定设计方案,完成报告册中“课程设计概述”课程设计第1天按功能模块编写详细设计说明,完成报告册中“总体设计”课程设计第2天编写程序、调试程序课程设计第3天编写程序、调试程序,完成报告册中“详细设计”课程设计第4天调试程序,完成报告册中“调试分析过程”课程设

7、计第5天完成报告册中“总结”、“参考文献”、“课程设计评审表”部分内容,提交课程设计报告、源程序、面试或答辩一、课程设计概述课程设计问题描述之前所学的C语言中已经接触过,但是算法单一,采用级数,而且收敛较慢,故运行时间较长,此程序设计要解决的问题是如何实现高精度的运算,如何对结果进行输出,并且尝试采用不同的方法进行求解圆周率设计要求1.要求每个同学都要认真对待,积极参与。2.课程设计结束时,提交完成的所有源程序、相关文件和可执行文件。同时填写并完成课程设计报告册。3.不符合要求的程序、设计报告、抄袭的设计报告或源程序代码、在设计中完全未参与的将作不及格处理。设计目的掌握所学语言程序设计的方法,

8、熟悉 所学语言的开发环境及调试过程,熟悉所学语言中的数据类型,数据结构、语句结构、运算方法,巩固和加深对理论课中知识的理解,提高学生对所学知识的综合运用能力。开发环境1. Visual c+6.0.2. 电脑3. Win7操作系统4. 各个办公软件二、总体设计(1)系统功能需求分析此系统主要功能是用不同的方法求圆周率,并且比较不同方法的优缺点,要实现目标就要完成以下步骤:1 要知道多种求圆周率的方法。2 要熟练掌握相关的C语言知识。3 学会将求圆周率的算法转换成C语言程序。4 将每一个算法C语言程序整合到一个C语言程序中。5 调试C语言程序,找出错误并修正。6 测试实验结果,输出各个算法的结果

9、,并进行比较,看各个算法的精确度。 此系统实现的关键是知道圆周率的算法,以及C语言的转换,要熟练掌握C语言知识,建立C语言转换逻辑思维。二、总体设计(2)系统总体设计框架mainjishu()neijie()suiji()waiqie() 三、详细设计(1)主要功能模块 的算法设计 随机数法求圆周率可以利用计算机中随机数函数模拟出两个01之间的浮点型点(x,y),建立直角坐标系思想,利用边长为1的正方形内切半径为0.5圆的方程(x-0.5)*(x-0.5)+(y-0.5)*(y-0.5)=0.25判断点是否在圆内,用计数器b保存在的点,如此模拟5000次。用落入圆内的点数b的4倍除以总的扔的点

10、数N用,可大概求出圆周率的值。一般来说,根据概率思想,N值越大,模拟次数越多,其求出来圆周率的值越接近真实的圆周率。祖冲之迭代法因为圆内接正六边形边长等于半径的思想,故可以从正六边形出发,不断迭代,当正多边形边数增加时,其周长也逐渐逼近圆的周长,反过来即可求的一定精度的圆周率,设圆内接正六边形的边长为b,边数为i,利用公式进行迭代运算,为了提高精度,算法中对公式进行分开运算,求得边数为2i的圆内接正多边形后得出其周长,运用迭代后的正多边形周长减去迭代前的正多边形周长,获取其精度程度。如果最终求出的圆内接正多边形的周长,即接近圆的周长,最后利用数学公式即可以求出圆周率。输出其最后迭代后得圆内接正

11、多边形的边数和圆周率即可。用级数法求圆周率,定义一个a400的数组用于存储计算结果,从结果出发,因为其要输出一定精度的圆周率,若n值太大会造成计算冗余,利用数学中不等式确定其n项,用一个循环从n1计算每一项的值并存储,1+n/(2n+1)用数组模拟手工乘除加法,除法1/(2n+1) ,相除后商为a0,然后将余数乘以10,作为被除数再除以除数取商为十分位,存于a1,如此类推;乘法则每个数组乘以n,如果满十则向前面数组进一,再取其个位存储;加法因为加1,则直接可以加到a0上。然后保存计算结果后用该值计算n-1项,如此重复一直到第1项后按照格式输出每个数组元素即可。附加题圆外切正多边形与圆内接正多边

12、形算法相似,但是圆半径的长度为1时,其外切正六边形的边长为2*sqrt(3)/3,并且其迭代公式也相应的进行了改变,b=2*(sqrt(b*b+4)-2)/b;由于圆外切正多边形迭代后的周长小于迭代前的周长,故控制精度时用迭代前的正多边形周长减去迭代后的正多边形边长。三、详细设计(1)主要功能模块源程序#include#include#include#include#define N 5000void main()void jishu();void neijie();void suiji();void waiqie();suiji();printf(-n);neijie();printf(-n

13、);jishu();printf(-n);waiqie();printf(-n);void suiji()double x,y;int a=0,b=0; srand(time(0);while(a+=N)/投5000次点x=(double)rand()/RAND_MAX;/产生01之间的浮点数y=(double)rand()/RAND_MAX;/产生01之间的浮点数if(x-0.5)*(x-0.5)+(y-0.5)*(y-0.5)=0.25)/判断所产生的点是否在圆内b+;/汇总落在圆内的点数printf(用随机数法求得=%lfn,4.0*b/N);void neijie() double e,b=1,d; /b:为正多边形边长 long int i; /i:正多边形边数 for(i=6;i*=2) /正多边形边数加倍 d=1.0-sqrt(1.0-b*b/4); /计算圆内接正多边形的边长 b=sqrt(b*b/4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号