牛顿迭代法解方程根.doc

上传人:rrsccc 文档编号:9441005 上传时间:2021-02-26 格式:DOC 页数:19 大小:105KB
返回 下载 相关 举报
牛顿迭代法解方程根.doc_第1页
第1页 / 共19页
牛顿迭代法解方程根.doc_第2页
第2页 / 共19页
牛顿迭代法解方程根.doc_第3页
第3页 / 共19页
牛顿迭代法解方程根.doc_第4页
第4页 / 共19页
牛顿迭代法解方程根.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《牛顿迭代法解方程根.doc》由会员分享,可在线阅读,更多相关《牛顿迭代法解方程根.doc(19页珍藏版)》请在三一文库上搜索。

1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目:填数值游戏程序院(系):计算机学院专 业:计算机科学与技术班 级:04010102学 号:2010040101044姓 名:刘倩指导教师:卢秉亮完成日期:2011年03月18日沈阳航空航天大学课程设计报告 目 录 目 录第1章 需求分析31.1 输入的形式和输入值的范围31.2 输出的形式31.3 程序实现的功能3第2章 概要设计42.1 主要数据结构和数据类型的定义描述42.1.1 主要数据结构42.1.2 主要数据类型的定义描述42.2主要算法思想和算法描述42.2.1 主要算法思想42.2.2 主要算法描述4

2、2.2.3 程序模块之间的层次和调用关系5第3章 详细设计63.1 实现概要设计中定义的所有数据类型63.2 对主程序和主要模块的实现写出伪码算法63.3 详细定义、说明主要函数和过程的输入输出参数和功能93.4 程序的流程图9第4章 调试分析114.1 调试过程中遇到的问题及解决办法114.2 改进设想114.3 经验和体会11第5章 用户使用说明12第6章 测试结果13参考文献15附 录(程序清单)161沈阳航空航天大学课程设计报告 第1章 需求分析第1章 需求分析1.1 输入的形式和输入值的范围输入数据类型为整型,将一批整型数据输入到一维数组中。输入值的范围是110之间的整数,采取逐个输

3、入的形式进行输入。1.2 输出的形式输出数据类型为整型,采用双重for循环将按要求排列后所得到的二维数组输出。1.3 程序实现的功能 可以对给定的一个含有110十个整数的一维数组,从中选择某9个填到一个3*3方格中,并且要求满足方格中所有相邻的两个整数之和是素数。能够将满足条件的二维数组输出。 2沈阳航空航天大学课程设计报告 第2章 概要设计第2章 概要设计2.1 主要数据结构和数据类型的定义描述2.1.1主要数据结构 数组是本程序用到的数据结构。2.1.2主要数据类型的定义描述本程序用到的数组类型是一维数组和二维数组,用到的基本数据类型是整型。定义了四个整型的循环变量i,j,p,m进行循环控

4、制,定义变量sum用于累加。2.2主要算法思想和算法描述2.2.1主要算法思想利用循环将110十个整数中的某9个整数按规律逐个填入到3*3方格中,直至将方格填满,并使其满足所有相邻的两个整数之和为素数。2.2.2主要算法描述定义判断素数的子函数isprime,在主函数中利用循环将二维数组bij初始化,即将bij赋值为0,然后将a0赋予b11,将该位置的0覆盖,然后以a0为中心,按要求选填剩余9个数中的4个,首先利用循环语句将与a0相加是素数的整数选出,并置于另一个已经定义的一维数组d10中,然后再利用循环将一维数组d10中的整数赋予二维数组中的奇数位。之后利用循环从剩余的5个整数中选出可以满足

5、条件的4个整数,然后按要求填入到剩余方格中将初始值0覆盖。最后将满足要求的二维数组输出。3沈阳航空航天大学课程设计报告 第2章 概要设计2.2.3程序模块之间的层次和调用关系 程序模块之间的层次和调用关系如图2.1所示。图2.1程序模块之间的层次和调用关系4沈阳航空航天大学课程设计报告 第3章 详细设计第3章 详细设计3.1 实现概要设计中定义的所有数据类型概要设计中定义的所有数据类型有:整型数组:a10, d10, b33 整型变量:i ,j ,m ,p, sum3.2 对主程序和主要模块的实现写出伪码算法函数isprime ( 定义未知整型变量m ) 定义循环变量i; if(m=1或者m为

6、偶数) 返回 0; if(m=2) 返回 1; for(i=3;i*im;m+) if(m%i=0) 返回 0; 否则 返回 1; 主函数main() 定义整型变量 i,j,m,p,h; for(i=0;i3;i+) for(j=0;j3;j+) 将二维数组bij初始化 bij=0; for(m=0;m3;m+)5沈阳航空航天大学课程设计报告 第3章 详细设计 输入110十个整数am; b11=a0; 调用函数isprime; if(isprime(a0+am) 将与a0相加是素数的整数赋予dp;p=am;am=0;p+; if(i+j)%2!=0) 将dp中的整数赋予bij; bij=dp;

7、 排除不满足条件的整数; for(m=0;m3;m+) if(am%2=0) am=0; while(am!=0&bij=0) for(i=0;i3;i+) for(j=0;j3;j+) bij=am;m+; h=b20; b20=b22; b22=h;6for(i=0;i3;i+) for(j=0;j3;j+) 输出结果 ; 结束程序73.3详细定义、说明主要函数和过程的输入输出参数和功能 主函数中利用for循环语句实现了数组值的输入,并按要求选填110十个整数的9个。自定义函数的功能是判断一个整数是否为素数。3.4程序的流程图主函数流程图如图2.2所示图2.2主函数8判断素数子函数流程图如

8、图2.3所示。图2.3判断素数子函数流程图9沈阳航空航天大学课程设计报告 第4章 调试分析第4章 调试分析4.1 调试过程中遇到的问题及解决办法调试过程中遇到了一些问题:1.在不该加分号的地方加分号,例如:在if条件句的后面加了分号。2.该用复合语句是忘记写花括号。3.定义空间不够,出现数组越界操作。4.在定义子函数时,在主函数内部定义函数。5.变量未定义就使用。6.函数调用时实参个数多于形参个数。解决方法:通过编译后的错误提示找出错误并改正。4.2 改进设想编译的时检查到语法错误,进行修改。利用单步跟踪,找出出现逻辑错误的部分,进行修改。4.3经验和体会1.在调用函数时,一定要保证实参个数和

9、形参个数相同。2 2.在给数组申请空间时,尽量多申请些,防止出现越界现象。 3.在使用复合语句时一定不要忘记使用。 4.在if条件句的后面不能加了分号,以防止其成为空语句 。 5.在使用变量是要保证前面已经定义。10沈阳航空航天大学课程设计报告 第5章 用户使用说明第5章 用户使用说明1、 运行VC+程序。2.、在运行界面下按要求输入110十个整数,存入到一个一维数组中,每输入一个数据后按空格再输入下一个数据。3、当10个数据都输入结束后按回车键,数据输入结束。4、运行界面上会显示出运行结果。 5、按任意键,程序结束。11沈阳航空航天大学课程设计报告 第6章 测试结果第6章 测试结果Pleas

10、e input the data :110输入待填入3*3方格的数据:1,2,3,4,5,6,7,8,9,10将110十个整数填入方格的中间过程:1 二维数组b33初始化,赋值为0. 即bij=0; 即b33=0,0,0,0,0,0,0,0,0;2. 利用循环赋值:a10=1,2,3,4,5,6,7,8,9,10;3. b11=a0; a0=0;标示a0已经被填入方格;4 b11=1;5. b33= 0,0,0,1,0,0,0,0,06. 利用循环将与a0相加是素数的整数am赋值于d10,d10=2,4,6,10;am=0;7. a10=0,0,3,0,5,0,7,8,9,08. 利用循环找

11、i 与 j相加是奇数的方格位置即:b01,b10,b12,b21;9. 利用循环将d10中的整数赋予 b01,b10,b12,b21;10. b33=0,2,0,4,1,6,0,10,0; 11. 利用循环在剩余的5个数中找出与b01,b10,b12,b21;相加均不为素数的整数,赋值为0;表示该数不可选填,即a7=0;12. a10=0,0,3,0,5,0,7,0,9,013. 在条件am!=0的情况下,利用循环将满足b00位置的整数选填,并使am=0;14 a10=0,0,0,0,5,0,7,0,9,015 b33=3,2,0,4,1,6,0,10,0;16 在条件am!=0的情况下,将利

12、用循环将满足b02位置的整数选填,并使am=0;17 a10=0,0,0,0,0,0,7,0,9,01218 b33=3,2,5,4,1,6,0,10,0;19 在条件am!=0的情况下,将利用循环将满足b20位置的整数选填,并使am=0;20 a10=0,0,0,0,0,0,7,0,9,021 b33=3,2,5,4,1,6,7,10,0;22 在条件am!=0的情况下,将剩余的唯一整数填入b22的位置23 b22=9,24 b33=0,2,0,4,1,6,7,10,9;25 不合理26 定义中间变量h,将b22和b22位置的整数调换27 h=b22; b22=b20 ; b20=h 28

13、b33=3,2,5,4,1,6,9,10,7;29 利用循环(i=0;i3;i+)30 换行31 利用循环(j=0;j3;j+)32 输出结果:33 3 2 5 34 4 1 635 9 10 736 Press any key to continue13沈阳航空航天大学课程设计报告 参考文献参考文献1 谭浩强主编,卜家岐,范燮昌编著. C语言程序设计M. 北京:高等教育出版社,20062 张磊. C语言程序设计M. 京:高等教育出版社,20053 张长海. C语言程序设计M.北京:高等教育出版社 20064 谭浩强. C语言程序设计(第三版)M.北京:清华大学出版社 2006 14沈阳航空航

14、天大学课程设计报告 附 录附 录(程序清单)# includeint isprime(int m) /判断是否为素数 int i;if(m=1|m%2=0)return 0;if(m=2)return 1;for(i=3;i*i=m;i+=2)if(m%i=0)return 0;return 1;void main() int i,j,m,p=0,k=0;int sum=0;int d10,a10,b33; for(i=0;i3;i+) for(j=0;j3;j+) bij=0; /数组初始化 printf(please input the data n); /提示输入数据 for(m=0;m

15、10;m+) scanf(%d,&am);/存放数据 b11=a0; for(m=1;m10;m+)if(isprime(a0+am) /判断与a0相加是否为素数dp=am;/存放与其相加为素数的数am=0; p+;sum+;/计算与a0相加为素数的个数 /if(isprime) p=0; while(psum)15for(i=0;i3;i+)for(j=0;j3;j+)if(i+j)%2!=0)bij=dp;p+; for(m=1;m10;m+) if(am%2=0) am=0; for(m=1;m10;m+) if(am!=0) for(i=0;i3;i+) for(j=0;j3;j+)

16、if(i+j)%2=0)&(i*j!=1)bij=am; if(!isprime(b00+b01) &(!isprime(b00+b10); if(!isprime(b02+b01) & (!isprime(b02+b12); if(!isprime(b20+b21) & (!isprime(b20+b10); if(!isprime(b22+b21) & (!isprime(b22+b12); m+; for(i=0;i3;i+) for(j=0;j3;j+) printf(%3d,bij); printf(n); 16沈阳航空航天大学课程设计报告课程设计总结:这次课程设计总共用了两周的时间

17、,通过这次课程设计我感到自己学到了很多知识。不仅巩固了自己在课堂上学的东西,而且收获很多在过去半年中没学过知识,自己对于C语言了解也加深了。在这次课程设计中,对自定义函数的运用有了很深的了解,对for循环的运用也变得顺畅,我的程序题目是字数最少的,但自我感觉却是最难做的!在这两周中我进了很多次图书馆,看了很多与专业相关的书籍,它们帮助我很多很多。我的程序题目很难,按照最初的设计思想,最佳的方法应该是运用回溯法,考虑到大一学生专业科目知识的欠缺,老师给我的题目降低了难度。虽然降低了难度,相比来说,仍然挺难。 正是因为这个题目有难度,我才能有机会更好的锻炼自己。由于自己知识的欠缺,在这两周内我不仅翻阅了大量的书籍,还向大二 大三的学长学姐请教了相关知识。从学长学姐那里,我学到了在过去半年中没有学到的知识。从这次课程设计中我领略到:题目越难,收获才会越多。 这次程序我加强自己的动手能力,改掉了自己眼高手低的毛病,收获很多。通过这次课程设计,自己的实际编程能力有了进一步的锻炼,也有了一定程度的提高。而且加强了自己如何进行编译,修改错误和单步跟踪检查等的能力。更加强了自己编程的能力。指导教师评语:指导教师(签字): 年 月 日课程设计成绩17

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1