1
0
已采纳
张睿杰
初级天翼
初级天翼
int comp(const game&a,const game&b)
{
if(a.score.size()>b.score.size()) return 1;
else
if(a.score.size()<b.score.size()) return 0;
else
if(a.score>b.score) return 1;
else
if(a.score<b.score) return 0;
else
if(a.name>b.name) return 0;
else
if(a.name<b.name) return 1;
return 1;
}
0
0
0
朱宗晔
初级光能
初级光能
核心部分
sort(a + 1, a + 1 + n,cmp);
for(int i = 1;i <= n;i ++){
cout << a[i].xm << endl;
}
注意
struct fs{
string fen;
string xm;
}a[505];
int cmp(const fs& a,const fs& b){
if(a.fen.size() != b.fen.size()) return a.fen.size() > b.fen.size();
else if(a.fen != b.fen) return a.fen > b.fen;
else return a.xm < b.xm;
}
不要少了
#include<algorithm>
0
梁锦程
高级光能
高级光能
你首先定义一个结构体
struct fs
{
string name;
string score;
} fs1[501];
然后写上面那个函数
主程序中写完读入后
写
sort(fs1,fs1+n,cmp);
最后输出就行了。
看看可行。
望采纳!
0
0
颜咏春
中级光能
中级光能
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 ) ;
若几个名字的得分相同,则按名字的字典顺序先后排列。
0
贺晓雨
资深守护
资深守护
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 ) ;
希望能帮到你。
0
梁锦程
高级光能
高级光能
这道题可以利用 结构体+排序 写,
分为三类比较,代码如下(P.S.仅供参考)
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;
}
}
0
0
黄俊博
资深光能
资深光能
老师说了,能用sort,所以就~~~~~~~ int comp(const game&a,const game&b) { if(a.score.size()>b.score.size()) return 1; else if(a.score.size()<b.score.size()) return 0; else if(a.score>b.score) return 1; else if(a.score<b.score) return 0; else if(a.name>b.name) return 0; else if(a.name<b.name) return 1; return 1; } int main() { cin>>n; for(int i=0;i<n;i++) { cin>>a[i].name>>a[i].score; } sort(a+0,a+n,comp);
剩下的输出什么的补一下吧!
望采纳,谢谢。