解题思路:这个题目的话,看着是一个简单的题目,但是做到最后一步的人数最多的那个等级中所有人的分数,按从大到小的顺序输出。

其实这个题的先把用来装分数的数组倒叙,然后在把计算人数的也分到一个数组,在创建一个控制循环的开始变量的值,然后判断计算人数的数组等不等于最大人数的值,要是等于,就从num开始

          要是不等于,那就给num加上那些不等于最大人数的值,这样的话,就是num的值一直在变化,但是变来变去就是对应的索引值,因为索引值就是有多少人

参考代码:

import java.util.Arrays;
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scanner=new Scanner(System.in);
        //利用a来接收一个值,这个值用来控制数组和接收的多少个数据
        int a=scanner.nextInt();
        //定义一个数组,这个数组用来计数
        int []sz=new int[5];
        //这个数组用来接收那些输入的分数
        int []sz2=new int[a];
        //利用for来控制接收的值和计数
        for (int i = 0; i < a; i++) {
            //接收的值给sz2数组
            sz2[i]=scanner.nextInt();
            //计算90-100有多少个数
            if (sz2[i]>=90&&sz2[i]<=100) {
                sz[0]++;
            }
            //计算80-90有多少个数
            else if (sz2[i]>=80&&sz2[i]<=89) {
                sz[1]++;
            }
            //计算70-80有多少个数
            else if (sz2[i]>=70&&sz2[i]<=79) {
                sz[2]++;
            }
            //计算60-70有多少个数
            else if (sz2[i]>=60&&sz2[i]<=69) {
                sz[3]++;
            }
            //计算0-60有多少个数
            else if (sz2[i]>=0&&sz2[i]<=59) {
                sz[4]++;
            }
        }
        //利用Math函数的.max()方法,来求出最大值
        int max=Math.max(sz[4], Math.max(sz[3], Math.max(sz[2], (Math.max(sz[1], sz[0])))));
        //输出计数
        for (int i = 0; i < sz.length; i++) {
            System.out.print(sz[i]+" ");
        }
        //换行
        System.out.println();
        //输出计数最大值
        System.out.println(max);
        //给sz2排序
        Arrays.sort(sz2);
        //声明一个数组
        int xsz[]=new int[sz2.length];
        //给sz2做倒叙的处理,并赋值给xsz,并且下标【索引】是从0开始的
        for (int i = 0; i < sz2.length; i++) {
            xsz[i]=sz2[sz2.length-i-1];
        }
        //定义一个输出开始的下表【索引】
        int num=0;
        //输出最大计数的的值
        for (int i = 0; i < sz.length; i++) {
            //当sz[i]里的值等于最大计数
            if (max==sz[i]) {
                //就输出最大计数的值,因为这个for循环是从num开始的,所以当sz[i]里的值不等于最大计数就用num加上sz[i]的值,
                                                                           //要是等于的话,那就就是从num开始循环一直到num+sz[i]里的值结束
                                                                           //这样的话,就输出了最大计数的的所有值
                for (int j = num; j < num+sz[i]; j++) {
                    System.out.print(xsz[j]+" ");
                }
            }
            //当sz[i]里的值不等于最大计数
            else {
                //num就加上sz[i]里的值
                num+=sz[i];
            }
        }
    }
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论