题目 1500: [蓝桥杯][算法提高VIP]分数统计

题目描述

给定一个百分制成绩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五个等级段的人数
第二行一个正整数,表示人数最多的等级段中人数
接下来一行若干个用空格隔开的正整数,表示人数最多的那个等级中所有人的分数,按从大到小的顺序输出。
样例输入

10
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 Cyyw1500 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int [] arr = new int [5]; // 储存每一个等级成绩的数量
		int [] num = new int [n]; // 储存成绩
		// 输入成绩
		for (int i = 0; i < num.length; i++) {
			num[i] = sc.nextInt();
		}
		// 获取每一个等级成绩的数量
		for (int i = 0; i < num.length; i++) {
			if (num[i]>=90&&num[i]<=100) {
				arr[0]++;
	        } else if (num[i]>=80&&num[i]<=89) {
	        	arr[1]++;
	        } else if (num[i]>=70&&num[i]<=79) {
	        	arr[2]++;
	        } else if (num[i]>=60&&num[i]<=69) {
	        	arr[3]++;
	        } else if (num[i]>=0&&num[i]<=59) {
	        	arr[4]++;
	        }
		}
		
		int max = 0; // 等级成绩个数最多的
		int count = 0; // 定义那个等级
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+" "); // 打印个等级成绩个数
			// 找最多的
			if (arr[i] > max) {
				max = arr[i];
				count = i;
			}
		}
		System.out.println();
		System.out.println(max); // 最大值
		Arrays.sort(num); // 排序
		
		count = arr.length - count; // 上面定义的时候是从大到小,在这里我反过来了
		for (int i = num.length-1; i > 0; i--) {
			// 这个为5,相当于等级为A
			if (count == 5) {
				if (num[i] >= (count+4)*10) {
					System.out.print(num[i] + " ");
				}
			} else if (count == 1) { // 等级为E
				if (num[i] < (count+5)*10) {
					System.out.print(num[i] + " ");
				}
			} else { // 其他
				if (num[i] >= (count+4)*10 && num[i] < (count+5)*10) {
					System.out.print(num[i]+" ");
				}
			}
		}
	}
}

运行示例:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值