c语言设计歌星大奖赛
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c语言设计歌星大奖赛
2
C
学院: 环境学院
专业: 生物科学
班级: 043101
学号: 20101000179
姓名: 段勇
目录
第一部分:课程设计编号、名称、内容 ..
第二部分:程序总体设计思路 ..........
第三部分:程序功能划分、图示及流程图
第四部分:程序设计数据、运行结果 ....
第五部分:源程序 ....................
第六部分:总
结 ..................................................................... .............................
第一部分:课程设计编号、名称、内容编号:二十一题
名称:歌星大奖赛
内容:
【要求】
(1) 在歌星大奖赛中,有十个评委为参赛的选手打分,分数为1~100分。选手
最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均植。请
编写一个程序实现。
(2) 同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近
平均分)和最不公平(即与平均分的差距最大)的评委。
【提示】
一、需求分析
这个问题的第一个要求算法十分简单,但是要注意在程序中判断最大、最小值的变量是如何赋值的。第二个要求为了考虑效率,要用到排序技术。
第二部分:程序总体设计思路
由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
王老师给我安排的是21题的《歌星大奖赛》,在编写本程序的过程中,首先我借助购买的指导材料,了解了一些目标程序运行的次序与界面的操作方法,然后按照题目的具体要求进行思考和设计。
因为老师抽签给我的程序比较简单,再加上前期实习时王老师交给的一些C的思路和方法,我很快便将整个程序的设计思路整理清楚。具体的设计思路如下:
程序的要求是根据十个评委对歌手的打分情况,求出这个歌手的平均成绩和最公平及最不公平的裁判。首先,我先考虑到程序的数据输入,可以用scanf函数来解决,并将输入的数据存放于数组中。随后对存放在数组中的数据进行排序,这步为执行找出最不公平的裁判提高了效率,只需将排好序的数组的首尾分值与平均值进行比较即可。将排好序的数组中间的八个数求平均值即为此歌手的成绩,可见排序法可大大的简化程序。接下来是最后一个任务就是找最公平的裁判,此过程我使用拆半法,先将靠近中间的一个裁判假设为最公平的,再将他前
面的裁判与之比较,找出前半部分的最公平的裁判,再将之与后半部分的进行比较,得出最终的最公平的裁判。为了方便管理员更好的使用界面操作,我还设置了每输入完一组数据并得到结果后,或接着输入下组数据或按0跳出界面。
整个程序的设计思路到此结束
第三部分:程序功能划分、图示及流程图【功能模块划分及其流程图】
本程序功能模块根据程序设计的需求,综合程序的实用性、人性化、智能化的考虑,将程序划分为6个部分分别编写,程序主体功能将由这6个部分来完成。这6个部分依次是:
1.分数的输入部分;
2.对分数进行的排序部分;
3.计算平均值的部分;
4.找出最不公平裁判部分;
5.找出最公平裁判部分;
6.数据的输出部分
总体设计:
歌星大奖赛评分系统
找出最不找出最公平
分数输入分数排序计算平均数据输出
公平评委评委分
系统功能模块图
第四部分:程序设计数据、运行结果
本程序是一款应用软件,故数据设计、程序运行结果应在程序的运用中得以体现,现在通过一个程序的运用事例来对数据设计、程序运行结果进行演示与实现: 【软件运用举例】
李明通过朋友介绍想了解裁判对某歌手的评分情况,于是到俱乐部管理员面前说明了意向,裁判部管理员启动歌手大奖赛管理系统。
程序开始界面如下:
管理员管理员输入评委对任意歌手的打分,输入完毕后程序如下菜单界面:
管理员输入输入完毕后,按,Enter,健,程序运行界面如下:
此程序显示了裁判对歌手的平均分数,以及根据裁判们打分与平均分数间的差距判断出的最公平和最不公平裁判的位置及打分~
为了向李明验证程序的准确性及公平与不公平裁判出现在每个裁判上的几率,管理员又输入了几位歌手的打分
管理员输入输入完毕后,按,Enter,健,程序运行界面如下:
接着又输入一组数据后运行如下:
当出现最高分的裁判和最低分的裁判各不止一个时,输入数据后程序界面的运行如下:
第五部分:原程序
#include
#include
#include
struct test
{
int num;
float s;
};
void main()
{
int i,j,k,bad,good;
float ts,sum=0,min,aver=0,tm[10];
struct test data[10],*p[10],*temp;
do {
sum=0;aver=0;
printf("Input 10 sorces------input 0(exit)\n"); for(i=0;i<10;i++)
{data[i].num=i+1;
scanf("%f",&data[i].s);