第二题,(网上的题目是:用C语言编程:有八个评委为五个选手打分,去掉一个最高分,一个最低分,然后求出平均分,按平均分排名,以表格形式输出)照相同的地方照着改
#include<stdio.h>
struct student
{
float score[8];
float ave;
};
struct avescore
{
float ave;
int
stunum; //选手号码
};
int main()
{
float
MaxScore,MinScore,SumScore;
int i,j,k=-1;
struct student
Stu[5];
struct avescore Ave[5],temp;
for(i=0;i<5;i++)
{
SumScore=0;
printf("八位评委为第%d个选手打分依次: ",i+1);
for(j=0;j<8;j++)
{
scanf("%f,",&(Stu[i].score[j])); //打分 ,输入分数时以逗号隔开
SumScore+=Stu[i].score[j];
}
MaxScore=MinScore=Stu[0].score[0];
for(j=0;j<8;j++)
{
if(MaxScore<Stu[i].score[j])
{
MaxScore=Stu[i].score[j];//最高分
}
if(MinScore>Stu[i].score[j])
{
MinScore=Stu[i].score[j];//最低分
}
}
k++;
Ave[k].ave=(SumScore-MaxScore-MinScore)/6;
Ave[k].stunum=i;
}
//平均分排名
for(i=0;i<4;i++)
{
for(j=i+1;j<5;j++)
if(Ave[i].ave<Ave[j].ave)
{
temp=Ave[i];
Ave[i]=Ave[j];
Ave[j]=temp;
}
}
//输出排名
for(i=0;i<5;i++)
{
printf("第%d名:
号码为%d选手\t平均分:%f\n",i+1,Ave[i].stunum,Ave[i].ave);
}
}
为了简便起见,第一位选手号码为0,第二位选手号码为1,剩下的选手以此类推。。