蓝桥杯算法之成绩分析

问题引入:
小蓝给学生们组织了一场考试,卷面总分为100分,每个学生的得分都是一个0到100的整数。
请计算这次考试的最高分、最低分和平均分。

输入格式:
输入的第一行包含一个整数n,表示考试人数。
接下来n行,每行包含一个0至100的整数,表示一个学生的得分。

输出格式:
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分

样例输入:
7
80
92
56
74
88
99
10
样例输出:
99
10
71.29


解题思路:


首先当输入n个数字(代表成绩)的时候,那么就要求将这几个数字都提取到,此时可以使用List集合。(使用List集合的原因:因为List集合是有序可重复的集合,可重复指代当输入一个数字的时候,可以继续输入另一个相同的数,那么这和输入成绩的情况相似,因为输入成绩可能重复输入)。接着就可以将List集合排序,然后取到第一个和最后一个数字代表最低和最高分了。

具体代码如下:

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main_4 {
    public static void main(String[] args) {
        //定义一个List集合
        List<Integer> list = new LinkedList<>();
        //输入第一行表示考试人数
        Scanner scanner = new Scanner(System.in);
        //获取输入的人数
        double n = scanner.nextInt();
        //通过循环,获得每个学生的成绩
        for (int i = 1;i<=n;i++){
            int score = scanner.nextInt();
            //将获取到的成绩存入到list集合当中(list集合是有序可重复)
            list.add(score);
        }
        //将list集合从小到大排列
        Collections.sort(list);
        //获得最低分
        int min_score = list.get(0);

        //获得最高分
        int max_score = list.get(list.size()-1);

        //输出最高分
        System.out.println(max_score);
        //输出最低分
        System.out.println(min_score);
        //求平均分
        int sum = 0;
        //定义一个变量,作为平均值
        double mean_score;
        for (int i = 0;i<list.size();i++){
            int score = list.get(i);
            sum+=score;
        }
        //求出平均值
        mean_score = sum/n;
        //将所求得的平均值保留两位小数
        System.out.println(String.format("%.2f",mean_score)); 
    }
}```

猜你喜欢

转载自blog.csdn.net/weixin_56068397/article/details/114935806