C语言知识程序设计-课程规划设计报告.doc

上传人:一*** 文档编号:2738298 上传时间:2020-05-02 格式:DOC 页数:30 大小:445KB
返回 下载 相关 举报
C语言知识程序设计-课程规划设计报告.doc_第1页
第1页 / 共30页
C语言知识程序设计-课程规划设计报告.doc_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《C语言知识程序设计-课程规划设计报告.doc》由会员分享,可在线阅读,更多相关《C语言知识程序设计-课程规划设计报告.doc(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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通过一些有实际意义的程序设计,使学生体会到学以致用,并能将程序设计的知识 与专业知识有效地结合,更全面系统地了解行业知识。编写程序要求遵循如下基本要求:l模块化程序设计锯齿

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

4、法输出数值,执行条件判断输入结果,最后比较结果,判断胜利的一方。程序流程图 图1 掷骰子游戏2.1.4调试过程及实验结果编辑过程中遇到的困难有:编程思路正确,但是无法正确编写出程序和编程过程缺乏。 图2 掷骰子游戏2.2射击游戏2.2.1题目内容的描述 在程序运行时屏幕上方第一行随机出现一个 符号,要求游戏者输入一个1-80之间的整数,当用户输入一个整数后,一个*立即从屏幕底端的该整数列向上移动,若移动到屏幕的顶端能撞上 符号,则游戏者获胜;若没有撞上,则要求再输入一个整数,共允许输入5次,如果一直没有撞上,则认为游戏者输。 提示: 1)输入 符号可以采用printf(%c,1) 2)显示*号

5、向上移动:输出一些空行;输出*号;以循环的方式增加延时(for(i=0;i100000;i+););clrscr()清屏重新绘制*号。2.2.2输入数据类型、格式和内容限制和输出数据的说明System(“cls”);清楚屏幕,2.2.3主要模块的算法描述 本算法的思路过程:首先清楚屏幕,然后循环每行输出* ,依次循环,判断是否击中目标,最后 5次输入结束,或者击中目标结束。程序流程图 图3 射击游戏2.2.4调试过程及实验结果该程序在调试过程中出现的问题是:该题中大体循环是以次数,还是循环的结果作为判断,弄不清楚 图4 射击游戏2.3计算存款本息之和: *2.3.1题目内容描述 以“存款利率”

6、为关键字上网搜索目前我国整存整取不同期限我国的银行存款利率,只计算一年(3%)、三年(4.25%)和五年(4.75%)三种期限。 问题: 1) 要求输入存钱的本金和期限,求到期能从银行得到的利息与本金合计。 2)假设存款期限为三十年本金为10万,比较一年、三年和五年滚存三十年后的本息金额。 261036.844 332020.963 359146.175 *2.3.2输入数据类型、格式和内容限制和输出数据的说明1)数据类型:长整型;2)内容限制:键入本金与年限;3)输出数据:本息和PI 2.3.3主要模块的算法描述本算法的语言描述:输入限定之内的年份与存款金额,选择对应的年利率计算本息和程序流

7、程图开始初始化i,j,k,n,m=0,x=0输入存期i,本金j,滚利年限k,利率nm=m+i*j*k,x=x+ixm是 结束否 图5 计算存款本息之和2.3.4调试过程及实验结果 图6 计算存款本息之和 图7 计算存款本息之和2.4肇事逃逸2.4.1题目内容的描述某部闽DT的出租车交通肇事逃逸,现场无人看清后面的四位数字,但三位目击群众提供信息如下:1) 车牌号后两位相同; 2) 车牌号前两位相同; 3) 车牌号是一个整数的平方。请编程查出肇事逃逸车辆的车牌号。2.4.2输入数据类型、格式和内容限制和输出数据的说明 1)数据类型:整型;2)内容限制:前两位相同,后两位相同,整数的平方; 3)输

8、出数据:四位整数2.4.3主要模块的算法描述本算法的思路描述:前两位,后两位相同,则前两位用i表示,后两位用均表示,用k是100以内的两位整数,l表示这个四位数,用循环语句依次判断结果适合公式:k*k=l=1000*i+100*i+10*j+j,即为肇事车牌号!程序流程图输出结果PIPI=m*(1+0.475*5);I=5PI=m*(1+0.425*3);I=3PI=m*(1+0.03*1);I=1输入本金吗,存款年限你,本息和PI开始否是否是是结束 图8 肇事逃逸2.4.4调试过程及实验结果实验中所遇到的困难是:书写代码时,定义四位车牌号为l,由于字母i与数字1比较像,结果导致混淆。 图9

9、肇事逃逸 2.5礼炮:2.5.1题目内容的描述 鸣放礼炮起源于英国。据说400多年前英国海军用的是火炮。当战舰进入友好国家的港口之前,或在公海上与友好国家的舰船相遇时,为了表示没有敌意,便把船上大炮内的炮弹统统放掉,对方的海岸炮舰船也同样做以表示回报。这种做法以后就逐渐成为互致敬意的一种礼仪。由于当时最大的战舰装有大炮21门,所以鸣炮21响就成了一种最高礼节。有四艘战舰ABCD开始鸣放礼炮各21响,已知A战舰每隔5秒放一次,B战舰每隔6秒放一次, C战舰每隔7秒放一次, D战舰每隔8秒放一次.假设各炮手对时间掌握非常准确,请问观众共可以听到几次礼炮声?2.5.2输入数据类型、格式和内容限制和输

10、出数据的说明2.5.3主要模块的算法描述 本算法的思路过程:根据条件“A战舰每隔5秒放一次,B 战舰每隔6秒放一次, C战舰每隔7秒放一次, D战舰每隔8秒放一次”确定可能性!依次判断,累计听到的次数,得出结果!程序流程图I+i+;j+结束输出ji%8=0&(i140)(i%7=0)|(i%8=0)& (i120)(i%6=0)|(i%7=0)|(i%8=0)&( i100)(i%5=0)|(i%6=0)|(i%7=0)|(i%8=0)& (i=100)I=168初始化i=1,j=0开始否是是否是否是否是 图10 礼炮2.5.4调试过程及实验结果程序在调试过程中出现的问题是:编码时要注意“|”

11、,“&” 图11 礼炮2.6汽车加油*2.6.1题目内容的描述一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。输入:第一行有2 个正整数N和K(1 = N = 100,1 = K = 100),表示汽车加满油后可行驶N公里,且旅途中有K个加油站。接下来的1 行中,有K+1 个整数,表示第K个加油站与第K-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第K+1 个整数表示第K个加油站与目的地的距离。输出:将编程计算出的最少加油次数输出。如果无法到达目的地,则输出 No Solution。(注意:No和Solu

12、tion之间有一个空格)。例如:输入:8 83 2 3 6 5 4 2 7 2输出:52.6.2输入数据类型、格式和内容限制和输出数据的说明1) 数据类型:数组类型;2) 内容限制:键入数据:3) 用到的主要语句:循环条件判断;4) 输出数据:加油次数(整型)2.6.3主要模块的算法描述本算法的语言描述是:按题目要求输入数据;首先判断可行驶的路程是否足够汽车到达加油站;如果不能到达,则需要加油,在此处记录一次并循环;得出累计加油次数之和算得出结果。程序流程图 开始初始化:汽车加满油后可行驶N公里,且旅途中有K个加油站输入K个加油站距离YES是否到达终点?记录加油次数NOYES汽车是否需要加油?

13、NO输出加油次数结束 图12 礼炮*2.6.4调试过程及实验结果实验中所遇到的困难是:循环条件判断错误。 图13 礼炮2.7大优惠2.7.1题目内容的描述中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?输入的测试数据为一行,实例包括2个整数M, K(2 = K = M 0M,K, i=0(2=K=M=1000)开始否是i+;M=M-1;i%K=0否 图14简要的语言描述思考数据间的关系;分析K与天数的关系; 按M值递减的方式运算;2.7.4调试过程及实验结果实验中所遇到的困难是: 没有注意到题目中给定的

14、限制范围。注意大小写 图152.8金币 2.8.1题目内容的描述 国王用金币奖励他忠诚的侍从。第一天侍从工作结束后,国王奖励了他一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第九天,第十天)的每一天,国王奖励了他四个金币。这种奖励的模式将是固定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他N+1个金币。 要求在给定的天数时,你的程序能够统计国王总共奖励了侍从多少金币。2.8.2输入数据类

15、型、格式和内容限制和输出数据的说明 整型,算法的应用,内容数字的限定;2.8.3主要模块的算法描述以程序流程图的方式给出。开始初始化:i=1,j=1,s=0,m=0;输入工作天数day,m=m+i,s=s+1;s=day?j=i输出mi=day结束 图16简要的语言描述 思考数据间的关系; 分析天数与获得金币的关系(类金字塔); 进行总求和;2.8.4调试过程及实验结果实验中所遇到的困难是:循环条件的出口判断不明确;求和处理不简约;三、课程设计分析与总结由于上学期在语言的学习方面还有很多不足之处,因此,这次课程设计显得特别吃力,很多不足都暴露了出来。不过最终还是基本完成了此次课程设计的内容。在

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

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

18、生器 for(i=1; i11; i+) for(b=1;bj) add1=add1+j; else add1=add1+k; printf(第二个人第%d次投出的数n,i); m=rand()%6+1; printf(%dn,m); /rand()产生随机数 - 12 - n=rand()%6+1; printf(%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; else if(nm) add2=add2+m; else add2=add2+n; if(i=6) if(add1=2*

19、add2|add2=2*add1) i=10; printf(第一个人分值累加计分%dn,add1); printf(第二个人分值累加计数%dn,add2); if(add1add2) printf(第一个人胜利); if(add2add1) printf(第二个人胜利);2.2射击游戏#include #include #include void main() int i,j,n,t,m; long int k; printf(*Welcome*); printf(nGame Begin:n); srand(unsigned)time(NULL); n=rand()%80+1; for(i=

20、0;in;i+) printf( ); printf(%cn,1); for(m=0;m0;j-) system(cls); for(i=0;i80;i+) if(i=n) printf(%c,1); else printf( ); for(i=1;ij;i+) printf(n); for(k=0;k80;k+) if(k=t) printf(*); else printf( ); for(k=0;k100000;k+); if(t=n) printf(Your Winnern); break; if(m=4) printf(You Losen); 2.3计算存款本息之和#include v

21、oid main() float m,n,PI;/定义m存款本金,n存款年限,printf(Please input the principal:);scanf(%f,&m);printf(Please input the years:);scanf(%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);printf(You save:%fn,PI);2.3.2 #include#includemain()float i,save,total,profit,term

22、;while(1)printf(total=);scanf(%f,&total);if(total=0)break;printf(Please input the principal:);scanf(%f,&save);printf(Please input the years:);scanf(%f,&term);if(term=5)for(i=1;i=30;i=i+term)save=0.0475*save*term+save;printf(You save:%fn,save);else if(term=3)for(i=1;i=30;i=i+term)save=0.0425*save*ter

23、m+save;printf(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肇事逃逸#include#includemain()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)printf(肇事逃逸车辆的车牌号为:%dn,c);2.5礼炮#include#includemain()int i,j=1;for(i

24、=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;printf(%dn,j);2.6汽车加油#includevoid main()int K,N,i,j,i999,x=0,y=0; /i表示第几个加油站;j为第K个加油站与第K-1个加油站 直接的距离;x表示总距离;*/ printf(输入N K:); scanf(%d%d

25、,&N,&K); for(i=0;i=K;i+) scanf(%d,&j); li=j; for(i=0;i=K;i+) if(Nli) printf(No Solution.n); break; else x=x+li; if(Nx) y+; x=li; if(i=K) printf(输出最少加油次数:%dn,y); 2.7大优惠#includemain()int M,K,i=0;printf(Please input M and Kn(2=K=M=1000)n);scanf(%d%d,&M,&K);if(2=K=M0)i+;M=M-1;if(i%K=0) M=M+1; printf(可用天

26、数%dn,i); else printf(Input is error); 2.8金币#include#includemain()int i,j,money=0,sum=0,days;printf(please input days=);scanf(%d,&days);for(i=1;i=days;i+)for(j=1;j=i;j+)money=money+i;sum=sum+1;if(sum=days) printf(%dn,money);break;设计日志2014年6月23日好久没碰C语言了,for, while之类的循环语句的基本功能都模糊了,在选择运用时还要看一下课本,写的代码有很多

27、小细节有缺漏,调试修改了几遍,重新熟悉了C语言。2014年6月24日在经过一天的补缺补漏之后,第二天的C语言课程设计终于开始得心应手了,但是,有一道难题难住了我,在和同学的讨论之下,终于攻克了难关。完成这道难题的成就感缓解了我一整天暴躁的情绪。C语言的灵活多变,只有更深入的了解她,才能把问题了解的清楚,明白,透彻。2014年6月25日在画流程图,发现他好难画啊,即使画完了,线条也不流畅。还是在画图工具上画,没法修改了。但是已经画了,希望老师不要扣我的分啊。2014年6月26日已经是倒数第二天,上交报告的时间越来越紧迫。题目虽然做完了,报告还在等着我,加油!不过,这个流程图到底是关于思路还是关于代码的,都可以吧。2014年6月27日经过几天的实践,认识到,写好程序部署懂语法,会调用函数就可以了,在会做的基础上,能够用更简单,简洁的方法来完成它,就是更进一步的提高。(注:指导教师评语和成绩所在表格另起一页)指导教师评 语课程设计成 绩指导教师签字 年 月 日2.1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com