C语言设计报告.doc

上传人:仙人指路1688 文档编号:2384754 上传时间:2023-02-17 格式:DOC 页数:12 大小:147KB
返回 下载 相关 举报
C语言设计报告.doc_第1页
第1页 / 共12页
C语言设计报告.doc_第2页
第2页 / 共12页
C语言设计报告.doc_第3页
第3页 / 共12页
C语言设计报告.doc_第4页
第4页 / 共12页
C语言设计报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《C语言设计报告.doc》由会员分享,可在线阅读,更多相关《C语言设计报告.doc(12页珍藏版)》请在三一办公上搜索。

1、浙江万里学院集中实践课程报告课程名称: C程序设计实践 系 别: 专业班级: 姓名: 学号: 起止日期: 2012年9月3日-2012年9月14日 1 实践主要内容1.1 :绘制余弦曲线和直线的叠加问题。要求cos(x)曲线与直线f(x)=45*(y-1)+31的迭加图形。cos(x)用“*”表示,f(x)用“+”表示,在两个图形相交的点上则用f(x)图形的符号。1.2:搬山游戏问题。要求设计程序,输入山的总数(n)和每次允许搬山的最大数(k)。再输入需要搬走山的数目,打印出要搬多少座山,并提示尚剩余多少座山。双方轮流搬山直到最后一座山搬完为止。2 练习完成情况2.1典型题目分析绘制余弦曲线和

2、直线的叠加问题分析:该题要利用坐标系和直线和余弦曲线的关系编写函数。关键是要在分别计算出同一行中两个图形的列方向点坐标后,正确判断相互的位置关系。搬山游戏问题分析:解决这类问题的基本方法是先进行分析,找出游戏对弈的规律性,然后让计算机按照游戏的规则,模拟人进行游戏。2.2疑难解析绘制余弦曲线和直线的叠加问题分析:该题考核坐标系上直线和余弦曲线的表示和循环语句的嵌套。疑点一:怎样编写曲线与直线在坐标系上的坐标?疑点二;怎样在各点打印出相应的符号?两个疑点,都要通过循环结构来设计。前者须控制循环变量(即行方向)不变,求出对应的直线与曲线的横坐标。再通过循环求出各个行方向上所对应的两线的横坐标,表示

3、以y为变量的余弦曲线和直线方程。后者用控制循环变量(即列坐标),利用if语句,判断输出的符号。搬山游戏问题分析:该题考核算法,计算机每次搬山应遵循如下原则:1) 当:剩余山数目-1=可移动的最大数k时,计算机要移(剩余山数目-1)座,以便将最后一座山留给人。 2)对于任意正整数x,y,一定有:0=x%(y+1)=y。为留下最后一座山,又要控制每次搬山数不超过最大数,要满足(n-1)%(k+1)。若结果为0,即整除无余数,则规定只搬1座山,以防止冒进后发生问题。3 综合设计3.1分析3.1.1 题目1. 绘制余弦曲线和直线的叠加问题分析:显示余弦曲线和直线的叠加图形。.2.有n座山,计算机与人轮

4、流搬山。每次搬山不超过k座,谁搬最后一座谁输。首先输入山的总数和每次允许搬山的最大数。再输入需要搬走的山的数目,打印出要搬多少山,并提示尚剩余多少山。直至最后山搬完为止。最后显示赢家,询问是否继续。若否,则统计局数和胜负。3.1.2功能目标绘制余弦曲线和直线的叠加:利用坐标系和直线和余弦曲线的关系编写函数计算出同一行中两个图形的列方向点坐标输出相应的符号。搬山游戏:找出游戏对弈的规律性,按照游戏的规则,设计算法,编写程序,最终统计出共玩了多少局,双方胜负如何。3.1.3运行环境 3.1.4开发工具WINxp C-Free3.53.2设计绘制余弦曲线和直线的叠加设计:须知坐标系,21个行坐标,6

5、3个列坐标。首先应对第一个行坐标进行计算,并在一行中打印图形。即yy=0,屏幕行坐标为y=0.1*yy,再利用m=acos(1-y)*10和n=45*(y-1)+31y求出曲线和直线上所对应的横坐标m,n。接着利用循环结构for(x=0;x=62;x+),用if语句将该行每个横坐标输出相应的符号。如果屏幕坐标x=n 或者x=m&x=n,那么在屏幕上显示的就是“+”,如果屏幕坐标x=m, 那么在屏幕上显示的就是“*”,否则就用“ ”代替。结构图 yy=0 y=0.1*yy m=acos(1-y)*10 n=45*(y-1)+31 x=0 x=m&x=n| x=n是 否 是 x=m 否输出“+”

6、输出“*” 输出“ ” x=x+1 直到x=62yy=yy+1直到yyn|k1时,再输出对x赋值。当满足xk|xn时,计算剩下的值再输出There are %d mountains left now对值进行判断。若为0,则输出I win. You are failure,反之用y=(n-1)%(k+1),求出最佳搬山数,并输出。再计算剩余n并输出。判断n的值,若不为0,返回上步。反之输出I am failure. You win。接着重新循环下一局,询问是否要继续比赛。若否,则输出玩的次数以及得分和Game over!Y开始Npc=cc=0 g=1gn|k1输出:玩的次数以及得分结束输出:Ho

7、w many mountains do you wish move away:NYRepeat again!输入:为x赋值xk|xnIIIegal,again please!YN输出:There are %d mountains left now:!nNYy=(n-1)%(k+1)!yY=1YNn=n-y输出:.I win. You are failure.输出:Copmputer move y mountains away:nNY输出:There are %d mountains left now:cc=cc+1输出:.I am failure. You win.pc=pc+13.3 详细设

8、计1绘制余弦曲线和直线的叠加问题;#include#includevoid main() double y;int x,m,n,yy; printf(=This program shows the curve of cos(x)and a line=n) ;printf( * f(x)=cos(x) + g(x)=45*(y-1)+31n);for(yy=0; yy=20; yy+)/对第一个y坐标进行计算并在一行中打印图形/ y=0.1*yy; /y:屏幕行方向坐标/m=acos(1-y)*10; /m: cos(x)曲线上y点对应的屏幕列坐标/n=45*(y-1)+31; /n: 直线上y

9、点对应的列坐标/for(x=0;x=62;x+) /x: 屏幕列方向坐标/if(x=m&x=n) printf(+); /直线与cos(x)相交时打印+/else if(x=n) printf(+); /打印不相交时的直线图形/else if (x=m|x=62-m) printf(*);/打印不相交时的cos(x)图形/else printf( ); /其它情况打印空格/printf(n); 2. 搬山游戏问题:#includevoid main()int n,k,x,y,cc,pc,g;printf(*n);printf(* This is Moutain Moveing Game. *n

10、);printf(* This are n mountains,two personsmove them in *n);printf(* turn.Each one each time moves 1 to k mountains,the *n);printf(* one who takes the last stick will lose the game. *n);printf(*n);printf(-Game Begin-n);pc=cc=0;g=1;for(;) printf(No.%2d game n,g+);printf(-n);printf(How many mpuntains

11、are there?);scanf(%d,&n);待添加的隐藏文字内容3if(!n) break;printf(How many mountains are allowed to each time?);doscanf(%d,&k);if(kn|kRepeat again!n);while(kn|kHow many mountains do you wish move ?);scanf(%d,&x);if(xk|xn) /*判断搬山数是否符合要求*/ printf(IIIegal,again please!n);continue; n-=x;printf(There are %d mounta

12、ins left now.n,n);if(!n) printf(-I win. You are failure-nn);cc+;else y=(n-1)%(k+1); /*求出最佳搬山数*/if(!y) y=1;n-=y;printf(Copmputer move %d mountains away.n,y);if(n) printf( There are %d mountains left now.n,n);else printf(-I am failure. You win-nn);pc+; while(n);printf(Games in total have been played %

13、d.n,cc+pc);printf(You score is win %d,lose %d.n,pc,cc);printf(My score is win %d,lose %d.n,cc,pc);printf(-Game over!-n) ;3.4 调试与作品操作说明1绘制余弦曲线和直线的叠加调试:2. 搬山游戏 1、主界面 2.第一局输入各值3,第二局输入各值,结束 3,第二局输入各值,结束4 实践总结与体会C语言已学过一个学期了,但它所包含的内容是在短短一学期无法学精,在两周的课设里我更是深有体会。我不仅巩固了以前学过的知识,而且学到了很多在书本上所没有学到过的知识。我初步学会了论文设计的

14、基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理资料的能力,为大学毕业论文打下了初步的基础。懂得了理论与实际结合的重要,理论知识是远远不够的,只有把理论与实践相结合,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动。同时,体会到要学好C语言还有很长的路要走,要想真正掌握好编程技术一定要付出更多的努力,对于今后的学习我觉得要做好一下几点: 1加深对课堂讲授内容的理解: 老师课堂上讲授的c语言的语法规则,原先听起来有点困难,不理解。需要课后通过多次上机练习,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定;2熟悉程序开发环境:一个c语言程序从编辑、

15、编译、连接到运行,都要在一定的外部操作环境下才能进行;3学会上机调试程序,学会自己找出问题的关键并解决:因为程序编写完后,决不意味着万事大吉。往往自己认为万无一失的程序,实际上机运行时可能不断出现麻烦。 最后,我觉得课程设计需要一定的耐心才能做好。坚持就是胜利!我们绝不能中途放弃,要用心做好每一个设计。 参考文献1 谭浩强C程序设计北京:清华大学出版社,20052刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,20063刘玉英 .C语言程序设计案例驱动教程。清华大学出版社,2011、4王为清。C语言高级编程及实例剖析. 北京:人民邮政出版社,20084杨将新,C语言开发全程指南。北京:电子工业出版社,2008

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号