网站怎么做跳转链接,做游戏本测评的网站,镇江门户网站是哪个,培训网站大数据分析题目描述 某小学最近得到了一笔赞助#xff0c;打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末#xff0c;每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序#xff0c;如果两个同学总分相同#xff0c;再按语文成绩从高到低排序#xff0c;… 题目描述 某小学最近得到了一笔赞助打算拿出其中一部分为学习成绩优秀的前5名学生发奖学金。期末每个学生都有3门课的成绩:语文、数学、英语。先按总分从高到低排序如果两个同学总分相同再按语文成绩从高到低排序如果两个同学总分和语文成绩都相同那么规定学号小的同学 排在前面这样每个学生的排序是唯一确定的。 任务先根据输入的3门课的成绩计算总分然后按上述规则排序最后按排名顺序输出前五名名学生的学号和总分。注意在前5名同学中每个人的奖学金都不相同因此你必须严格按上述规则排序。例如在某个正确答案中如果前两行的输出数据(每行输出两个数:学号、总分) 是: 7 279 5 279 这两行数据的含义是:总分最高的两个同学的学号依次是7号、5号。这两名同学的总分都是 279 (总分等于输入的语文、数学、英语三科成绩之和) 但学号为7的学生语文成绩更高一些。如果你的前两名的输出数据是: 5 279 7 279 则按输出错误处理不能得分。 输入格式 输入包含n1行: 第1行为一个正整数n表示该校参加评选的学生人数。 第2到n1行每行有3个用空格隔开的数字每个数字都在O到100之间z第1行的3个数 字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为l~n (恰好是输入数据的行号减1)。 所给的数据都是正确的不必检验。 输出格式 输出共有5行每行是两个用空格隔开的正整数依次表示前5名学生的学号和总分。 样例输入 6 90 67 80 87 66 91 78 89 91 88 99 77 67 89 64 78 89 98 样例输出 6 265 4 264 3 258 2 244 1 237 分析 使用普通for循环先对总分进行排序冒泡排序法的思想只不过是把重的冒上去再对语文成绩进行排序最后对学号进行排序另写一个交换行的方法方便重复调用思路简单粗暴 package no1_1;
import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int nscanner.nextInt();int[][] scorenew int[n][3];for(int i0;in;i) {scanner.nextLine();int chinesescanner.nextInt();int mathscanner.nextInt();int englishscanner.nextInt();score[i][0]chinesemathenglish;//总分score[i][1]chinese;//语文分数 score[i][2]i1;//学号}for(int i0;in-1;i) {for(int ji1;jn;j) {if(score[i][0]score[j][0]) {//比较总分swap(score,i,j);}else {if(score[i][0]score[j][0]) {//总分相同比较语文成绩if(score[i][1]score[j][1]) {//语文成绩相同if(score[i][2]score[j][2]) {//比较学号swap(score,i,j);}}else {//语文成绩不同if(score[i][1]score[j][1]) {//比较语文swap(score,i,j);} }}}}}for(int i0;i5;i) {System.out.println(score[i][2] score[i][0]);}}public static void swap(int[][] score,int i,int j) {//交换score数组里的i行和j行int ascore[i][0];int bscore[i][1];int cscore[i][2];score[i][0]score[j][0];score[i][1]score[j][1];score[i][2]score[j][2];score[j][0]a;score[j][1]b;score[j][2]c;}
}