某学院举办技能大赛,5位评委分别给出选手得分(1-100,精确到小数点后2位),去掉其中的一个最高分和一个最低分后的3位评委给出的得分之和为该选手的总分。假设参赛选手共有10名,从键盘输入各选手的选手好,5位评委给出得分,然后依据上述要求计算选手的总分,并显示出各选手的号码,5位评委给出的得分和选手的总分。
代码如下
代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
#include <string.h>
struct Signer
{
char name; //编号
float score[5]; //成绩
float max; //最高分
float min; //最低分
float sum; //总分
//float avg; //平均分
};
int main()
{
Signer ss[10];
Signer tmp;
int i = 0,j = 0;
printf("请输入10名选手的名字\n" );
for ( i = 0; i < 10; i++)
{
gets(ss[i].name);
}
printf("请输入每个选手的成绩\n" );
for ( i = 0;i < 10; i++)
{
ss[i].sum = 0.0;
printf("%s:",ss[i].name);
for(j = 0; j < 5; j++)
{
scanf("%f", &ss[i].score[j]);
ss[i].sum += ss[i].score[j];
if (j == 0)
{
ss[i].max = ss[i].score[0];
ss[i].min = ss[i].score[0];
}else
{
if(ss[i].score[j] > ss[i].max)
ss[i].max = ss[i].score[j];
if(ss[i].score[j] < ss[i].min)
ss[i].min = ss[i].score[j];
}
}
ss[i].sum = ss[i].sum - ss[i].max - ss[i].min ;
}
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9-i; j++)
{
if (ss[j].sum < ss[j+1].sum)
{
tmp = ss[j];
ss[j] = ss[j+1];
ss[j+1] = tmp;
}
}
}
for (i = 0; i < 10; i++)
{
printf("%s:总分:%.2f;评委打分:", ss[i].name,ss[i].sum);
for(j = 0; j < 5;j++)
printf("%.2f ",ss[i].score[j];
printf("\n");
}
return 0;
}