牛客编程入门之统计成绩
程序员文章站
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 ”
来保留小数点后两位。
上一篇: 第十一节:OA权限管理系统(部门管理)