题目描述
最近"老王"很开心.他在大一的时候参加过数计学院的“软件小组”。告诉你个秘密,这个小组是个好地方,不但活动精彩而且有MM。
这不,这个小组举办了一个叫做“计算机演讲大赛”的节目。这个节目有好多人参加,这不,成绩出来了,"老王"当是很勇敢,自告奋勇接下了算出大家的总得分的任务。
当时有7个评委,每个评委都要给选手打分,现在要求去掉一个最高分和去掉一个最低分,再算出平均分。结果精确到小数点后两位。
输入
测试数据包括多个实例。
每组数据包括7个实数,代表评委们对该选手的评分。紧接着是选手的名字,名字的长度不超过30个字符。
输入直到文件结束。
输出
算出每位选手名字和最终得分,结果保留两位有效数字
思路分析:
1.首先声明一个可以储存数据的东西,因为有评分和名字,所以可以使用结构体来进行定义
2.将数组中的值进行比大小,并删除数组中最大和最小的两个值
3.进行输出
代码:
#include<stdio.h>
#include<string.h>struct st //定义结构体变量
{char name[30]; //成员名 int a[7]; //评分 }ST;struct st stu[10]; //定义结构体数组 int main ()
{int temp;int r=0;while(scanf("%d",&stu[r].a[0])!=EOF) //输入第一个数,如果错误直接退出,防止出现死循环 {for(int i=1;i<7;i++){scanf("%d",&stu[r].a[i]);}scanf("%s",stu[r].name);int max=0;int maxi=0;int min=100000; //方便计数 int mini=0;for(int i=0;i<7;i++){if(max<stu[r].a[i]){max=stu[r].a[i];maxi=i;}if(min>stu[r].a[i]){min=stu[r].a[i];mini=i;}}float te=(stu[r].a[0]+stu[r].a[1]+stu[r].a[2]+stu[r].a[3]+stu[r].a[4]+stu[r].a[5]+stu[r].a[6]-max-min)/5;//计算分数 printf("%.2f %s\n",te,stu[r].name);r++;}}
演讲大赛评分 - C语言网 (dotcpp.com)
直接提交上去是不行的哟