




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言课程实习报告课程名称:歌星大奖赛学院:信息工程学院专业:1 A通信工程班级:学号:姓名:指导老师:第一部分:课程设计编号、名称、内容名称:歌星大奖赛要求】1)2)内容:在歌星大奖赛中,有十个评委为参赛的选手打分,分数为 1100 分。选手最后得分 为:去掉一个最高分和一个最低分后其余 8 个分数的平均植。请编写一个程序实现。 同时对评委评分进行裁判,即在 10 个评委中找出最公平(即评分最接近平均分) 和最不公平(即与平均分的差距最大)的评委。提示】一、 需求分析 这个问题的第一个要求算法比较简单,但是要注意在程序中判断最大、最小值的变量 是如何赋值的。第二个要求为了考虑效率,要用到排
2、序技术。第二部分:程序总体设计思路由于 C 语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。 在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方 法,然后按照题目的具体要求进行思考和设计。具体的设计思路如下:程序的要求是根据十个评委对歌手的打分情况,求岀这个歌手的平均成绩和最公平及最不公平的裁判。 首先,我先考虑到程序的数据输入,可以用seanf函数来解决,并将输入的数据存放于数组中。随后对存放在数组中的数据进行排序,这步为执行找岀最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与 平均值进行比较即可。将排好序的数组中间的八个
3、数求平均值即为此歌手的成绩,可见排序法可大大的简化 程序。接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为 最公平的,再将他前面的裁判与之比较,找岀前半部分的最公平的裁判,再将之与后半部分的进行比较,得 岀最终的最公平的裁判。为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,0跳岀界面。或接着输入下组数据或按整个程序的设计思路到此结束。第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为 部分分别编写,程序主体功能将由这6个部分来完成。
4、这 6个部分依次是:1. 分数的输入部分;2. 对分数进行的排序部分;3. 计算平均值的部分;4. 找出最不公平裁判部分;5. 找出最公平裁判部分;6. 数据的输出部分总体设计:歌星大奖赛评分系统分数输入分数排序计算平均找出最不找出最公平分公平评委评委数据输系统功能模块图程序流程系统的执行应从功能菜单的选择开始,依据用户的选择来进行后续的处理,直到用户 选择退出系统为止,其间应对用户的选择做出判断及异常处理。系统的流程图如下:开开始始菜单选 择第四部分:程序设计数据、运行结果本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的 运用事例来对数据设计、程序运
5、行结果进行演示与实现:【软件运用举例】程序开始界面如下:斎: XSSVTene 17Debuef eng 17- eze*j请选择趙续请按1退出请按2i请第1位评委打分90请第2位评委打疔91请第M位评委打分92请第4位评委打分93请笫呂位评委打分94请第6位评委打分W第?位评委打弁96请第0位评委打分97请第9位评委打分95请第10位评委打分99该选手的平均分为:¥4.5购曙Js簷骗费:退出请擬请第i位评委打分管理员输入评委对任意歌手的打分,当输入有误后程序如下菜单界面:此程序显示了裁判对歌手的平均分数,以及根据裁判们打分与平均分数间的差距判断 出的最公平和最不公平裁判的位置及打分
6、!当出现最高分的裁判和最低分的裁判各不止一个时,输入数据后程序界面的运行如 下:第五部分:程序改进思路>>改进思路:1.算法上除了采用结构体数组外,考虑在程序的算法设计上引入排序法,考察这样对数据组织运算效率上 是具有提高作用的。2 .就现有知识水平、经验来看,对我来说,本程序的算法设计上已经是最精简的了。C语言知识博大精深,有必要对C语言的专着进行研究学习,多阅读别人的程序代码、多动手实践操作与设计,这样便对程序 算法精简改进提供了可能。【针对第二点:用户输入错误问题】 >>改进思路:if对每个数据输入段代码进行更深的研究与分析,明确变量的类型、可能的数值,然后进行分
7、类判断( 或 switch 语句),必要时借助 for 循环语句来控制程序进行,保障各模块运行相对独立,稳定准确执行各 自功能。典型方法是如果输入数据错误,通过 printf 输出问题, 并用 for 或 (do)while 构成循环, 直到用户 输入正确为止。此功能本因在程序中得以体现,但因对C语言编程掌握的不够全面和深入,加上时间不太充分,此程序中没有体现出来,是我编程工作中的失误,再以后还需加深学习并改进!【针对第三点:程序功能完善问题】>>改进思路:管理员对运动员的成绩输入 设计思路:将裁判的评给分数全部读入,并且全部进行简单的排序,通过去 掉排序后首尾最高和最低分,求出相
8、应的歌手的平均成绩,再将平均值与每个裁判的打分进行比较,与平均 值差值最大的定位此次打分中最不公平的裁判,与平均值差值最小的定为此次打分中最公平的裁判!第七部分:附录(原程序)#include<stdio.h>#include <math.h>#include <conio.h>#include<stdlib.h>struct testint num;float s;void main()int i,j,k,bad,good;float ts,m,sum=0,aver=0,tm10;double min;struct test score10,*
9、Judge10,*temp;dosum=0;aver=0;printf(" 请选择:继续请按 1,退出请按 2n");scanf("%f",&m);if(m=2)exit(0);for(i=0;i<10;i+)printf("请第c位评委打分n",i+1);分数的输入部分 */scorei.num=i+1;scanf("%f",&scorei.s); /*if(scorei.s>100|scorei.s<1)printf(" 分数在1-100之间,请重新输入n"
10、);scanf("%f",&scorei.s);continue;if(score0.s=0)break;for(i=0;i<10;i+)tmi=scorei.s;for(i=0;i<10;i+)Judgei=&scorei;for(i=0;i<9;i+)k=i;for(j=i+1;j<10;j+)if(tmk<tmj)k=j;if(k!=i)ts=tmi;tmi=tmk;tmk=ts;temp=Judgei;Judgei=Judgek;Judgek=temp; /* 对输入分值进行排序 */for(i=1;i<9;i+)
11、sum+=Judgei->s;aver=sum/8; /* 计算平均值的部分 */printf("nprintf(" 该选手的平均分为 :%.3fn",aver);n");printf("(fabs(Judge0->s-aver)>fabs(Judge9->s-aver)(bad=0):(bad=9);/* 通过绝对差值判断与平均值相差最大的裁判 */min=fabs(Judge5->s-aver);good=5; /* 暂定第六个为最公平裁判 */for(i=4;i>0;i-)if(fabs(Judgei->s-aver)<=min)min=fabs(Judgei->s-aver);good=i;elsebreak; /* 用拆半法先将前半部分与 min 比较 */for(i=6;i<9;i+)if(fabs(Judgei->s-aver)<=min)min=fabs(Judgei->s-aver);good=i;elsebreak; /* 用拆半法先将后半部分与 min 比较 */printf("最不公平评委:第位评委 他的打分:%.3fn",Judgebad->num,Judgebad->
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年自治区科技厅直属事业单位引进考试真题
- 修缮采购协议合同范本
- 兼职辅导老师合同范例
- 新能源汽车动力蓄电池系统构造与检修 项目三-课后习题带答案
- 劳务分包用工合同范本
- 公司销售渠道合同范本
- 农民玉米出售合同范本
- 2024年杭州银行招聘考试真题
- 2024年江西省人才服务有限公司招聘笔试真题
- 企业雇佣货车合同范本
- (正式版)FZ∕T 80018-2024 服装 防静电性能要求及试验方法
- 北师大版八年级下册生物教案全册
- JGJ133-2001 金属与石材幕墙工程技术规范
- 稳定性冠心病诊断与治疗指南
- DL-T5704-2014火力发电厂热力设备及管道保温防腐施工质量验收规程
- (高清版)JGT 225-2020 预应力混凝土用金属波纹管
- JT-T-610-2004公路隧道火灾报警系统技术条件
- 初中英语比较级和最高级专项练习题含答案
- 鉴赏诗歌人物形象市公开课一等奖省赛课微课金奖课件
- 大坝安全监测系统验收规范
- 2024年南京铁道职业技术学院单招职业技能测试题库及答案解析
评论
0/150
提交评论