这个题的大概意思就是找前五名发奖学金,但是有前提,这五名的排名是按照这样的规则的,就是总分最高的排在最前面,,而总分一样的则看语文成绩,谁的语文成绩高些则谁的排名靠前,而总分一样的并且语文成绩也一样的则看学号,谁的学号小,则谁的排名靠前一些。
而解答这个问题其实很简单,首先我们都知道学校的排名,前面是各科的成绩,后面是总分,所以可以创建一个数组来解决这问题。首先输入一个数n代表人数,之后创建一个二维数组(n,5),前三列放三门成绩,后面的第四列放学号,第五列放成绩。然后用冒泡法进行排序即可。
package itcast3; import java.util.Scanner; public class L1106 { public static void main(String[] args) { Scanner m=new Scanner(System.in); int n=m.nextInt(); int array[][]=new int [n][5]; for(int i=0;i<n;i++) { for(int k=0;k<3;k++) { array[i][k]=m.nextInt(); } array[i][3]=i+1; array[i][4]=array[i][0]+array[i][1]+array[i][2]; } for(int i=0;i<n-1;i++) for(int k=i+1;k<n;k++) if(array[i][4]<array[k][4]) { int temp; for(int j=0;j<5;j++) { temp=array[i][j]; array[i][j]=array[k][j]; array[k][j]=temp; } } else if(array[i][4]==array[k][4]) { if(array[i][0]<array[k][0]) { int temp; for(int j=0;j<5;j++) { temp=array[i][j]; array[i][j]=array[k][j]; array[k][j]=temp; } } else if(array[i][0]==array[k][0]) { if(array[i][3]>array[k][3]) { int temp; for(int j=0;j<5;j++) { temp=array[i][j]; array[i][j]=array[k][j]; array[k][j]=temp; } } } } for(int i=0;i<5;i++) System.out.println(array[i][3]+" "+array[i][4]); } }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复