c的循环,求解!
某大赛有n(n>=5)个选手参赛,m(m>=4)个评委依次为参赛的选手评判打分;最高10分,最低0分。统分规则为:每个选手所得的m个评分中,去掉一个最高分,去掉一个最低分,然后平均该选手的最后得分。根据n个选手的最后得分从高到低排出名次表,以便确定获奖名单。
程序代码:#define N 5 /*选手*/
#define M 4 /*评委*/
int i,j,b[N],s,temp,max,min;
float a[N],sum,t;
for(i=0;i<N;i++)
{sum=0;
while(1)
{printf("请输入第1个评委给第%d个选手的打分:",i+1);
scanf("%d",&s);
if(s>=0&&s<10)
break;
else printf("请正确输入:\n");}
min=max=s;sum=sum+s;
for(j=1;j<M;j++)
{while(1)
{
printf("请输入第%d个评委给第%d个选手的打分:",j+1,i+1);
scanf("%d",&s);
if(s>=0&&s<10)
break;
else printf("请正确输入:\n");}
if(min>s)
min=s;
if(max<s)
max=s;
sum=sum+s;}
a[i]=sum-max-min;
b[i]=i+1;}
for(i=0;i<N;i++)
for(j=i;j<N;j++)
{if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;temp=b[i];b[i]=b[j];b[j]=temp;}}
t=M-2;
for(i=0;i<N;i++)
printf("第%d名是%d,总分是%.2f\n",i+1,b[i],a[i]/t);仅供参考!