给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。
第一行为n (0 < n < 20),表示班里的学生数目;
接下来的n行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过20,成绩为一个不大于100的非负整数。
把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。
4
Kitty 80
Hanmeimei 90
Joey 92
Tim 28
Joey 92
Hanmeimei 90
Kitty 80
Tim 28
用了两个数组,比较一个的大小排序,另一个跟着变化
#includeusing namespace std; int b[5001];//放值 char a[5001][20];//放人名 int main() { int i=0,j,k=0,n,m,t; char tmp[20]; scanf("%d%d",&n); for(i=0;i b[i])//成绩从高到低对成绩单排序输出 { strcpy(tmp,a[i]); strcpy(a[i],a[j]); strcpy(a[j],tmp); k=b[i]; b[i]=b[j]; b[j]=k; } else if(b[j]==b[i]&&(strcmp(a[j],a[i])<0))//相同分数则名字字典序小的在前 { strcpy(tmp,a[i]); strcpy(a[i],a[j]); strcpy(a[j],tmp); } } for(j=0;j