《C语言程序设计》课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言程序设计》课程设计
刘力斌
一、意义和目的
C语言是光信息科学与技术专业的重要专业基础课。在很多后续课程中,都要使用到C语言。
学生通过对C语言的学习,已经具备了使用C语言编写简单的应用程序的能力。为了加强程序设计基础,开设课程设计课,使学生对C语言有更全面的理解,进一步提高运用C语言编程解决实际问题的能力,同时,为后续课程的学习夯实基础。
课程设计目的:
提高用程序设计解决实际问题的能力。
通过提出算法、指定输入输出来设计一个解决方案。
用C语言合理地开发两个简洁有效的程序代码来实现该设计。
测试程序是否工作且满足设计指标并评价其效率。
二、目标
完成本课程设计的学生应能在以下几方面证明你们的能力:
A、分析问题。各种简单的与计算机有关的案例中所需要的输出结果,把大问题分解成小问题,使用自顶向下或类似设计方法给出模块化或计划。
B、提出算法执行特定任务。模块表示为算法,使用自顶向下或伪代码等设计手段将模块细化成更详细的成分,清楚地表明顺序、选择和重复等到控制结构。
C、把一个算法变为用C语言编写的结构化程序。
D、用合适的测试方法检查程序是否符合最初的要求,为不合适数据设计错误陷阱,并提供错误信息来帮助用户。
E、写出清晰的用户文档,确保用户或者通过遵循程序中的指示或者使用程序设计者编写的文档能成功地运行程序。
F、写出技术文档,对程序中主要标示符的含义或作用加以说明,并提供一个完整的程序流程图。
G、调试程序、测试数据过程成功。
三、要求
参加本课程设计的学生,应当认真完成本课程设计的全部过程。并以最终课程设计成果来证明其独立完成各种实际任务的能力。从而,反映出理解和运用本课程知识的水平和能力。
完成课程设计应提交如下文档:
①程序的总体设计和算法分析。
②技术文档
③用户文档
④源程序代码清单。
⑤测试数据和测试过程记录。
⑥遇到的问题及解决方法分析。
四、选题
每人一个题,具体题目可以参考附录。
第一题:链表操作题(包括建立、插入、删除、打印等)(参考教材);
第二题:文件操作,具体题目最好是自拟。
如果选题确实有困难的同学,可参考后面参考题目来完成本课程设计(成绩要影响)。
五、评价
评价是检测学生理解问题和解决问题能力的一个重要手段,教师将根据学生提交的一套文件中,严格检查以下各项任务完成情况:
1、课程设计文档是否齐全。
2、程序的用户文档
如果在程序执行期间有足够的指导信息显示在屏幕上显示,这些用户文档可以是很简要的,也许只限于解释如何装入并运行程序。
3、问题或任务的陈述(描述问题,而且问题是合理原始的、应当包括输
入、输出及其预期范围。)是否正确。
4、问题的解决方案采取由顶向下设计的形式,在适当的地方使用伪代
码,把整个解决方案划分成若干模块。
5、程序完成后的代码应当加以注解。最少应清楚指出每一个模块。
6、用于检查程序的测试数据,或者对一个控制程序给出测试的例程。测
试应考虑探索通过程序的几条路径,在合适的地方选择打印输出来。
7、程序的技术文档
程序代码注解得好,文档也可以是简要的,但是必须包含所用变量的全体清单。
8、程序顺利执行,结果正确。
参考题目:
1、长整数四则运算字符型数组
【问题描述】设计任意两个长正整数(小于80位)的加法函数add()和乘法函数mult(),并求任意整数(≤58)的阶乘。
【实现提示】用无符号整型或字符型数组存储任意长整数。
【测试数据】
6!=720
9!=362880
19!=1216451004088320000
39!=20397882081197443358640281739902897356800000000
2、单词统计
【问题描述】统计某篇英文小说中某些单词的出现次数。
【实现提示】英文小说存储在一个文本文件中。待统计的词汇集合要一次输入完毕,即统计工作必须在程序的一次运行之后全部完成。输出的每个单词的出现次数。约定小说中的词汇一律不跨行,这样每从文本文件中读入一行,就统计每个单词在这行中出现的次数,直到文件结束。
要求在程序运行时才输入文本文件名和要统计的词汇。
【测试数据】
以C语言源程序模拟英文小说。统计某些保留字(如:if, else, for, while等)的出现次数。
3、保龄球计分
【问题描述】打保龄球是用一个滚球去撞击10个站立的瓶,将瓶击倒。一局分10 轮,每轮可滚球1 次或多次,以击到的瓶数为依据计分,一局得分为10轮得分之和,而每轮的得分不仅与本轮的滚球情况有关,还可能与后一轮或两轮的滚球情况有关,即:某轮某次滚球击倒的瓶数不仅要计入本轮得分,还可能会计入前一轮或两轮得分。计分规则如下:
①若某一轮的第一次滚球就击倒全部10个瓶,则本轮不再滚球(若是
第10轮还需加2次滚球),该轮得分为本次击倒瓶数10与以后2次
滚球所击倒瓶数之和。
②若某一轮的第一次滚球未击倒全部10个球,则对剩下未击倒的瓶再
滚球一次,如果这2次滚球击倒全部10个瓶,则本轮不再滚球(若
是第10轮还需加1次滚球),该轮得分为这2次击倒瓶数10与以后
1次滚球所击倒瓶数之和。
③若某一轮2次滚球未击倒全部10个瓶,则本轮不在滚球,该轮得分
为这2次滚球所击倒瓶数之和。
【实现提示】
①模拟10个人各打一局保龄球比赛过程,统计每局各轮得分和累计总分。
②逐人逐轮逐次输入一次滚球击倒的瓶数。
③对10人的得分由低到高排序并显示。
④最后,把排序的存入文件中。
【测试数据】
自定模拟数据
4、学生成绩统计
【问题描述】
学期考试结束,统计有N个班某班每个人的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。
【实现提示】
假设某班有:30人(姓名自定)
考试课程有:高等数学、物理、外语、C语言、德育5门课程。
将所有同学的成绩保留在文件中,对文件中的数据处理,输出所要求的内容,程序的功能主要包括3方面:
①输入成绩到文件中
②输出成绩
③输出不及格学生名单
④成绩排序
⑤修改记录
⑥删除记录
⑦插入记录等
主函数中对3个功能选择(菜单),调用对应的函数完成。
【测试数据】
自定模拟数据
5、README软件的制作
【问题描述】
在现代的一些软件中,常常有这样一个程序,它主要是显示某些软件的使用方法及注意事项。比如:TC2.0下README等。设计制作一个有自己特色的说明软件。
【实现提示】