C语言程序设计课程设计--编写函数,求取两个整数m,n的最大公约数和最小公倍数.doc
C语言程序设计课程设计C语言程序设计课程设计评语考勤(10)纪律(10)过程(40)设计报告(30)答辩(10)总成绩(100)专 业 电气工程及其自动化 班 级 电气1203 姓 名 熊董 学 号 201209837 指导教师 王思华 兰州交通大学自动化与电气工程学院2013 年07月 20日1、基础题1.1题目编写函数,求取两个整数m,n的最大公约数和最小公倍数。1.2题目分析求两个整数的最大公约数和最小公倍数可以用辗转相除法,用两个函数max和min分别求出最大公约数和最小公倍数。在主函数中输入两个整数m和n,并传递给函数max,求出最大公约数返回主函数并赋给整型变量h,然后h和两个整数m,n一起作为实参传递给函数min,从而求出最小公倍数,返回主函数赋给l。输出最大公约数和最小公倍数。主函数N-S图如图一输入两个整数m和n调用max函数求出最大公约数h调用min函数求出最小公倍数l输出两个整数的最大公约数和最小公倍数 图一主函数max函数N-S图 如图二 min函数N-S图如图三 输入m和nYnm Ntm;mn;nt当rmn0mn,nr 向主函数返回n的值输入m,n和h向主函数返回m*n/h的值 图二max函数 图三min函数1.3源程序includestdio.hint main int maxint,int;int minint,int,int;int m,n,h,l;scanfd,d,hmaxm,n;printf最大公约数是dn,h; lminm,n,h;printf最小公倍数是dn,l;return 0; int maxint m,int n int t,r;ifnm; tm;mn;nt;whilermn0 mn; nr; returnn; int minint m,int n,int h returnm*n/h;1.4程序运行结果如图四 图四基础题运行截图162、改错题2.1题目include stdio.hinclude conio.hvoid funint a, b int t; t b; b a ; a t;main int a, b; clrscr ; printfEnter a,b ; scanfdd, fun printfad bdn, a, b;2.2题目分析该源程序的目的是交换两个数的值,有主函数可以看出该函数是应用指针交换两个数的值。所以调用函数中的a,b都要改成*a,*b, void funint a, b改成void funint *a,int *b。clrscr 只能在Turbo-C中可用所以改用systemcls。输入*a,*b t*b;*b*a;*atviod fun函数N-S图如图五 main函数N-S图如图六清屏输入a,b将a,b赋值到 t *b; *b *a ; *a t; main int a, b; systemcls; printfEnter a,b ; scanfdd, fun printfad bdn, a, b; 2.4程序运行结果如图七 图七改错题运行结果截图3、综合题3.1题目设计课题四猜数字游戏一、问题描述该游戏可以由程序随机产生或由用户输入四个0到9之间的数字,且不重复。玩游戏者通过游戏提示输入八次来匹配上面所输入的数字。A表示位置正确且数字正确,B表示数字正确而位置不正确。二、功能要求1. 本游戏显示这样的菜单(1) 随机产生数据(2) 用户输入数据(3) 退出游戏2. 游戏成功与否都能返回主菜单三、算法提示1. 数据结构数组2. 用简单的程序设计方法四、测试数据测试数据3792第一次输入12340A2B第二次输入 56780A1B第三次输入08670A1B第四次输入 97861A1B第五次输入 17942A0B第六次输入27932A2B第七次输入 37924A0B游戏成功五、其它对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能,如破记录功能,若你所匹配的次数小于纪录保持者,则为破纪录。3.2题目分析本题要求做一个猜字游戏,其功能包括菜单、用户模式测试、随机产生数据进行游戏。所以可以得知该游戏包括主函数、随机数产生函数、输入数字函数、游戏函数、测试数据输入函数。首先通过主函数输出菜单并选择所要进行的模式,如果选择随机产生数据则调用随机数产生函数产生随机数,然后将产生的数据代入游戏函数进行游戏,游戏函数中进行游戏输入数据时调用输入数字函数输入数据;如果选择用户输入数据则调用测试数据输入函数输入数据,之后将输入的数据代入游戏函数中进行游戏,游戏函数中进行游戏输入数据时调用输入数字函数输入数据。(1)系统的总体框图如图八开始功能菜单显示随机产生数据用户输入数据退出c_randc_printfexit1 图八系统的总体框图(2)函数间的调用关系如图九 主函数main随机模式c_rand游戏函数c_game输入数据函数c_char *str用户模式c_printf输入数据函数c_ 图九函数间的调用关系3.3流程图输入数字函数如图十 i0 for i 0 to 9 strigetchputcharstrii putcharnfor i 0 to 3 Ystri0stri9 N无效输入,重新输入 for j 0 to iYstristrj N无效输入,重新输入 j i 图十输入数字函数游戏函数如图十一out5 for ci 0 to 7printf第d次输入,ci1 c_infor i 0 to 3 Y initempi Nout0 for j 0 to 3 initempjY Nout2 j 输出字符串out strcmpout,”4ABb” Y N游戏成功,按任意键返回主菜单 getch out00 out20 游戏失败,按任意键返回主菜单 getch 图十一游戏函数随机数产生函数如图十二定义字符数组data”0123456789” 定义字符数组 temp4 清屏 输出“随机模式”for i0;i4;ijrand10-i;tempidataj;datajdata10-i-1;执行函数 c_gametemp图十二随机数产生函数用户输入模式函数如图十三定义字符数组 temp4清屏输出“用户输入模式”输出请输入测试数据执行函数 c_temp清屏输出”用户输入模式”执行函数 c_gametemp图十三用户输入模式函数主函数如图十四初始化随机数发生器清屏 While1输出“1随机产生数据” “2 用户输入数据” “3 退出游戏” “choice”输入数字1,2,3中的其中一个Y1 N执行函数 c_rand 执行break结束循环Y2 N执行函数 c_rand执行break结束循环退出程序 图十四主函数3.4源程序include stdio.hinclude stdlib.hinclude conio.hinclude string.hinclude time.hvoid c_char *str int i,j;fori0;i4;i strigetch; putcharstri; putcharn; fori0;i4;i ifstri0stri9 printf无效输入,请重新输入; goto ; forj0;ji;j ifstristrj printf无效输入,请重新输入; goto ; void c_gameconst char *temp int i,j,ci; char in4; char out50A0B; forci0;ci8;ci printf第 d 次输入,ci1; c_in; fori0;i4;i ifinitempi out0; else forj0;j4;j ifinitempj out2; printfsn,out; ifstrcmpout,4A0B0 printf游戏成功,按下任意键返回主菜单; getch; return; out00; out20; printf游戏失败,按下任意键返回主菜单; getch;void c_rand int i,j; char data0123456789; char temp4; systemcls; printf随机模式nn; fori0;i4;i jrand10-i; tempidataj; datajdata10-i-1; c_gametemp;void c_printf char temp4;systemcls; printf用户输入模式nn; printf请输入测试数据; c_temp; systemcls; printf用户输入模式nn; c_gametemp;void main srandtimeNULL; while1 systemcls; printf1 随机产生数据n; printf2 用户输入数据n; printf3 退出游戏n; printfchoice ; switchgetch case 1c_rand;break; case 2c_printf;break; case 3exit1; 3.5程序运行结果主菜单如图十五 图十五主菜单截图用户测试模式如图十六 图十六用户测试模式运行结果截图随机模式如图十七 图十七随机模式运行结果截图当输入的四个数字中有重复数字时如图十八 图十八当输入的四个数字中有重复数字时结果截图当选择退出后如图十九 图十九当选择退出后结果截图总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在王老师的辛勤指导下,终于游逆而解。同时,我学得到很多实用的知识,在次我表示感谢同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢