这个题的大概意思就是找前五名发奖学金,但是有前提,这五名的排名是按照这样的规则的,就是总分最高的排在最前面,,而总分一样的则看语文成绩,谁的语文成绩高些则谁的排名靠前,而总分一样的并且语文成绩也一样的则看学号,谁的学号小,则谁的排名靠前一些。
而解答这个问题其实很简单,首先我们都知道学校的排名,前面是各科的成绩,后面是总分,所以可以创建一个数组来解决这问题。首先输入一个数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语言代码)浏览:499 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:949 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:603 |
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:942 |
WU-输出正反三角形 (C++代码)浏览:1098 |
C语言程序设计教程(第三版)课后习题8.7 (C语言代码)浏览:934 |
a+b浏览:452 |
愚蠢的摄影师 (C++代码)浏览:980 |
C语言程序设计教程(第三版)课后习题5.5 (C语言代码)浏览:582 |