#define N 3 //選手數
#define M 5 //評委數
void main(void)
{
char name[N][10];//選手名稱
int max[N]={-1},min[N]={101},score[N][M],i,j,temp,sort[N];
float ave[N]={0};//平均分
for (i=0;i<N;i++)
{
printf("輸入第%d個選手名稱:",i+1);
scanf("%s",&name[i]);//輸入名稱
for(j=0;j<M;j++)
{
printf("輸入第%d位評委的分數(為0-100的正整數):",j+1);
scanf("%d",&score[i][j]);//依次輸入評分
if (score[i][j]<0||score[i][j]>100)
{//判斷輸入評分是否符合要求
do{
printf("輸出錯誤請重新輸入");
scanf("%d",&score[i][j]);
} while (score[i][j]<0||score[i][j]>100);
}
if (max[i]<score[i][j])max[i]=score[i][j];
if (min[i]>score[i][j])min[i]=score[i][j];
ave[i]+=score[i][j];//統計總分
sort[i]=i;//記錄選手序號
}
ave[i]=(ave[i]-max[i]-min[i])/3;//求去掉最高分和最低分後的平均分
}
for(i=0;i<N-1;i++)//利用選擇法排序按平均分高到低將選手所在序號在sort[]數組中的順序
for(j=i+1;j<N;j++)
if (ave[i]<ave[j])
{
temp=sort[i];
sort[i]=sort[j];
sort[j]=temp;
}
printf("No\t name \t avg \t max \t min \n");
for(i=0;i<N;i++)//依次輸出結果
printf("%2d\t%5s\t%6.2f\t%3d\t%3d\n",i+1,name[sort[i]],ave[sort[i]],max[sort[i]],min[sort[i]]);
}