大奖赛现场统分。已知某大奖赛有n个选手参赛,m(m>2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉一个最高分和一个最低分后,取平均分作为该选手的最后得分。要求编程实现:根据n个选手的最后得分,从高到低输出选手的得分名次表,以确定获奖名单。
利用随机数随机评分,然后用冒泡排序,把最低分和最高分去掉,剩下的值相加并除去m-2,把最后得分放到新的数组里打印出来
使用结构体数组,结构体包括选手名字和评分数组即可
大体聊聊思路,详细的代码留给你自己了,总归你也需要出点力气
找个地方,用来保存选手的的成绩,int *play = new int[n];
也没说评委成绩数据是怎么给,那就先假定通过控制台输入的,输入的时候统计下最大值,最小值,顺带求和,最后减掉最大值、最小值,求平均成绩
拿到了成绩清单,做个排序就差不多了
for (int j = 0; j < n; j++)
{
// 每次输入评委的成绩,累加起来,顺带统计出来最大值,最小值
int max = 0, min = 10, sum;
for (int i = 0; i < m; i++);
{
int tmp = 0;
std::cin >> tmp;
// 统计最小值
if (tmp < min)
{
min = tmp;
}
// 统计最大值
if (tmp > max)
{
max = tmp;
}
sum += tmp;
}
// 按照题目要求,最高、最低不统计,计算平均成绩
int avg = (sum - max - min) / (m - 2);
// 保存成绩了,然后做个排序输出就好了
}
结构体数组 或者二维数组
一层循环去掉最高分和最低分,计算出平均分
数组 存选手名和对应均分
数组排序
输出