设有10名歌手(编号为1-10)参加歌咏比赛,另有6名评委打分,每位歌手的得分从键盘输入,计算出每位歌手的最终得分(扣除一个最高分和一个最低分后的平均分),最后按最终得分由高到低的顺序输出每位歌手的编号及最终得分。
输入格式:
依次输入第1个歌手的6位评委打分(10分制,分数为整型,分数之间使用空格分隔),第2个歌手的6位评委打分...以此类推。
输出格式:
参照输出示例,按最终得分由高到低的顺序输出每位歌手的编号及最终得分(最终得分保留2位小数)。
输入样例:
1 4 7 3 6 3
8 7 8 5 9 8
7 5 6 8 5 4
7 6 7 5 6 5
3 5 6 7 5 5
7 7 7 8 9 6
7 7 6 7 6 8
9 4 3 7 3 6
4 8 6 7 5 8
8 7 8 8 9 8
输出样例:
No.10: 8.00
No.2 : 7.75
No.6 : 7.25
No.7 : 6.75
No.9 : 6.50
No.4 : 6.00
No.3 : 5.75
No.5 : 5.25
No.8 : 5.00
No.1 : 4.00
答案代码:
#include<stdio.h>
int main ()
{
int a[10]; //用于给每位选手计分
double score[10]; //用于计算平均分
int sum; //用于给每位选手计总分
int i,j;
for (i=0;i<10;i++)
{
sum=0; //总分默认为0
for (j=0;j<6;j++) //6名选手,每个选手走一遍这个循环
{
scanf ("%d",&a[j]);
sum+=a[j]; //每位选手的总分
}
//下面这几行,用于去除最高分与最低分///
int max=a[0],min=a[0];
int k;
for (k=0;k<6;k++)
{
if (a[k]>max) max=a[k];
if (a[k]<min) min=a[k];
}
sum=sum-max-min; //找到了最高与最低,在总分中减去
//
score[i]=sum*1.0/4; //计算平均分,并储存在score数组中
}
//下面这几行,用于给每位选手编号
for (i=0;i<10;i++)
{
a[i]=i+1; //比如i=0为第一位选手的数据,其编号为i+1=1;
}
//下面这几行,用于给每位选手排序,排序时不仅要排成绩,还要把相应的编号排了,核心是冒泡排序//
double temp;
int temp1;
for (i=0;i<9;i++)
{
for (j=0;j<9;j++)
{
if (score[j+1]>score[j])
{
temp=score[j+1]; //这三行排成绩
score[j+1]=score[j];
score[j]=temp;
temp1=a[j+1]; //这三行排编号
a[j+1]=a[j];
a[j]=temp1;
}
}
}
///下面这几行,是输出系统,但要注意题目要求的两位左对齐格式//
for (i=0;i<10;i++)
{
printf ("No.%-2d: %.2lf\n",a[i],score[i]);
}///注意这个%-2d,其中,2表示这个数按两位输出,若不够两位
}///则补空格补成两位,-表示左对齐,+表示右对齐,可自行输出感受一下差别
请关注博主支持一下吧qwq
共同进步!