C语言设计报告.doc_第1页
C语言设计报告.doc_第2页
C语言设计报告.doc_第3页
C语言设计报告.doc_第4页
C语言设计报告.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

浙江万里学院集中实践课程报告课程名称: 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疑难解析绘制余弦曲线和直线的叠加问题分析:该题考核坐标系上直线和余弦曲线的表示和循环语句的嵌套。疑点一:怎样编写曲线与直线在坐标系上的坐标?疑点二;怎样在各点打印出相应的符号?两个疑点,都要通过循环结构来设计。前者须控制循环变量(即行方向)不变,求出对应的直线与曲线的横坐标。再通过循环求出各个行方向上所对应的两线的横坐标,表示以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座山,计算机与人轮流搬山。每次搬山不超过k座,谁搬最后一座谁输。首先输入山的总数和每次允许搬山的最大数。再输入需要搬走的山的数目,打印出要搬多少山,并提示尚剩余多少山。直至最后山搬完为止。最后显示赢家,询问是否继续。若否,则统计局数和胜负。3.1.2功能目标绘制余弦曲线和直线的叠加:利用坐标系和直线和余弦曲线的关系编写函数计算出同一行中两个图形的列方向点坐标输出相应的符号。搬山游戏:找出游戏对弈的规律性,按照游戏的规则,设计算法,编写程序,最终统计出共玩了多少局,双方胜负如何。3.1.3运行环境 3.1.4开发工具winxp c-free3.53.2设计绘制余弦曲线和直线的叠加设计:须知坐标系,21个行坐标,63个列坐标。首先应对第一个行坐标进行计算,并在一行中打印图形。即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 否输出“+” 输出“*” 输出“ ” 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输出:玩的次数以及得分结束输出:how 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 详细设计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点对应的列坐标/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);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 are there?);scanf(%d,&n);if(!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 mountains 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 %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语言已学过一个学期了,但它所包含的内容是在短短一学期无法学精,在两周的课设里我更是深有体会。我不仅巩固了以前学过的知识,而且学到了很多在书本上所没有学到过的知识。我初步学会了论文设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理资料的能力,为大学毕业论文打下了初步的基础。懂得了理论与实际结合的重要,理论知识是远远不够的,只有把理论与实践相结合,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动。同时,体会到要学好c语言还有很长的路要走,要想真正掌握好编程技术一定要付出更多的努力,对于今后的学习我觉得要做好一下几点: 1加深对课堂讲授内容的理解: 老师课堂上讲授的c语言的语法规则,原先听起来有点困难,不理解。需要课后通过多次上机练习,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定;2熟悉程序开发环境:一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行;3学会上机调试程序,学会自己找出问题的关键并解决:因为程序编写完后,决不意味着万事大吉。往往自己认为万无一失的程序,实际上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论