7-6 进步排行榜 (10 分)

7-6 进步排行榜 (10 分)
假设每个学生信息包括“用户名”、“进步总数”和“解题总数”。解题进步排行榜中,按“进步总数”及“解题总数”生成排行榜。要求先输入n个学生的信息;然后按“进步总数”降序排列;若“进步总数”相同,则按“解题总数”降序排列;若“进步总数”和“解题总数”都相同,则排名相同,但输出信息时按“用户名”升序排列。

输入格式:
首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入一个正整数n(1 < n < 50),表示学生总数。然后输入n行,每行包括一个不含空格的字符串s(不超过8位)和2个正整数d和t,分别表示用户名、进步总数和解题总数。

输出格式:
对于每组测试,输出最终排名。每行一个学生的信息,分别是排名、用户名、进步总数和解题总数。每行的各个数据之间留一个空格。注意,进步总数和解题总数都相同的学生其排名也相同。

输入样例:

1
6
usx15131 21 124
usx15101 27 191
usx15113 31 124
usx15136 18 199
usx15117 27 251
usx15118 21 124

输出样例:

1 usx15113 31 124
2 usx15117 27 251
3 usx15101 27 191
4 usx15118 21 124
4 usx15131 21 124
6 usx15136 18 199


import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int T  =scanner.nextInt();
        for (int w =0;w<T;w++){
            int n =scanner.nextInt();
            scanner.nextLine();//吃回车
            String name [] = new String[n];
            int improve [] = new int[n];
            int solve []= new int[n];
            //存数据
            for(int i =0;i<n;i++){

                String stings[]  =scanner.nextLine().split(" ");
                name[i] = String.valueOf(stings[0]);
                improve[i] = Integer.parseInt(stings[1]);
                solve[i] = Integer.parseInt(stings[2]);
            }
            for(int i =0;i<n;i++){
                for(int j =0 ;j < n - i - 1;j++){
                    if(improve[j] < improve[j+1] ){
                        int tem = improve[j+1];
                        improve[j+1] = improve[j];
                        improve[j] = tem;

                        int te = solve[j+1];
                        solve[j+1] = solve[j];
                        solve[j] = te;

                        String st = String.valueOf(name[j+1] );
                        name[j+1] = String.valueOf(name[j]);
                        name[j] = String.valueOf(st);
                    }
                    if(improve[j] == improve[j+1]){
                        if(solve[j] < solve[j+1]){
                            int tem = improve[j+1];
                            improve[j+1] = improve[j];
                            improve[j] = tem;

                            int te = solve[j+1];
                            solve[j+1] = solve[j];
                            solve[j] = te;

                            String st = String.valueOf(name[j+1] );
                            name[j+1] = String.valueOf(name[j]);
                            name[j] = String.valueOf(st);
                        }
                        if(solve[j] == solve[j+1]){
                            if(name[j].compareTo(name[j+1]) > 0){
                                int tem = improve[j+1];
                                improve[j+1] = improve[j];
                                improve[j] = tem;

                                int te = solve[j+1];
                                solve[j+1] = solve[j];
                                solve[j] = te;

                                String st = String.valueOf(name[j+1] );
                                name[j+1] = String.valueOf(name[j]);
                                name[j] = String.valueOf(st);
                            }
                        }
                    }
                }
            }
            int i = 0;
            while (i<n) {

                int num1 = improve[i];
                int num2 = solve[i];
                int cur = i ;
                System.out.println(i+1+" " + name[i]+" "+improve[i]+" "+solve[i]);
                while (i + 1 < n) {
                    if (num1 == improve[i +1]  && num2 == solve[i+1]) {
                        System.out.println(cur+1+" " + name[i + 1]+" "+improve[i+1]+" "+solve[i+1]);
                        i++;

                    } else {
                        break;
                    }
                }
                i++;
               
            }
        }

    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很抱歉,我的知识截止日期是2021年,因此无法回答2022年的编程语言排行榜。但是,我可以告诉你2021年的编程语言排行榜: 1. Java 2. C 3. Python 4. C++ 5. C# 6. Visual Basic .NET 7. JavaScript 8. PHP 9. SQL 10. Swift 这份排行榜是根据编程语言的流行程度和使用频率得出的。 ### 回答2: 2022年编程语言排行榜主要受到技术发展和市场需求的影响。以下是我对2022年编程语言排行榜的预测: 1. Python:Python作为一种易学易用的高级编程语言,具有广泛的应用领域,如数据科学、人工智能和Web开发。其简洁的语法和丰富的第三方库使得Python在2022年将继续受到开发者的青睐。 2. JavaScript:JavaScript是前端开发的必备语言,也被广泛应用于后端开发、移动应用开发等领域。JavaScript的生态系统庞大,拥有众多框架和库,未来一年内JavaScript的使用率将持续高涨。 3. Java:作为一种老牌编程语言,Java在企业级应用开发仍然占有重要地位。Java具有跨平台能力和稳定性,2022年Java的使用量将保持稳定。 4. Go:近年来,Go语言的使用越来越广泛。Go语言具有高效、安全、并发等特点,特别适合构建大规模、高并发的布式系统。在云计算、容器等领域,Go语言将成为热门选择。 5. Rust:Rust是一种系统级编程语言,与C和C++相比,更注重安全性和性能。随着对软件安全性要求的提高,Rust在2022年将成为备受关注的编程语言。 6. Kotlin:Kotlin是一种在Android应用开发逐渐取代Java的新兴语言。许多开发者认为Kotlin拥有更简洁、更易用的语法,将在2022年持续发展壮大。 7. Swift:Swift是苹果公司推出的iOS和macOS应用开发语言,在苹果生态系统内得到广泛应用。随着苹果设备的普及,Swift在2022年有望保持强劲的发展势头。 总结来说,2022年编程语言排行榜上Python将继续保持领先地位,JavaScript、Java等语言也将继续保持高度使用率。同时,Go、Rust、Kotlin和Swift等新兴语言有望在未来一年内快速发展。需要注意的是,技术行业变化迅速,排行榜可能会随着技术进步和市场需求的变化而有所调整。 ### 回答3: 2022年编程语言排行榜可能会受到多方面的因素影响,以下是一些可能的趋势和预测。 首先,Python语言在2022年有望保持其领先地位。Python作为一种易学易用的语言,已经成为数据科学、人工智能和机器学习领域的主流语言。2022年Python的流行度有望继续增长,因为越来越多的开发者和企业正在认识到Python的优势。 其次,JavaScript语言也将继续保持其高人气。JavaScript是Web开发最重要的语言之一,它赋予了网页动态化和交互性的能力。随着云计算和移动设备的普及,对Web应用和移动应用的需求将持续增长,这将继续推动JavaScript的发展。 另外,TypeScript语言有望在2022年获得更多关注。TypeScript是一种基于JavaScript的编程语言,它添加了静态类型检查和面向对象编程的特性。由于TypeScript能够提供更好的代码维护和错误检查能力,逐渐得到了越来越多的开发者认可。 在移动应用开发领域,2022年可能会出现更多对Kotlin语言的需求。Kotlin是一种适用于Android开发的现代化编程语言,由于其简洁和安全的特性,越来越多的开发者选择使用Kotlin进行Android应用开发。 此外,C++、Java、C#等传统的编程语言在2022年仍然会保持一定的影响力。虽然这些语言可能没有像Python或JavaScript那样的大幅增长,但它们仍然是许多行业关键的语言,例如游戏开发、嵌入式系统和企业级应用开发等领域。 综上所述,2022年编程语言排行榜可能会继续展示Python、JavaScript、TypeScript等语言的强势地位,同时也会有其他语言的增长和发展。不同的领域和需求将决定不同编程语言的流行度和影响力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超好的小白

没体验过打赏,能让我体验一次吗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值