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);仅供参考!