/*--------------------------------------------------
--------------------------------------------------*/
#include<stdio.h>
#include<string.h>
#define N 8 /*运动员人数*/
#define M 5 /*评委人数*/
void main()
{
int num[N],i,j,t; /*定义编号组数,循环控制变量,中间变量*/
char name[N][10],str[10]; /*定义姓名数组,每个运动员姓名不超过10个字符*/
float score[N][M],max,min,sum[N]={0},ave[N],k; /*定义成绩数组,用于存放评委对每位选手的打分,定义最高分,最低分,总分,平均分,中间变量*/
printf("\n");
for(i=0;i<N;i++)
{
printf("共有8名选手。请输入第%d位选手编号和姓名:",i+1);
scanf("%d%s",&num[i],&name[i]);
printf("请5位评委为该运动员打分:");
for(j=0;j<M;j++)
{
scanf("%f",&score[i][j]);
sum[i]+=score[i][j]; /*计算每位运动员的总分*/
}
}
printf("\n***********选手得分情况**********\n");
printf("编号\t姓名\t评委给出的分数\n");
for(i=0;i<N;i++)
{
printf("%d\t%s\t",num[i],name[i]);
for(j=0;j<M;j++)
printf("%5.lf",score[i][j]);
printf("\n\n");
}
for(i=0;i<N;i++) /*计算平均分,去掉最高分和最低分得出选手的平均分*/
{
max=min=score[i][0];
for(j=1;j<M;j++)
{
if(max<score[i][j]) max=score[i][j];
if(min>score[i][j]) min=score[i][j];
}
printf("%d号选手去掉最高分%.lf\t和最低分%.lf\t",num[i],max,min);
sum[i]=sum[i]-min-max;
ave[i]=sum[i]/(M-2);
printf("最后得分%.lf \n",ave[i]);
}
for(i=0;i<N-1;i++) /*采用比较顺序法对运动员的平均成绩进行升序排序*/
for(j=i+1;j<N;j++)
if(ave[i]<ave[j])
{ /*交换成绩、编号、姓名*/
k=ave[i];ave[i]=ave[j];ave[j]=k;
t=num[i];num[i]=num[j];num[j]=t;
strcpy(str,name[i]);strcpy(name[i],name[j]);strcpy(name[j],str);
}
printf("\n*************比赛结果************\n");
printf("名次\t编号\t姓名\t最后成绩\n");
for(i=0;i<N;i++) /*排序后输出*/
printf("第%d名\t%d\t%s\t%.lf\n",i+1,num[i],name[i],ave[i]);
printf("\n\n");
}
联系客服