当前位置: 代码迷 >> 综合 >> 1238: 演讲大赛评分
  详细解决方案

1238: 演讲大赛评分

热度:97   发布时间:2023-11-21 11:45:05.0

题目描述

最近"老王"很开心.他在大一的时候参加过数计学院的“软件小组”。告诉你个秘密,这个小组是个好地方,不但活动精彩而且有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)

直接提交上去是不行的哟