陈佳豪


私信TA

用户名:dotcpp0665353

访问量:1864

签 名:

等  级
排  名 338
经  验 5178
参赛次数 1
文章发表 48
年  龄 0
在职情况 学生
学  校 淄博职业学院
专  业 软件技术·

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

public class Main { 

    public static void main(String[] args) { 

        Scanner sc = new Scanner(System.in); 

        // 输入学生人数和求第 k 名学生

        int n = sc.nextInt(); // 输入学生人数

        int k = sc.nextInt(); // 输入要求的名次 k

        int[] ids = new int[n]; // 存储学生学号的数组

        double[] scores = new double[n]; // 存储学生成绩的数组

        // 输入学生信息并存入数组

        for (int i = 0; i < n; i++) { 

            ids[i] = sc.nextInt(); // 输入学生的学号

            scores[i] = sc.nextDouble(); // 输入学生的成绩

        }

        // 对成绩进行排序,同时对学号进行相应的交换

        for (int i = 0; i < n - 1; i++) { // 进行 n-1 轮排序

            for (int j = i + 1; j < n; j++) { // 将当前排序轮次的第 i 位数与剩下的 n-i-1 个数进行比较

                if (scores[i] < scores[j]) { // 如果当前数比后面的数要小

                    double tempScore = scores[i]; // 声明一个临时变量,用于交换两个元素的值

                    scores[i] = scores[j]; // 将后面的数赋值给前面的数

                    scores[j] = tempScore; // 将前面的数赋值给后面的数

                    int tempId = ids[i]; // 交换学号的值,与成绩的值保持一致

                    ids[i] = ids[j];

                    ids[j] = tempId;

                }

            }

        }

        // 输出第 k 名学生的学号和成绩

        System.out.println(ids[k -1] + " " + scores[k -1]); //数组下标从0开始,而学号是从1开始,所以k-1

    }

}


 

0.0分

0 人评分

  评论区