这个题的大概意思就是找前五名发奖学金,但是有前提,这五名的排名是按照这样的规则的,就是总分最高的排在最前面,,而总分一样的则看语文成绩,谁的语文成绩高些则谁的排名靠前,而总分一样的并且语文成绩也一样的则看学号,谁的学号小,则谁的排名靠前一些。
而解答这个问题其实很简单,首先我们都知道学校的排名,前面是各科的成绩,后面是总分,所以可以创建一个数组来解决这问题。首先输入一个数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语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:581 |
字符串输入输出函数 (C++代码)(都当成字符串吧hhhhhhhh)浏览:493 |
奖学金 (C++代码)浏览:2008 |
简单的a+b (C语言代码)浏览:692 |
蛇行矩阵 (C语言代码)浏览:752 |
简单的a+b (C语言代码)浏览:599 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:523 |
C语言程序设计教程(第三版)课后习题8.1 (C语言代码)浏览:529 |
WU-蓝桥杯算法提高VIP-Quadratic Equation (C++代码)浏览:1752 |
WU-陶陶摘苹果2 (C++代码)浏览:973 |