题目链接
https://www.dotcpp.com/oj/contest4162_problem2.html?sid=6545763&lang=0#editor
题目描述
最近"老王"很开心.他在大一的时候参加过数计学院的“软件小组”。告诉你个秘密,这个小组是个好地方,不但活动精彩而且有MM。
这不,这个小组举办了一个叫做“计算机演讲大赛”的节目。这个节目有好多人参加,这不,成绩出来了,"老王"当是很勇敢,自告奋勇接下了算出大家的总得分的任务。
当时有7个评委,每个评委都要给选手打分,现在要求去掉一个最高分和去掉一个最低分,再算出平均分。结果精确到小数点后两位。
输入
测试数据包括多个实例。
每组数据包括7个实数,代表评委们对该选手的评分。紧接着是选手的名字,名字的长度不超过30个字符。
输入直到文件结束。
输出
算出每位选手名字和最终得分,结果保留两位有效数字
样例输入
10 10 10 10 10 10 9 xiaoyuanwang 0 0 0 0 0 0 0 beast
样例输出
xiaoyuanwang 10.00 beast 0.00
解题思路
一:因为数字有7组,可已用数组来储存,此外因为名字没有空格,所以用%s输入
二:用循环将7位数字加起来后去掉最大分和最小分
三:输出名字,平均分
代码
#include<stdio.h>
int main()
{
int i,j,k;
float a[10],c,d,e,sn;
char b[100];
while(scanf("%f",&a[0])!=EOF)//先输入第一个评分
{
sn=0;
for(i=1;i<7;i++)
{
scanf("%f",&a[i]);//从a[1]开始,输入后6个评分
}
scanf("%s",b);//输入名字
c=a[0];
d=a[0];
for(i=0;i<7;i++)//求最值
{
if(c<a[i])
{
c=a[i];
}
if(d>a[i])
{
d=a[i];
}
}
for(i=0;i<7;i++)
{
sn=sn+a[i];
}
sn=sn-c-d;//去掉最大值和最小值后的总分
printf("%s ",b);
printf("%.2f\n",sn/5);//输出平均分
}
return 0;
}