问题标题: 陆麟瑞酷町堂1172

0
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
我要回答