思路:运用结构体,冒泡排序比较
#include<stdio.h>
#include<string.h>
struct stu{ //定义结构体
char a[21]; //字符数组为学生名字
int b; //整数数组为学生成绩
};
int main(){
int n; //学生数量
int i,j;
struct stu stu[20],stuTemp; //调用结构体
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s %d",stu[i].a,&stu[i].b);
}
for(i=0;i<n;i++){
for(j=0;j<n-1;j++){
if(stu[j].b<stu[j+1].b||stu[j].b==stu[j+1].b&&strcmp( stu[j].a,stu[j+1].a) > 0){
stuTemp=stu[j]; //比较成绩,strcmp为字符串比较函数
stu[j]=stu[j+1];
stu[j+1]=stuTemp;
}
}
}
for(i=0;i<n;i++){
printf("%s %d\n",stu[i].a,stu[i].b); //输出
}
return 0;
}