2023年C语言课程设计报告—歌星大奖赛评分系统

上传人:m**** 文档编号:578456558 上传时间:2024-08-24 格式:PDF 页数:15 大小:565.08KB
返回 下载 相关 举报
2023年C语言课程设计报告—歌星大奖赛评分系统_第1页
第1页 / 共15页
2023年C语言课程设计报告—歌星大奖赛评分系统_第2页
第2页 / 共15页
2023年C语言课程设计报告—歌星大奖赛评分系统_第3页
第3页 / 共15页
2023年C语言课程设计报告—歌星大奖赛评分系统_第4页
第4页 / 共15页
2023年C语言课程设计报告—歌星大奖赛评分系统_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《2023年C语言课程设计报告—歌星大奖赛评分系统》由会员分享,可在线阅读,更多相关《2023年C语言课程设计报告—歌星大奖赛评分系统(15页珍藏版)》请在金锄头文库上搜索。

1、 C语言课程实习报告 课程名称: 歌星大奖赛 学 院: 信息工程学院 专 业: 通信工程 班 级: 学 号: 姓 名: 指导老师: 第一部分:课程设计编号、名称、内容 名称:歌星大奖赛 内容: 【要求】 (1) 在歌星大奖赛中, 有十个评委为参赛的选手打分, 分数为 1100分。选手最后得分为: 去掉一个最高分和一个最低分后其余8 个分数的平均植。 请编写一个程序实现。 (2) 同时对评委评分进行裁判,即在10 个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。 【提示】 一、 需求分析 这个问题的第一个要求算法比较简单, 但是要注意在程序中判断最大、 最小值的

2、变量是如何赋值的。第二个要求为了考虑效率,要用到排序技术。 第二部分:程序总体设计思路 由于 C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。 在编写本程序的过程中, 首先我借助购买的指导材料, 了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。 具体的设计思路如下: 程序的要求是根据十个评委对歌手的打分情况, 求出这个歌手的平均成绩和最公平及最不公平的裁判。首先,我先考虑到程序的数据输入,可以用 scanf 函数来解决,并将输入的一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单

3、但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和数据存放于数组中。 随后对存放在数组中的数据进行排序, 这步为执行找出最不公平的裁判提高了效率, 只需将排好序的数组的首尾分值与平均值进行比较即可。 将排好序的数组中间的八个数求平均值即为此歌手的成绩, 可见排序法可大大的简化程序。 接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前面的裁判与之比较, 找出前半部分的最公平的裁判, 再将之与后

4、半部分的进行比较,得出最终的最公平的裁判。 为了方便管理员更好的使用界面操作, 我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按 0 跳出界面。 整个程序的设计思路到此结束。 第三部分:程序功能划分、图示及流程图 【功能模块划分及其流程图】 本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为 6 个部分分别编写,程序主体功能将由这 6 个部分来完成。这 6 个部分依次是: 1.分数的输入部分; 2. 对分数进行的排序部分; 3. 计算平均值的部分; 4. 找出最不公平裁判部分; 5. 找出最公平裁判部分; 6. 数据的输出部分 一个最高分和一个

5、最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 总体设计: 歌星大奖赛评分系统 分数输入 分数排序 计算平均分 找出最不公平评委 找出最公平评委 数据输出 系统功能模块图 程序流程 系统的执行应从功能菜单的选择开始, 依据用户的选择来进行后续的处理, 直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下: 开始 开 始 一个最

6、高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 是 否 程 序 流 程 图 菜 单 选 择 分 数 输 入 分 数 排 序 去掉一个最高分,去掉一个最低分 求 其 平 均 分 各 个 分 数 与 平 均 分 比 较 选出最不公平评委 选出最公平评委 数 据 输 出 继 续 结 束 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时

7、对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和第四部分:程序设计数据、运行结果 本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对数据设计、程序运行结果进行演示与实现: 【软件运用举例】 程序开始界面如下: 管 理 员 输 入 评 委 对 任 意 歌 手 的 打 分 , 输 入 完 毕 后 程 序 如 下 菜 单 界 面 :一个最高分和一个最低分后其

8、余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 管理员输入评委对任意歌手的打分,当输入有误后程序如下菜单界面: 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的

9、次序与界面的操作方法然后按照题目的具体要求进行思考和 此程序显示了裁判对歌手的平均分数, 以及根据裁判们打分与平均分数间的差距判断出的最公平和最不公平裁判的位置及打分! 当出现最高分的裁判和最低分的裁判各不止一个时, 输入数据后程序界面的运行如下: 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 一个最高分和一个最低分后其余个分数的平均植

10、请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 第五部分:程序改进思路 【针对第一点:程序算法精简问题】 改进思路: . 算法上除了采用结构体数组外,考虑在程序的算法设计上引入排序法,考察这样对数据组织运算效率上是具有提高作用的。 . 就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。C 语言知识博大精深,有必要对 C语言的专著进行研究学习,多阅读别人的程序

11、代码、多动手实践操作与设计,这样便对程序算法精简改进提供了可能。 【针对第二点:用户输入错误问题】 改进思路: 对每个数据输入段代码进行更深的研究与分析,明确变量的类型、可能的数值,然后进行分类判断(if 或 switch语句) ,必要时借助 for 循环语句来控制程序进行,保障各模块运行相对独立,稳定准确执行各自功能。典型方法是如果输入数据错误,通过 printf输出问题,并用 for 或(do)while构成循环,直到用户输入正确为止。此功能本因在程序中得以体现,但因对 C语言编程掌握的不够全面和深入,加上时间不太充分,此程序中没有体现出来,是我编程工作中的失误,再以后还需加深学习并改进!

12、 【针对第三点:程序功能完善问题】 改进思路: 管理员对运动员的成绩输入设计思路:将裁判的评给分数全部读入,并且全部进行简单的排序,通过去掉排序后首尾最高和最低分,求出相应的歌手的平均成绩,再将平均值与每个裁判的打分进行比较, 与平均值差值最大的定位此次打分中最不公平的裁判, 与平均值差值最小的定为此次打分中最公平的裁判! 第七部分:附录(原程序) #include #include 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我

13、借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和#include #include struct test int num; float s; ; void main() int i,j,k,bad,good; float ts,m,sum=0,aver=0,tm10; double min; struct test score10,*Judge10,*temp; do sum=0; aver=0; printf(请选择: 继续请按 1, 退出请按 2n); scanf(%f,&m); if(m=2) exit(0); for(i=0;i100|s

14、corei.s1) printf(分数在 1-100 之间, 请重新输入n); scanf(%f,&scorei.s); continue; if(score0.s=0) break; for(i=0;i10;i+) tmi=scorei.s; for(i=0;i10;i+) Judgei=&scorei; for(i=0;i9;i+) k=i; for(j=i+1;j10;j+) if(tmktmj) 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术

15、第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 k=j; if(k!=i) ts=tmi; tmi=tmk; tmk=ts; temp=Judgei; Judgei=Judgek; Judgek=temp; /*对输入分值进行排序*/ for(i=1;is; aver=sum/8; /*计算平均值的部分*/ printf(n-n); printf(该选手的平均分为:%.3fn,aver); printf(-n); (fabs(Judge0-s-aver)fabs(Judge9-s-aver)?(bad=0):(bad=9);/

16、*通过绝对差值判断与平均值相差最大的裁判*/ min=fabs(Judge5-s-aver); good=5; /*暂定第六个为最公平裁判*/ for(i=4;i0;i-) 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和 if(fabs(Judgei-s-aver)s-aver); good=i; else break; /*用拆半法先将

17、前半部分与 min 比较*/ for(i=6;is-aver)s-aver); good=i; else break; /*用拆半法先将后半部分与 min 比较*/ printf(最不公平评委: 第%d 位评委 他的打分: %.3fn, Judgebad-num,Judgebad-s); /* 打印出最不公平裁判和其分数*/ 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方

18、法然后按照题目的具体要求进行思考和 printf(最 公 平 评 委 :第 %d位 评 委 他 的 打分: %.3fn,Judgegood-num,Judgegood-s); /* 打印出最公平裁判和其分数*/ printf(n-n); printf(请下一位选手上场:n); /* 打印出下一位*/ while(1); 一个最高分和一个最低分后其余个分数的平均植请编写一个程序实现同时对评委评分进行裁判即在个评委中找出最公简单但是要注意在程序中判断最大最小值的变量是如何赋值的第二个要求为了考虑效率要用到排序技术第二部分程序中首先我借助购买的指导材料了解了一些目标程序运行的次序与界面的操作方法然后按照题目的具体要求进行思考和

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号