0
已解决
芮奥运
高级光能
高级光能
陆麟瑞1172怎么做
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct st { char name[51] ; char sc[501] ; }st ; st a[501] ; int comp( const void *a , const void *b ) { if( strlen( ((st *)a)->sc ) != strlen( ((st *)b)->sc ) ) return strlen( ((st *)b)->sc ) - strlen( ((st *)a)->sc ) ; return strcmp( ((st *)b)->sc , ((st *)a)->sc ) ; } int main() { //freopen("in.txt","r", stdin) ; int n , i ; scanf("%d", &n ) ; for( i = 0 ; i < n ; ++i ) { scanf("%s%s", a[i].name , a[i].sc ) ; } qsort( a , n , sizeof(a[0]) , comp ) ; for( i = 0 ; i < n ; ++i ) puts( a[i].name ) ; return 0 ; }
0
已采纳
梁锦程
高级光能
高级光能
这道题可以利用sort + 结构体;
然后sort判断:
bool cmp(fs a,fs b)
{
if(a.score.size()!=b.score.size())// 分数长度不等,不可以直接比大小
return a.score.size()>b.score.size();// 则分数越长越大
else// 分数长度相等,可以直接比大小
{
if(a.score==b.score)// 当分数相等
return a.name<b.name;// 按照学生姓名排序
else return a.score>b.score;
}
}
如果还不会,请追问,望采纳!
1
0
0
0