解题思路:
注意事项:
参考代码:
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 人评分
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:572 |
校门外的树 (C语言代码)浏览:1113 |
C语言程序设计教程(第三版)课后习题5.8 (C语言代码)浏览:927 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:572 |
C语言训练-排序问题<2> (C++代码)浏览:879 |
C语言训练-斐波纳契数列 (C语言代码)浏览:1162 |
【数组的距离】 (C语言代码)浏览:728 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:449 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:635 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2090 |