1566 - 成绩排序3
时间限制 : 1 秒
内存限制 : 32 MB
用一维数组存储学号和成绩,然后,按成绩排序输出。
<br />
题目输入
输入第一行包括一个整数N(1<=N<=100),代表学生的个数。<br />
接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
<br />
题目输出
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。<br />
如果学生的成绩相同,则按照学号的大小进行从小到大排序。
<br />
输入/输出样例
输入格式
1 1 68 3 1 1 2 70 3 25
输出格式
1 68 1 1 3 25 2 70
C语言解答
#include <stdio.h> #include <stdlib.h> struct student { int num; int score; }; int main() { struct student students[200]; int n,i,j; struct student t; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d %d",&students[i].num,&students[i].score); } for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(students[j].score>students[j + 1].score) { t=students[j]; students[j]=students[j+1]; students[j+1]=t; } else if(students[j].score==students[j+1].score) { if(students[j].num>students[j+1].num) { t=students[j]; students[j]=students[j+1]; students[j+1]=t; } } } } for(i=0;i<n;i++) { printf("%d %d\n",students[i].num,students[i].score); } } return 0; }
C++解答
#include <stdio.h> #include <stdlib.h> struct student { int number; int score; }; int main() { struct student students[101]; int n, i, j; struct student temp; while(scanf("%d",&n) != EOF) { //接收数据 for(i = 0; i < n; i++) { scanf("%d%d",&students[i].number,&students[i].score); } //冒泡排序 for(i = 0; i < n - 1; i ++) { for(j = 0; j < n - i - 1; j ++) { if(students[j].score > students[j + 1].score) { temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; }else if(students[j].score == students[j + 1].score) { if(students[j].number > students[j + 1].number) { temp = students[j]; students[j] = students[j + 1]; students[j + 1] = temp; } } } } //输出排序结果 for(i = 0; i < n; i ++) { printf("%d %d\n",students[i].number,students[i].score); } } return 0; }
Java解答
import java.util.Arrays; import java.util.Scanner; public class Main{ private static Scanner s = new Scanner(System.in) ; public static void main(String[] args) { while(s.hasNext()){ int t = s.nextInt() ; A a[] = new A[t] ; for (int i = 0; i < t; i++) { int num = s.nextInt() ; int score = s.nextInt() ; a[i] = new A(num, score) ; } Arrays.sort(a) ; for (int i = 0; i < a.length; i++) { System.out.println(a[i].num+" "+a[i].score); } } } } class A implements Comparable{ int num ; int score ; public A(int num, int score) { super(); this.num = num; this.score = score; } @Override public int compareTo(Object o) { A a = (A) o; if(this.score<a.score){ return -1 ; }else if(this.score==a.score) return 0; else return 1 ; } }