题目:小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
请计算这次考试的最高分、最低分和平均分。
输入描述
输入的第一行包含一个整数 n (1≤n≤104),表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
输入输出样例
示例
输入
7
80
92
56
74
88
99
10
输出
99
10
71.29
解题思路+代码:
代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 成绩分析 {
public static void main(String[] args) throws IOException {
int t = 1;
for (int i = 1; i <=t ; i++) {
solve();
}
out.flush();
}
static void solve() {
int n = in.nextInt();//考生人数
int[] score = new int[n]; //存放学生得分的数组
for (int i = 0; i < score.length; i++) {
score[i] = in.nextInt(); //填充学生的分数[80,92,56,74,88,99,10]
}
//对数组进行排序,分数最低的为score[0],分数最高的为score[score.length - 1]
Arrays.sort(score);
int min = score[0]; //最低
int max = score[score.length - 1]; //最高
int sum = 0;
//求平均分
for (int i = 0; i <score.length ; i++) {
sum += score[i];
}
float average = (float) sum / n;//转化为float型
out.println(max);
out.println(min);
out.printf("%.2f",average); //保留两位小数
}
static FastReader in = new FastReader();
static PrintWriter out = new PrintWriter(System.out);
static class FastReader{
BufferedReader br;
StringTokenizer st;
FastReader(){
br = new BufferedReader(new InputStreamReader(System.in));
}
String next(){
String str = "";
while(st == null || !st.hasMoreElements()){
try{
str = br.readLine();
}catch(IOException e){
throw new RuntimeException(e);
}
st = new StringTokenizer(str);
}
return st.nextToken();
}
int nextInt(){
return Integer.parseInt(next());
}
double nextDouble(){
return Double.parseDouble(next());
}
Long nextLong(){
return Long.parseLong(next());
}
}
}
总结:一道简单的数学题,在输入的成绩当中用Arrays.sort进行排序,最小的为sort[0],最大的为sort[length-1],平均数用(sum += sort[i]) / n即可,但这里需要注意的保留两位小数,需要转float型,再用%.2f格式化输出。