C语言程序设计课程设计---设计比赛评分系统
21
兰州交通大学新能源与动力工程学院
课 程 设 计
课程名称 c语言课程设计
题目 评分系统设计
专业 电力工程与管理
班级 1101
学号
姓名 刘宝华
成绩
指导老师 胡建宏
2012年 06 月 27 日
课程设计任务书
设计题目:设计比赛评分系统(给分原则:满分为10分;裁判给出分数后,去掉一个最高分和一个最低分后的平均分为选手的最后得分(精确到小数点后两位)。)
设计目的;
巩固和加深课堂所学知识;
将课本上的理论知识和实际应用有机的结合起来,培养同学们分析和解决实际问题的能力;
学会编制结构清晰、风格良好、数据结构选择恰当的c语言程序;
设计任务 :
功能:
设参赛人数为24人,裁判人数为8位;
录入参赛人员的资料和得分情况,最后得分;
按最后得分结果从高分到低分排序;
公布一、二、三等奖的得奖选手名单;
此系统能够查询选手的得分情况。
具体要求:
题目:
设计目的:
设计内容:写出简要的程序功能描述、程序运行条件所需工具软件、输入输出描述等。
程序结构:函数定义说明;用到的库函数的功能说明、调用关系说明、参数传送方式说明等;主要算法描述等(各模块功能实现)。
设计要求:绘制设计系统的结构层次图,各功能实现的算法、会直接勾画流程图;程序流程图、源程序;设计输入、输出界面。
(1)程序结构设计特点;(2)设计、调试程序心得、体会或不足。
源程序
#include
#include
#include
struct test
{int num;
float s;
};
main()
{
int i,j,k,bad,good;
float ts,sum=0,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); /*分数的输入部分*/
if(data[0].s==0) printf(0);
}
for(i=0;i<10;i++) tm[i]=data[i].s;
for(i=0;i<10;i++) p[i]=&data[i];
for(i=0;i<9;i++)
{k=i;
for(j=i+1;j<10;j++)
if(tm[k]
k=j;
if(k!=i)
{ts=tm[i];tm[i]=tm[k];tm[k]=ts;
temp=p[i];p[i]=p[k];p[k]=temp;
} /*对输入分值进行排序*/
}
for(i=1;i<9;i++)
sum+=p[i]->s;
aver=sum/8; /*计算平均值的部分*/
printf("\n-----------------\n");
printf("The aver is:%.1f\n",aver);
printf("-----------------\n");
(fabs(p[0]->s-aver)>fabs(p[9]->s-aver))?(bad=0):(bad=9); /*通过绝对差值判断与平均值相差最大的裁判*/
double min=fabs(p[5]->s-aver);
good=5; /*暂定第六个为最公平裁判*/
for(i=4;i>0;i--)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将前半部分与min比较*/
for(i=6;i<9;i++)
{if((fabs(p[i]->s-aver))<=min)
{min=fabs(p[i]->s-aver); good=i; }
else break;
}
/*用拆半法先将后半部分与min比较*/
printf("The worst pingwei is %d and the sorce is %.1f\n",
p[bad]->num,p[bad]->s);