一道运动员排名的题,写了几天没写出来,希望大神可以帮帮忙看一下~
某体操比赛共有12名运动员参加,10名评委根据运动表现进行评分(满分10分),请编写Python程序,解决下列问题:
1.每个运动员评分中去掉一个最高分和一个最低分,计算平均成绩,然后给出运动员排名。
2.尽量减少人为因素,组委会要求去掉第一个问题中去掉次数排名前三的评委给每个运动员的评分,然后计算平均成绩后排名。
#include<stdio.h>
struct player
{
float socre[10];
float sum;
float avg;
int num;
}pl[12];
FILE *fp;
void question1()
{
int i,j,minn;
float max,min,temp;
fp=fopen("defen.txt","r");
if((fp=fopen("defen.txt","r"))==NULL)
printf("Can not open the file.\n");
else
{
for(i=0;i<12;i++)
{
for(j=0;j<10;j++)
{
fscanf(fp,"%f",&pl[i].socre[j]);
}
}
}
fclose(fp);
for(i=0;i<12;i++)
{
for(j=1;j<10;j++)
{
max=pl[i].socre[0];
if(pl[i].socre[j] > max)
max=pl[i].socre[j];
}
pl[i].sum-=max;
}
for(i=0;i<12;i++)
{
for(j=1;j<10;j++)
{
min=pl[i].socre[0];
if(pl[i].socre[j]<min)
min=pl[i].socre[j];
}
pl[i].sum-=min;
}
for(i=0;i<12;i++)
{
pl[i].avg=pl[i].sum/8;
}
for(i=0;i<12;i++)
{
minn=i;
for(j=1;j<12;j++)
{
if(pl[j].avg<pl[minn].avg)
minn=j;
}
if(i != minn)
{
temp=pl[minn].avg;
pl[minn].avg=pl[i].avg;
pl[i].avg=temp;
}
}
for(i=0;i<12;i++)
{
printf("%.2f",pl[i].avg);
}
printf("\n");
}
这是我自己写的第一问的程序,编译没问题但是一运行就终止了不知道怎么回事;最后要求输出运动员的排名,不知道该怎么把平均分和运动员对应起来。另外第二问该怎么判断评委给出最高分和最低分次数哇?