《C语言程序设计》课程设计报告_第1页
《C语言程序设计》课程设计报告_第2页
《C语言程序设计》课程设计报告_第3页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计 课程设计报告(2013 2014学年 第3学期)题 目:C语言课程设计专业:软件工程班级:软件工程技术2班姓名学号:1307142225林燕萍指导教师:成 绩:计算机科学与技术系2014年6月23日、课程设计的目的与要求 1二、方案实现与调试32.1掷骰子游戏52.2射击游戏72.3计算存款本息之和 82.4肇事逃逸 102.5礼炮 122.6汽车加油 142.7大优惠 162.8金币 19三、课程设计分析与总结23附录程序清单25二、课程设计的目的与要求(含设计指标)C语言是一种编程灵活, 特色鲜明的程序设计语言。C语言除了基知识,如概念,方法和语法规则之外更重要的是进行实训

2、,以提高学习者的动手和编程能力,从应试课程转变为实践工具。这是学习语言的最终目的。结合多年来的教学经验,根据学生的学习情况,为配合教学过程,使“项目教学法”能在本质上促使学生有更大进步,特编写了该C语言程序设计任务书,以在实训过程中给学生提供帮助。达到如下目的:1 在课程结束之前,让学生进一步了解C程序设计语言的编程功能;2 让学生扎实掌握 C程序设计语言的相关知识;3.通过一些有实际意义的程序设计,使学生体会到学以致用, 并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。编写程序要求遵循如下基本要求: 模块化程序设计 锯齿型书写格式 必须上机调试通过二、方案实现与调试2.1

3、掷骰子游戏题目内容的描述1) 两人轮流掷骰子,每次掷两个,每人最多掷10次。2) 将每人每次的分值累加计分3) 当两个骰子点数都为 6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。4) 结束条件:当双方都掷10次或经过5次后一方累计分数多出另一方的30%及以上。最后显示双方分数并判定优胜者。输入数据类型、格式和内容限制和输出数据的说明数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方主要模块的算法描述执行条本算法的思路过程:首先要随机产生随机数,然后进行算法输出数值, 件判断输入结果,最后比较结果,判断胜利的一方。程序流程图菓一

4、人降锻子籍二人那麗子诗亘華二人再分小詔詆图1掷骰子游戏调试过程及实验结果编辑过程中遇到的困难有:编程思路正确,但是无法正确编写出程序和编程过程缺乏。13 C:USERSSQ25DESKTOP25U,DDebug01.exe二个人第y次投岀的数奮一个人第8次投岀的数4奮二个人第瞅投岀的数3費一个人第丫次投岀的数 备二个人第9次投岀的数4豢f人第伪次投出的数3审二个人第讥次投岀的数图2掷骰子游戏2.2射击游戏题目内容的描述在程序运行时屏幕上方第一行随机出现一个符号,要求游戏者输入一个 1-80之间的整数,当用户输入一个整数后,一个*立即从屏幕底端的该整数列向上移动,若移动到屏幕的顶端能撞上符号,则

5、游戏者获胜;若没有撞上,则要求再输入一个整数,共允许输入5次,如果一直没有撞上,则认为游戏者输。提示:1) 输入 符号可以采用printf(%c,1)2) 显示*号向上移动:输出一些空行;输出 *号;以循环的方式增加延时(for(i=0;i100000;i+);); clrscr()清屏重新绘制 *号。2222输入数据类型、格式和内容限制和输出数据的说明System( “ cls ”);清楚屏幕,主要模块的算法描述本算法的思路过程:首先清楚屏幕,然后循环每行输出*,依次循环,判断是否击中目标,最后5次输入结束,或者击中目标结束。程序流程图r i=L图3射击游戏调试过程及实验结果该程序在调试过程

6、中出现的问题是:该题中大体循环是以次数,还是循环的结果作为判断,弄不清楚图4射击游戏2.3计算存款本息之和:*2.3.1 题目内容描述以“存款利率”为关键字上网搜索目前我国整存整取不同期限我国的银行存款利率,只计算一年(3%)、三年(4.25%)和五年(4.75%)三种期限。问题:1) 要求输入存钱的本金和期限,求到期能从银行得到的利息与本金合计。2)假设存款期限为三十年本金为10万,比较一年、三年和五年滚存三十年后的本息金额。261036.844 332020.963 359146.175*输入数据类型、格式和内容限制和输出数据的说明1)数据类型:长整型;2)内容限制:键入本金与年限;3)输

7、出数据:本息和 PI主要模块的算法描述程序流程图本算法的语言描述:输入限定之内的年份与存款金额,选择对应的年利率计算本息和图5计算存款本息之和调试过程及实验结果J C:U5ere(1250*5ktop253Debug3.exeHPlease input thePlease input the yeaps Van saue:337&0.000000 Presskey to conhlnue图6计算存款本息之和 1 C:Userssq 2 5Desktop3Dtb Li g3Jte-t otallPlease input the principa1:103000Please in pat the

8、yeais: 1Vdu saue:242726.265S25 tota1=1Please input the principa1:100000Please in put the yeaia: 3Vou saue:332020.937500 totallPleae input the pi-inc:ipa 1:108009Please in put t he years:5Vou saue:35914t.1S&20t o t al=0Pressy to co nt: nu&图7计算存款本息之和2.4肇事逃逸题目内容的描述某部闽DT的出租车交通肇事逃逸,现场无人看清后面的四位数字,但三位目击群众提

9、供 信息如下:1)车牌号后两位相同;2)车牌号前两位相同;3)车牌号是一个整数的平方。请编程查出肇事逃逸车辆的车牌号。输入数据类型、格式和内容限制和输出数据的说明1)数据类型:整型;2)内容限制:前两位相同,后两位相同,整数的平方;3 )输出数据:四位整数主要模块的算法描述本算法的思路描述:前两位,后两位相同,则前两位用i表示,后两位用均表示,用k是100以内的两位整数,I表示这个四位数,用循环语句依次判断结果适合公式:k*k=l=1OOO*i+1OO*i+1O*j+j,即为肇事车牌号!程序流程图开始图8肇事逃逸调试过程及实验结果实验中所遇到的困难是:书写代码时,定义四位车牌号为I,由于字母i

10、与数字1比较像,结果导致混淆。3 C:U5ers5q2 5DesDebug4-ese肇事逃逸车辆的车牌号內咖也Press: an5/ ley to continue图9肇事逃逸2.5礼炮:题目内容的描述鸣放礼炮起源于英国。据说400多年前英国海军用的是火炮。当战舰进入友好国家 的港口之前,或在公海上与友好国家的舰船相遇时,为了表示没有敌意,便把船上大炮内的炮弹统统放掉,对方的海岸炮舰船也同样做以表示回报。这种做法以后就逐渐成为互致敬意的一种礼仪。由于当时最大的战舰装有大炮21门,所以鸣炮21响就成了一种最高礼节。有四艘战舰ABCD开始鸣放礼炮各21响,已知A战舰每隔5秒放一次,B战舰每隔 6秒

11、放一次,C战舰每隔7秒放一次,D战舰每隔8秒放一次假设各炮手对时间掌握非常准 确,请问观众共可以听到几次礼炮声?输入数据类型、格式和内容限制和输出数据的说明主要模块的算法描述本算法的思路过程:根据条件“A战舰每隔5秒放一次,B战舰每隔6秒放一次,C战舰每隔7秒放一次,D战舰每隔8秒放一次”确定可能性!依次判断,累计听到的次数,得出 结果!程序流程图as緯+土o寸7一030389lhv_)0303ohh8%_Kn0CXIX0303。寸UVD0303os8%_)-oUE%_)Kn(00x0303OCXILUV 一 )0303or8%)-ohe%)-or9%)KnOOUVD0303ohh8%d-(O

12、UE%_)-OUU9%_)-OS9%_)+-5Press上记占 to con t inue图11礼炮2.6汽车加油题目内容的描述一辆汽车加满油后可行驶 n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。 输入:第一行有2个正整数N和K(1 = N =100,1 = K = 100),表示汽车加满油后可行驶N公里,且旅途中有 K个加油站。接下来的1行中,有K+1个整数,表示第K个加油站与第K-1个加油站之间的距离。 第0个加油 站表示出发地,汽车已加满油。第K+1个整数表示第 K个加油站与目的地的距离。输出:将编程计算出的最少加油次数输出。如果无法到

13、达目的地,则输出No Solution 。(注意:No和Solution 之间有一个空格)。例如:输入:8 83 2 3 6 5 4 2 7 2输出:5输入数据类型、格式和内容限制和输出数据的说明1)数据类型:数组类型;2)内容限制:键入数据:3)用到的主要语句:循环条件判断;4)输出数据:加油次数(整型)主要模块的算法描述本算法的语言描述是:按题目要求输入数据;首先判断可行驶的路程是否足够汽车到达加油站;如果不能到达,则需要加油,在此处记录一次并循环;得出累计加油次数之和算得出结果。程序流程图图12礼炮调试过程及实验结果实验中所遇到的困难是:循环条件判断错误。图13礼炮2.7大优惠题目内容的

14、描述中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?输入的测试数据为一行,实例包括2个整数M, K( 2 = K = M = 1000)。输出一个整数,表示M元可以用的天数。10 10 1150 20 52输入数据类型、格式和内容限制和输出数据的说明整型,算法的应用,内容数字的限定;主要模块的算法描述程序流程图开始-简要的语言描述思考数据间的关系;分析K与天数的关系; 按M值递减的方式运算;调试过程及实验结果实验中所遇到的困难是:没有注意到题目中给定的限制范围。注意大小写Please input M a

15、nd KC2=K=MLB 10可用天数11Press 讽ny kuy to continuePle-ase input M nd K 2=K=I1 5S 26 回用天数5?Press anp Jtep to continue图152.8金币题目内容的描述国王用金币奖励他忠诚的侍从。第一天侍从工作结束后,国王奖励了他 一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励 了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一 天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第 九天,第十天)的每一天,国王奖励了他四个金币。这种奖励的模式将是固 定不变的,

16、即在 N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他 N+1个金币。要求在给定的天数时,你的程序能够统计国王总共奖励了侍从多少金币。输入数据类型、格式和内容限制和输出数据的说明整型,算法的应用,内容数字的限定;主要模块的算法描述-以程序流程图的方式给出。图16-简要的语言描述思考数据间的关系;分析天数与获得金币的关系(类金字塔);进行总求和;调试过程及实验结果实验中所遇到的困难是:循环条件的出口判断不明确;求和处理不简约;三、课程设计分析与总结由于上学期在语言的学习方面还有很多不足之处,因此,这次课程设计显得特别吃力,很多不足都暴露了出来。 不过

17、最终还是基本完成了此次课程设计的内容。在各个实验中解决问题的基本流程是:分析问题T分析解决问题的基本流程T选择合适的算法语句T书写程序 T调试修改T按要求书写实验报告。在这些过程中,我认为分析问题的解决流程最为重要, 分析好解决流程之后, 就可以清楚的知道自己这一步要干什么,下一步要干什么,思路就显得十分清楚,按照这个流程解决问题是我感觉做得好的一面。不过也有很多不足,例如:好久没碰C语言了,for , while之类的循环语句的基本功能都模糊了,在选择运用时还要在 课本、网络上熟悉这些内容,还有一点就是自己对函数、模块化的思想掌握不够,按照实验要求需运用模块化的方式来解决问题,自己却很少使用

18、这种思想,这就是实验中的不足之处。总而言通过这次5天的课程设计我进一步了解 C程序设计语言的编程功能, 握C程序设计语 言的相关知识,体会到学以致用,并能将程序设计的知识与专业知识有效地结合,更全面系统地了解行业知识。众多不足之处我会课余时间进一步加固,力争将这门基础课真正的学好、用好,摆正思想,为以后的专业课的学习大好基础!最后感谢谢老师的一而再再而三的严格要求及耐心指导,感谢感谢同学们的帮助,谢谢你们!附录程序清单2.1掷骰子游戏: #in elude #in elude #in elude void mai n()int i,j,k,b, n, m,add1=0,add2=0;生成随机数

19、发生器srand( (unsigned)time( NULL ) ); /for(i=1; i11; i+)for(b=1;bj)add 1= add1+j;elseadd仁 add1+k;printf(第二个人第d次投出的数n”,i);m=ra nd()%6+1;prin tf(%dn,m); /ran d()产生随机数-12 -n=ra nd()%6+1;prin tf(%dn, n);if(n=6|m=6) add2=add2+8;if(n=m=5| n=m=4| n=m=3| n=m=2| n=m=1)add2=add2+7;elseif(nm)add2=add2+m;elseadd2

20、=add2+n;if(i=6)if(add1=2*add2|add2=2*add1)i=10;prin tf(”第一个人分值累加计分 dn,add1);prin tf(第二个人分值累加计数%dn,add2);if(add1add2)printf(第一个人胜利”);if(add2add1)printf(”第二个人胜利”);2.2射击游戏#in clude#in clude#in clude void mai n()in t i,j,n ,t,m;long int k;prin tf(*Welcome*)prin tf(nGame Begi n:n ”); sran d( un sig ned)t

21、ime(NULL);n=ra nd()%80+1;for(i=0;i n;i+)printf(” );prin tf(%c n ,1);for(m=0;m0;j-)system(cls);for(i=0;i80;i+)if(i=n) pri ntf(%c,1); else printf(” );for(i=1;ij;i+)prin tf(n);for(k=0;k80;k+)if(k=t) pri ntf(*);else printf(” );for(k=0;k100000;k+);if(t=n)prin tf(Your Winn ern); break;if(m=4)prin tf(You L

22、osen);2.3计算存款本息之和#i nclude void mai n()float m,n,PI;定义 m存款本金,n存款年限,prin tf(Please in put the prin cipal:);scan f(%f, &m);prin tf(Please in put the years:);scan f(%f, &n);if(n=1)PI=m*(1+0.03*1);else if(n=3)PI=m*(1+0.425*3);else if(n=5)PI=m*(1+0.475*5);prin tf(You save:%fn,PI);#i nclude#in clude main

23、()float i,save,total,profit,term;while(1)prin tf(total=);scan f(%f, &total);if(total=0)break;prin tf(Please in put the prin cipal:);scan f(%f, &save);prin tf(Please in put the years:);scan f(%f, &term);if(term=5)for(i=1;i=30;i=i+term)save=0.0475*save*term+save;prin tf(You save:%fn,save);else if(term

24、=3)for(i=1;i=30;i=i+term)save=0.0425*save*term+save;prin tf(You save:%fn,save);elsefor(i=1;i=30;i=i+term)save=0.03*save*term+save;printf(You save:%fn,save);2.4肇事逃逸#in clude#in cludemain ()int i,j,k,c;for(i=0;i=9;i+)for(j=0;j=9;j+)c=1000*i+100*i+10*j+j;for(k=1;k=(c/2);k+)if(k*k)=c):%dn,c);prin tf(肇事逃

25、逸车辆的车牌号为2.5礼炮#in clude#in cludemain ()int i,j=1;for(i=1;i=168;i+)if(i=100)if(i%5=0)|(i%6=0)|(i%7=0)|(i%8=0) j=j+1;else if(i100)if(i%6=0)|(i%7=0)|(i%8=0) j=j+1;else if(i120)if(i%7=0)|(i%8=0) j=j+1;elseif(i%8=0) j=j+1;prin tf(%dn,j);2.6汽车加油#in cludevoid mai n()表示第几个加油站;j为第K个加油站与第 K-1个int K,N,i,j,i999,x=0,y=0; /i加油站 直接的距离;x表示总距离;*/printf(”输入 N K:);scan f(%d%d,&N,&K);for(i=0;i=K;i+)scan f(%d,&j);li=j;for(i=0;i=K;i+)if(Nli)prin tf(No Solutio n.n); break;elsex=x+li;if(Nx)y+;x=li;if(i=K)%dn,y);printf( 输出最少加油次数:2.7大优惠#in cludemain ()int M,K,i=O;

温馨提示

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

评论

0/150

提交评论