题目描述
用一维数组存储学号和成绩,然后,按成绩排序输出。
输入描述:
输入第一行包括一个整数N(1<=N<=100),代表学生的个数。
接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。
如果学生的成绩相同,则按照学号的大小进行从小到大排序。
示例1
输入
3
1 90
2 87
3 92
输出
2 87
1 90
3 92
分析:本题的成绩排序的重要之处在于结构体的应用,以及根据结构体内的元素大小对结构体类型变量进行排序。
通过代码:
#include <stdio.h>typedef struct {int p;int q;
}stu;
void sort(stu s[100],int n){for(int i=1;i<n;i++){for(int j=0;j<n-i;j++){if((s[j].q>s[j+1].q)||((s[j].q==s[j+1].q)&&(s[j].p>s[j+1].p))){stu temp=s[j];s[j]=s[j+1];s[j+1]=temp;}}}
}
int main(){int n;stu s[100];while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%d%d",&s[i].p,&s[i].q);}sort(s,n);for(int i=0;i<n;i++){printf("%d %d\n",s[i].p,s[i].q);}}return 0;
}