原题链接:蓝桥杯算法提高VIP-分数统计
解题思路:先用数组获取输入的分数,再判断这些分数放在对应等级的二维数组中,打印等级的各数组长度,判断出等级人数最多的数组,打印该数组
注意事项:注意最后的降序排列
参考代码:
import java.util.Arrays;
import java.util.Scanner;
public class Main{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*
* 给定一个百分制成绩T,将其划分为如下五个等级之一: 90~100为A,80~89为B,70~79为C,60~69为D,0~59为E
* 现有若干百分制成绩
* (成绩个数不超过1000个),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩
* (保证人数最多的等级只有一个)。 输入 第一行是成绩的个数 n 第二行是学生的成绩,若干0~100的正整数,用空格隔开
*
* 输出 第一行为5个正整数,分别表示A,B,C,D,E五个等级段的人数 第二行一个正整数,表示人数最多的等级段中人数
* 接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出
*/
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
int [][] a = new int [5][];
int a1 = 0, b = 0, c = 0, d = 0, e = 0;
for (int i : arr) {
if (i >= 90 && i <= 100) {
a1++;
}
if (i >= 80 && i <= 89) {
b++;
}
if (i >= 70 && i <= 79) {
c++;
}
if (i >= 60 && i <= 69) {
d++;
}
if (i >= 0 && i <= 59) {
e++;
}
}
a[0]=new int[a1];
a[1]=new int[b];
a[2]=new int[c];
a[3]=new int[d];
a[4]=new int[e];
a1 = 0; b = 0; c = 0; d = 0; e = 0;
for (int is : arr) {
if (is >= 90 && is <= 100) {
a[0][a1] = is;
a1++;
}
if (is >= 80 && is <= 89) {
a[1][b] = is;
b++;
}
if (is >= 70 && is <= 79) {
a[2][c] =is;
c++;
}
if (is >= 60 && is <= 69) {
a[3][d] = is;
d++;
}
if (is>= 0 && is <= 59) {
a[4][e] = is;
e++;
}
}
int[] count = { a1, b, c, d, e };
Arrays.sort(count);
for (int i = 0; i < 5; i++) {
System.out.print(a[i].length + " ");
if (i==4) {
System.out.print("\n");
}
}
for (int j = 0; j < 5; j++) {
if (a[j].length == count[count.length - 1]) {
System.out.println(count[count.length-1]);
Arrays.sort(a[j]);
for (int jk = a[j].length-1; jk >=0 ; jk--) {
System.out.print(a[j][jk] + " ");
}
}
}
}
}0.0分
2 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复