欢迎来到天天文库
浏览记录
ID:6330805
大小:155.00 KB
页数:31页
时间:2018-01-10
《c语言程序课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计课程设计报告完成任务:1.用二分法求方程根2.矩阵求逆3.链表制作4.二十四点游戏5.学籍管理程序专业:计算机科学与技术班级:计二班学号:0705010225姓名:本人于2008年9月1号在计算机中心6号机房25号机器上完成了本次课程设计。课程设计过程中使用的操作系统是Windows2000,主要开发平台VC++6.0。任务二用二分法求方程根目的与意义用二分法求方程f(x)==x3-x-1=0在区间[1.0,1.5]内的一个实根,要求准确到小数点后第2位。任务分析方程在区间[1.0,1.5]上单调并且存在一个根。取区
2、间中点,确定方程的根在左右哪个区间(或者恰好是区间中点)内,这样一次就可以把区间缩小一半,重复做此步骤直到满足精确度为止。方程的近似根为区间中点。取区间中点:只需用区间的两个端点相加,在除以2即可。确定根所在位置:区间[a,b]中,取中点c=(a+b)/2,与a,b构成两个区间:[a,c]与[c,b]。而方程的根的位置有三种可能1.在区间[a,c]中;2.在区间[c,b]中;3.根就是中点c。若中点就是方程的根,则可以直接输出。若不是这是剩下两种情况。若f(c)*f(a)<0,则根在区间[a,c]中,若f(b)*f(a)<0,则根
3、在区间[b,c]中,两者只有一种情况成立。验证是否满足精确度:精确到小数点后两位,就是说0.01.。由于是用二分法,所以到了0.01后,还要继续二分,直到0.01后才能满足精确度。也就是说,区间左右值相减要小于0.001时,输出区间中点即可。数据结构设计此程序将涉及三个变量:区间的两个端点,区间中点。由于要精确到小数点后两位,所以必须设置为float类型。还有一个函数,由于只需要验证返回值的正负,所以只需用int类型就可以了。后来在函数运行中出现错误,更改为float类型(具体错误将在“代码调试与运行”部分说明)。关键算法设计本程
4、序比较小,原本只用一个main函数就可以完成,可是由于方程的函数每次输入比较麻烦,所以设置了一个简单的函数:Inthanshu(floatx){returnx*x*x-x-1;}用它来返回方程函数的带入值。程序的关键在于不断二分,确定根所在位置的循环算法。此循环代码如下:do{f=(a+b)/2;if(hanshu(f)==0){printf("方程的根为%.2f",f);break;}if(hanshu(a)*hanshu(f)<0)b=f;elsea=f;}while(b-a>0.001);首先给f赋值为区间中点。若它满足
5、hanshu(f)==0,说明f为方程的根,直接输出f,并用break语句,结束循环。如果不满足,则验证根在哪个区间,并执行相应赋值,形成新的区间,继续执行循环。循环在执行到满足精确度时结束,即b-a<=0.001,结束循环。输出方程的根最好区分开此根是近似根还是准确根。所以把输出分为两部分。一部分在循环内,验证区间中点为准确根的时候输出。若要输出近似根则要循环结束后,所以输出语句在循环结构外面。为了验证循环结束后得到的根f是不是准确根,顾输出语句在if语句内。代码如下:if(b-a<0.01)printf("方程的近似根为%.2
6、f",f);代码调试与运行原程序运行时结果出人预料:方程的根为1.25注意到1.25恰好是原来区间的中点,而根据输出来看,1.25是方程的精确根。可是经过计算我得到方程的根应该在1.3到1.4之间。会输出这个结果,也就是说程序执行了if(hanshu(f)==0){printf("方程的根为%.2f",f);break;};为什么会这样?我想起返回函数带入值的函数hanshu()的返回值是int。如果返回值没有整数部分,就会返回0。所以把它更改为float类型,最终得到结果:1.33。屏幕显示为:方程的近似根为1.33小结
7、与体会每项数据在数据设定时需要细致详细的考虑数据的用途,以及可能出现的错误。注意每种数据的范围以防止程序运行中出错。一个简单的程序,也不能保证一次编写毫无错误。尤其在DEBUGE系统不能检验出错误,但是结果又不是期望值时,必须重新检查程序,任何细小的地方都可能是出错的原因。本人于2008年9月2号到2008年9月5号在计算机中心6号机房14号机器上尝试了本次课程设计。课程设计过程中使用的操作系统是Windows2000,主要开发平台VC++6.0。由于各种原因至今没有完成,个大函数已经完成,但是在运行中出现错误的原因没有找到。任务
8、一矩阵求逆·目的与意义给定一个8X8的矩阵A,求出它的逆矩阵A-1。矩阵的元素由键盘中输入,首先判断矩阵是否可逆,若可逆则求出其逆矩阵并在屏幕上用适当格式显示出来。程序可以把矩阵求逆这一复杂的运算由计算机代替计算,既可以保证结果的准确,又可以高速度
此文档下载收益归作者所有