1、 C 语言课程实习报告语言课程实习报告 课程名称:课程名称: 歌星大奖赛歌星大奖赛 学学 院:院: 信息工程学院信息工程学院 专专 业:业: 通信工程通信工程 班班 级:级: 学学 号号: : 姓姓 名:名: 指导老师:指导老师: 第一部分:课程设计编号、名称、内容第一部分:课程设计编号、名称、内容 名称:歌星大奖赛名称:歌星大奖赛 内容:内容: 【要求】【要求】 (1) 在歌星大奖赛中,有十个评委为参赛的选手打分,分数为 1100 分。选手 最后得分为:去掉一个最高分和一个最低分后其余 8 个分数的平均植。请 编写一个程序实现。 (2) 同时对评委评分进行裁判,即在 10 个评委中找出最公平
2、(即评分最接近 平均分)和最不公平(即与平均分的差距最大)的评委。 【提示】【提示】 一、 需求分析需求分析 这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小 值的变量是如何赋值的。第二个要求为了考虑效率,要用到排序技术。 第二部分:程序总体设计思路第二部分:程序总体设计思路 由于 C 语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。 在编写本程序的过程中, 首先我借助购买的指导材料, 了解了一些目标程序运行的次序 与界面的操作方法,然后按照题目的具体要求进行思考和设计。 具体的设计思路如下: 程序的要求是根据十个评委对歌手的打分情况, 求出这个歌手的平
3、均成绩和最公平及最 不公平的裁判。首先,我先考虑到程序的数据输入,可以用 scanf 函数来解决,并将输入的 数据存放于数组中。 随后对存放在数组中的数据进行排序, 这步为执行找出最不公平的裁判 提高了效率, 只需将排好序的数组的首尾分值与平均值进行比较即可。 将排好序的数组中间 的八个数求平均值即为此歌手的成绩, 可见排序法可大大的简化程序。 接下来是最后一个任 务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的, 再将他前面的裁判与之比较, 找出前半部分的最公平的裁判, 再将之与后半部分的进行比较, 得出最终的最公平的裁判。 为了方便管理员更好的使用界面操作,
4、我还设置了每输入完一组 数据并得到结果后,或接着输入下组数据或按 0 跳出界面。 整个程序的设计思路到此结束。 第三部分:程序功能划分、图示及流程图第三部分:程序功能划分、图示及流程图 【功能模块划分及其流程图】【功能模块划分及其流程图】 本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将 程序划分为 6 个部分分别编写,程序主体功能将由这 6 6 个部分来完成。这 6 6 个部分依次是: 1.分数的输入部分; 2.对分数进行的排序部分; 3.计算平均值的部分; 4.找出最不公平裁判部分; 5.找出最公平裁判部分; 6.数据的输出部分 总体设计总体设计: 歌星大奖赛评
5、分系统歌星大奖赛评分系统 分数输入 分数排序 计算平均 分 找出最不 公平评委 找出最公平 评委 数据输出 系统功能模块图 程序流程 系统的执行应从功能菜单的选择开始, 依据用户的选择来进行后续的处理, 直到用户选 择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下: 开始 开 始 是 否 程 序 流 程 图 菜 单 选 择 分 数 输 入 分 数 排 序 去掉一个最高分, 去掉一个最低分 求 其 平 均 分 各 个 分 数 与 平 均 分 比 较 选出最不公平评委 选出最公平评委 数 据 输 出 继 续 结 束 第四部分:程序设计数据、运行结果第四部分:程序设计数据、运行
6、结果 本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在 通过一个程序的运用事例来对数据设计、程序运行结果进行演示与实现: 【软件运用举例】 程序开始界面如下: 管 理 员 输 入 评 委 对 任 意 歌 手 的 打 分 , 输 入 完 毕 后 程 序 如 下 菜 单 界 面 : 管理员输入评委对任意歌手的打分,当输入有误后程序如下菜单界面: 此程序显示了裁判对歌手的平均分数, 以及根据裁判们打分与平均分数间的 差距判断出的最公平和最不公平裁判的位置及打分! 当出现最高分的裁判和最低分的裁判各不止一个时, 输入数据后程序界面的 运行如下: 第五部分第五部分:程序改进思路:程序改进思路 【针对第一点:程序算法精简问题】【针对第一点:程序算法精简问题】 改进思路: . 算法上除了采用结构体数组外,考虑在程序的算法设计上引入排序法,考察这样对数据 组织运算效率上是具有提高作用的。 . 就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。C 语 言知识博大精深,