/在诗歌朗诵比赛中,设N(#define N 5)个选手参赛,有M(#define M 6)个评委,
M个评委依次为每个选手打分;要求编写程序实现输出每个选手的最终得分,
并对N个选手的最终得分按从大到小排序。提示:每个选手的最终得分的计算规则:
去掉一个最高分,去掉最低分平均。
要求:
①编写Max()函数和Min()函数求评委为每一个选手打分的最高分和最低分;
②编写Average()函数求每一个选手的最终得分;
③编写Sort()函数进行排序;
④编写InPut()函数对数组元素进行输入;
⑤编写OutPut()函数对数组元素进行输出;
⑥在主函数中调用InPut()、Average()、Sort()和OutPut()函数,并输出结果。
/*在诗歌朗诵比赛中,设N(#define N 5)个选手参赛,有M(#define M 6)个评委,
M个评委依次为每个选手打分;要求编写程序实现输出每个选手的最终得分,
并对N个选手的最终得分按从大到小排序。提示:每个选手的最终得分的计算规则:
去掉一个最高分,去掉最低分平均。
要求:
①编写Max()函数和Min()函数求评委为每一个选手打分的最高分和最低分;
②编写Average()函数求每一个选手的最终得分;
③编写Sort()函数进行排序;
④编写InPut()函数对数组元素进行输入;
⑤编写OutPut()函数对数组元素进行输出;
⑥在主函数中调用InPut()、Average()、Sort()和OutPut()函数,并输出结果。*/
#include <stdio.h>
#define N 5
#define M 6
int Max(int a[]) // 求最高分
{
int i;
int max = a[0];
for(i = 1; i < M; i++)
{
if(a[i] > max)
max = a[i];
}
return max;
}
int Min(int a[]) // 求最低分
{
int i;
int min = a[0];
for( i = 1; i < M; i++)
{
if(a[i] < min)
min = a[i];
}
return min;
}
float Average(int a[]) // 求平均分
{
int i;
int max = Max(a);//调用函数求最大值
int min = Min(a);//调用函数求最小值
int sum = 0;
for(i = 0; i < M; i++)
{
if(a[i] != max && a[i] != min)//除去最大最小值后sum不需要减去最大最小值
sum += a[i];//累加
}
return (float)sum / (M - 2);//返回平均值
}
void Sort(float a[], int b[]) // 排序
{
int i,j;
for( i = 0; i < N - 1; i++)
{
for(j = i + 1; j < N; j++)
{
if(a[i] < a[j])
{
float temp = a[i];
a[i] = a[j];
a[j] = temp;
int temp2 = b[i];
b[i] = b[j];
b[j] = temp2;
}
}
}
}
void InPut(float a[], int b[][M]) // 输入
{
int i,j;
for( i = 0; i < N; i++)
{
printf("请输入第%d个选手的%d个评委的分数:\n", i + 1, M);
for(j = 0; j < M; j++)
{
scanf("%d", &b[i][j]);
}
a[i] = Average(b[i]);
}
}
void OutPut(float a[], int b[]) // 输出
{
int i;
printf("每个选手的最终得分为:\n");
for(i = 0; i < N; i++)
{
printf("第%d个选手的最终得分为:%.2f\n", b[i] + 1, a[i]);
}
}
int main()
{
float score[N];
int num[N],i;
int judge[N][M];
InPut(score, judge);
for(i = 0; i < N; i++)
{
num[i] = i;
}
Sort(score, num);
OutPut(score, num);
return 0;
}