题目:
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97 4 100 99 98 97
Sample Output
98.00 98.50
思路:
找出最大值,最小值,去掉,再求取平均值,注意输出的格式;
代码如下:
JAVA:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
while(input.hasNext()) {
int max=-1,min=101,sum=0;
int n=input.nextInt();
for(int i=0;i<n;i++) {
int a=input.nextInt();
sum=sum+a;
if(a>max)
max=a;
if(a<min)
min=a;
}
sum=sum-max-min;
double ss=sum*1.0/(n-2);
System.out.printf("%.2f\r\n",ss);
}
}
}
C++:
#include<stdio.h>
int main()
{
int n;
while(~scanf("%d",&n))
{
int a,b=101,i,t=0,s=0;
double x;
for(i=0; i<n; i++)
{
scanf("%d",&a);
s=s+a;
if(t<a)
t=a;
if(b>a)
b=a;
}
x=(s-t-b)*1.0/(n-2);
printf("%.2lf\n",x);
}
return 0;
}