问题描述
2016.4.5已更新此题,此前的程序需要重新提交。
问题描述
给定一个百分制成绩T,将其划分为如下五个等级之一:
90~100为A,80~89为B,70~79为C,60~69为D,0~59为E
现在给定一个文件inp,文件中包含若干百分制成绩(成绩个数不超过100),请你统计五个等
级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保
证人数最多的等级只有一个)。要求输出到指定文件oup中。
import java.util.Arrays;
import java.util.Scanner;
public class 分数统计 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numb = sc.nextInt();
int num[]=new int[numb];
for (int i = 0; i < num.length; i++) {
num[i]=sc.nextInt();
}
Arrays.sort(num);
int sum[]=new int[5];
int sum1[][]=new int[5][1000];
int j=0,j2=0,j3=0,j4=0,j5=0;
for (int i = 0; i < num.length; i++) {
if (num[i]>=90&&num[i]<=100) {
sum[0]=1+sum[0]++;
sum1[0][j]=num[i];
j++;
continue;
}
if (num[i]>=80&&num[i]<=89) {
sum[1]=1+sum[1]++;
sum1[1][j2]=num[i];
j2++;continue;
}
if (num[i]>=70&&num[i]<=79) {
sum[2]=1+sum[2]++;
sum1[2][j3]=num[i];
j3++;continue;
}
if (num[i]>=60&&num[i]<=69) {
sum[3]=1+sum[3]++;
sum1[3][j4]=num[i];
j4++;continue;
}
if (num[i]>=0&&num[i]<=59) {
sum[4]=1+sum[4]++;
sum1[4][j5]=num[i];
j5++;continue;
}
}
int s = sum[0];
int h = 0;
for (int j1 = 1; j1 < sum.length; j1++) {
if (sum[j1]>s) {
s=sum[j1];
h=j1;
}
}
for (int i = 0; i < sum.length; i++) {
System.out.print(sum[i]+" ");
}
System.out.println();
System.out.println(s);
for (int i = s-1; i >=0; i--) {
System.out.print(sum1[h][i]+" ");
}
}
}
样例输入
100 80 85 77 55 61 82 90 71 60
样例输出
2 3 2 2 1
3
85 82 80