Java实现 蓝桥杯VIP 算法提高 分数统计
算法提高 分数统计
时间限制:1.0s 内存限制:512.0MB
问题描述
2016.4.5已更新此题,此前的程序需要重新提交。
问题描述
给定一个百分制成绩T,将其划分为如下五个等级之一:
90100为A,8089为B,7079为C,6069为D,0~59为E
现在给定一个文件inp,文件中包含若干百分制成绩(成绩个数不超过100),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。要求输出到指定文件oup中。
输入格式
若干0~100的正整数,用空格隔开
输出格式
第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数
第二行一个正整数,表示人数最多的等级段中人数
接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。
样例输入
100 80 85 77 55 61 82 90 71 60
样例输出
2 3 2 2 1
3
85 82 80
import java.util.Arrays;
import java.util.Scanner;
public class 分数统计 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String[] ss = s.split(" ");
int n = ss.length;
int [] sz =new int [n];
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
for (int i = 0; i < n; i++) {
sz[i]=Integer.valueOf(ss[i]);
if(sz[i]<=100&&sz[i]>=90){
a++;
}else if(sz[i]<=89&&sz[i]>=80){
b++;
}else if(sz[i]<=79&&sz[i]>=70){
c++;
}else if(sz[i]<=69&&sz[i]>=60){
d++;
}else if(sz[i]<=59&&sz[i]>=0){
e++;
}
}
System.out.println(a+" "+b+" "+c+" "+d+" "+e);
System.out.println(Math.max(Math.max(Math.max(Math.max(a,b),c), d), e));
Arrays.sort(sz);
if(Math.max(Math.max(Math.max(Math.max(a,b),c), d), e)==a){
for (int i = sz.length-1; i >=0 ; i--) {
if(sz[i]>=90){
System.out.print(sz[i]+" ");
}
}
}else if(Math.max(Math.max(Math.max(Math.max(a,b),c), d), e)==b){
for (int i = sz.length-1; i >=0 ; i--) {
if(sz[i]>=80 && sz[i]<90){
System.out.print(sz[i]+" ");
}
}
}else if(Math.max(Math.max(Math.max(Math.max(a,b),c), d), e)==c){
for (int i = sz.length-1; i >=0 ; i--) {
if(sz[i]>=70 && sz[i]<80){
System.out.print(sz[i]+" ");
}
}
}else if(Math.max(Math.max(Math.max(Math.max(a,b),c), d), e)==d){
for (int i = sz.length-1; i >=0 ; i--) {
if(sz[i]>=60 && sz[i]<70){
System.out.print(sz[i]+" ");
}
}
}else if(Math.max(Math.max(Math.max(Math.max(a,b),c), d), e)==e){
for (int i = sz.length-1; i >=0 ; i--) {
if(sz[i]<60){
System.out.print(sz[i]+" ");
}
}
}
}
}