题目链接:
此为 浙江工商大学oj编程实训参考题库(题号列表)-CSDN博客 系列的一篇文章。
===================================================================================================
题目 1056 英文金曲大赛
描述
我们在“渊子数”的题目中已经了解了渊子是个什么样的人了,他在大一的时候参加过工商学院的“英语聚乐部”。告诉你个秘密,这个俱乐部是个好地方,不但活动精彩而且有MM。 这不,英语俱乐部举办了一个叫做“英文金曲大赛”的节目。这个节目有好多人参加,这不,成绩出来了,渊子当是很勇敢,自告奋勇接下了算出大家的总得分的任务。 当时有7个评委,每个评委都要给选手打分,现在要求去掉一个最高分和去掉一个最低分,再算出平均分。结果精确到小数点后两位。
输入
测试数据包括多个实例。 每组数据包括7个实数,代表评委们对该选手的评分。紧接着是选手的名字,名字的长度不超过30个字符。 输入直到文件结束。
输出
算出每位选手名字和最终得分,结果保留两位有效数字。
输入样例 1
10 10 10 10 10 10 9 xiaoyuanwang 0 0 0 0 0 0 0 beast
输出样例 1
xiaoyuanwang 10.00 beast 0.00
===================================================================================================
解题挫见:很简单的一个题目
知识点:数据处理
以下为通过代码以及一些详细的注释(用c语言书写):
!!!!!!!!!!!!!!!!!!!仅参考思路,严禁直接ctrl+c!!!!!!!!!!!!!!!!
//
// Created by COLORFUL on 2023/10/7.
//
#include "stdio.h"
char name[35];
double score[15] = {0},reg,sum;
int main()
{ //下面这个代码有点暴力了(写完才发现),但数据少可以这样处理,数据多的话应该先检测score[0],后面用for循环赋值
while(scanf("%lf%lf%lf%lf%lf%lf%lf",&score[0],&score[1],&score[2],&score[3],&score[4],&score[5],&score[6]) != EOF)
{
scanf("%s", name);
for (int i = 0; i < 7; ++i) /*简单的冒泡排序,本来想用快排的但写起来比较麻烦,且这个题目数据量少
c++的话可以用sort函数代替*/
{
for (int j = i + 1; j < 7; ++j)
{
if (score[i] > score[j])
{
reg = score[i];
score[i] = score[j];
score[j] = reg;
}
}
}
sum = 0;
for (int i = 1; i < 6; ++i)
{
sum += score[i];
}
sum /= 5;
printf("%s %.2lf\n",name,sum);
}
return 0;
}
如有哪有不足或更好的解决方法,请慷慨提出,感激不尽!!