试题描述
已知某大奖赛有n个选手参赛,m(m > 2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉一个最高分和一个最低分后,取平均分作为该选手的最后得分。要求编程实现:
(1)根据n个选手的最后得分,从高到低输出选手的得分名次表,以确定获奖名单。
(2)根据各选手的最后得分与各评委给该选手所评分数的差距,对每个评委评分的准确性和评分水准给出一个定量的评价,从高到低输出各评委得分的名次表。
评委得分 = (score[i]为该评委给第i个选手的评分,s[i]为第i个选手的最后得分)
输入
输入包含2 * n + 1行:
第一行是选手个数n和评委个数m(1 < n <= 40,2 < m <= 20)。
第二行是第1个选手的编号(int范围整数)。
第三行是m个评委依次对第1个选手给出的评分(float范围浮点数),每行m个评分,相邻两项之间用一个空格隔开。
……
第2 * n行是第n个选手的编号(int范围整数)。
第2 * n + 1行是m个评委依次对第n个选手给出的评分(float范围浮点数),每行m个评分,相邻两项之间用一个空格隔开。
输出
输出n + m行:
第一行到第n行是选手的得分名次表,每行均有三项(排名、得分、选手编号),相邻两项之间用一个空格隔开,得分输出要求小数点后必须保留3位有效数字(四舍五入),不足补零。
第n + 1行到第n + m行是评委的得分名次表,每行均有三项(排名、得分、评委编号),相邻两项之间用一个空格隔开,得分输出要求小数点后必须保留3位有效数字(四舍五入),不足补零。
输入示例
4 5
11
8.9 9.6 9.7 9.4 9
12
7.9 9.2 9.2 9.3 8.9
13
9.1 9.7 9.7 9.8 9.4
14
8.1 8.8 8.7 9.0 8.6
输出示例
1 9.600 13
2 9.333 11
3 9.100 12
4 8.700 14
1 9.841 2
2 9.804 3
3 9.791 4
4 9.776 5
5 9.252 1
数据范围
输入输出均为int范围的整数和float范围的浮点数
参考代码(qsort)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct megagame
{
float score;
int index;
float num[21];
}op[41],ra[21];
int cmp(const void *a,const void *b)
{
megagame A=*(megagame*)a;
megagame B=*(megagame*)b;
return A.score>B.score?-1:1;
}
int main()
{
int n,m;
float max,min;
float temp=0;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
{
scanf("%d",&op[i].index);
for(int j=0;j<m;j++)
scanf("%f",&op[i].num[j]);
}
for(int i=0;i<n;i++)
{
max=min=op[i].num[0];
for(int j=0;j<m;j++)
{
if(op[i].num[j]>max)
max=op[i].num[j];
if(op[i].num[j]<min)
min=op[i].num[j];
}
op[i].score=0;
for(int j=0;j<m;j++)
op[i].score+=(op[i].num[j]);
op[i].score-=(min+max);
(op[i].score)/=(m-2);
}
for(int j=0;j<m;j++)
{
temp=0;
for(int i=0;i<n;i++)
temp+=((op[i].num[j]-op[i].score)*(op[i].num[j]-op[i].score));
ra[j].score=10.0-sqrt(temp/n);
ra[j].index=j;
}
qsort(op,n,sizeof(op[0]),cmp);
qsort(ra,m,sizeof(ra[0]),cmp);
for(int i=0;i<n;i++)
printf("%d %.3f %d\n",i+1,op[i].score,op[i].index);
for(int i=0;i<m;i++)
printf("%d %.3f %d\n",i+1,ra[i].score,ra[i].index+1);
return 0;
}
Code language: PHP (php)
本文标题:大奖赛现场统分
本文链接:https://manwish.cn/article/%e5%a4%a7%e5%a5%96%e8%b5%9b%e7%8e%b0%e5%9c%ba%e7%bb%9f%e5%88%86.html