/*有十个选手参加歌唱比赛,十个裁判对每个选手的演唱进行打分,去掉一个最高分,
去掉一个最低分,剩下分数的平均值作为每位选手最后的成绩.
要求:
(1)采用结构体定义每个选手的参赛编号,姓名以及十个裁判打出的分数;
(2)从键盘输入每个选手的相关信息:参赛编号,姓名和十个得分;
(3)计算每位选手的最后得分,并按分数由高到低排序;
(4)查询功能:输入参赛选手的编号或姓名,便可输出该选手的得分以及排名;
以上功能采用菜单操作方式,即从键盘输入1到3这三个数,分别完成以上(2)到(4)的功能*/
#include<stdio。h>
#include〈〉
#include〈string。h>
#define N 10
#define M 10
struct compete{
ﻩchar num[10];//编号
char name[10];//姓名
float score[M];//得分
float aver;//最后得分
int no;//排名
}com[N];
void Input(){
int i,j;
for(i=0;i〈N;i++){
ﻩ printf(”第 %d 个选手的编号: ",i+1);
ﻩscanf(”%s",&com[i].num);
printf(”姓名: ");
ﻩﻩscanf(”%s”,&com[i].name);
for(j=0;j<M;j++){
ﻩﻩ printf(”第 %d 个裁判对该生打出的分数: ",j+1);
ﻩ ﻩdo{
ﻩﻩﻩﻩscanf("%f”,&com[i].score[j]);
ﻩ ﻩ}while(com[i]。score[j]<0);
ﻩ }
ﻩ}
ﻩreturn;
}
void scan(){
int i,j;
float max,min,sum;
compete temp;
ﻩfor(i=0;i<N;i++){
ﻩsum=0;min=com[i].score[0];max=0;
ﻩ for(j=0;j〈M;j++){
ﻩﻩ sum+=com[i].score[j];
ﻩﻩ if(max〈com[i].score[j])
ﻩﻩ ﻩmax=com[i].score[j];
ﻩ ﻩif(min〉com[i]。score[j])
ﻩmin=com[i].score[j];
}
ﻩprintf("max=%.2f\n",max);
ﻩ printf("min=%。2f\n”,min);
com[i]。aver=(sum-max-min)/(M—2);
ﻩ}
ﻩfor(i=0;i〈N-1;i++){
for(j=i+1;j<N;j++){
ﻩﻩif(com[i]。aver〈com[j]。aver){
ﻩ ﻩstrcpy(temp。num,com[i].num);
ﻩ ﻩ strcpy(com[i]。num,com[j]。num);
ﻩ strcpy(com[j].num,temp。num);
ﻩ strcpy(temp.name,com[i].name);
ﻩstrcpy(com[i].name,c
歌唱比赛计分 来自淘豆网m.daumloan.com转载请标明出处.