1.问题:青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。输入数据有多组,每组占一行,每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分。
2.题的要求是在给定的一组数据里面,去掉一个最高跟一个最低,然后求平均值。因为是平均值,会有小数点,需要考虑数据的类型。
3.整体的思路为,找出最大跟最小的两个数,所有数据的总和减去这两个数然后求平均值。
首先获取数据:
while (cin.hasNext()) {
a = cin.nextInt();
double sum = 0;
double max = 0;
double min = 100;判断出最大跟最小并求和:for (int i = 0; i < a; i++) {
double m = cin.nextDouble();
// b[i] = cin.nextDouble();
double h;
if (m > max) {
max = m; // 最大
}
if (m< min) {
min = m; // 最小
}
sum += m;
}最后求平均值计算:double c = (sum - max - min) / (a - 2);4.题中有要求保留小数点位数:DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(c));AC代码:import java.text.DecimalFormat;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int a;
while (cin.hasNext()) {
a = cin.nextInt();
double sum = 0;
double max = 0;
double min = 100;
for (int i = 0; i < a; i++) {
double m = cin.nextDouble();
// b[i] = cin.nextDouble();
double h;
if (m > max) {
max = m;
}
if (m< min) {
min = m;
}
sum += m;
}
double c = (sum - max - min) / (a - 2);
DecimalFormat df = new DecimalFormat("#0.00");
System.out.println(df.format(c));
}
}
}

626

被折叠的 条评论
为什么被折叠?



