欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客编程入门之统计成绩

程序员文章站 2022-05-01 12:14:01
...

牛客编程入门之统计成绩

import java.util.Scanner;
import java.util.Arrays;

public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        double sum = 0.0;
        int n = scan.nextInt();	//输入科目数
        double[] s = new double[n];	//创建数组s,长度为n
        for(int i = 0; i < n; i++){
            s[i] = scan.nextDouble();	//将科目成绩存入数组
            sum = sum + s[i];	//求各科成绩之和
        }
        Arrays.sort(s)//使用Arrays中的sort()函数排序
        System.out.printf("%.2f %.2f %.2f", s[n-1], s[0], sum/n);
    }
}

//更高效的一种解法,时间和内存都能有所提升
import java.io.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine().split(" ")[0]);
        String[] str = br.readLine().split(" ");
        double max = Double.parseDouble(str[0]);
        double min = Double.parseDouble(str[0]);
        double sum = 0.0;
        for(int i = 0; i < n; i++){
            sum = sum + Double.parseDouble(str[i]);
            if(max < Double.parseDouble(str[i])){
                max = Double.parseDouble(str[i]);
            }
            if(min > Double.parseDouble(str[i])){
                min = Double.parseDouble(str[i]);
            }
        }
        System.out.print(max + "0 " + min + "0 "+ sum/5 + "0 ");
    }
}

第二种方法实现数组排序的思路:将新输入的数与max和min比较,如果比max大,那么max就往后挪;如果比min小,那么min就往前挪。最后,当所有科目成绩输入完成时,排序也完成了,与第一种解法比起来少了排序一个步骤,这样就节约了时间和内存。而且第二种解法在输出数据时也很值得学习,我们一般常用的是%.2f来实现保留两位小数,这种新的方法采用的是“0 ”来保留小数点后两位。

相关标签: 数据结构和算法