按结构体“字符数组成员”对结构体数组进行排序

文章介绍了如何在C++中按结构体的字符数组成员对结构体数组进行排序,使用strcmp函数并自定义升序和降序比较函数up()和down()。示例展示了如何对包含姓名和分数的Node结构体数组进行排序。
摘要由CSDN通过智能技术生成

【知识点】
按结构体的“
字符数组成员”对结构体数组进行排序前,需要自定义排序函数。
其中,要用到
strcmp 函数。
C++ 中 strcmp(a,b) 函数的用法
若 len(a)>len(b),则返回1。
若 len(a)==len(b),则返回0。
若 len(a)<len(b),则返回-1。

C++ 中 strcmp(a,b) 函数的用法代码一:

#include <bits/stdc++.h>
using namespace std;
 
int main() {
    char s1[]="abcdefg";
    char s2[]="abcdefg";
    char s3[]="abcde";
    
    printf("%d\n",strcmp(s1,s2)); //0
    printf("%d\n",strcmp(s1,s3)); //1
    printf("%d\n",strcmp(s3,s1)); //-1
    
    return 0;
}


C++ 中 strcmp(a,b) 函数的用法代码二:

#include <bits/stdc++.h>
using namespace std;
 
int main() {
    const char* s1="abcdefg";
    const char* s2="abcdefg";
    const char* s3="abcde";
    
    printf("%d\n",strcmp(s1,s2)); //0
    printf("%d\n",strcmp(s1,s3)); //1
    printf("%d\n",strcmp(s3,s1)); //-1
    
    return 0;
}


【算法代码】

#include <bits/stdc++.h>
using namespace std;
 
const int maxn=1005;
 
struct Node {
    char name[20];
    float score;
};
 
int up(Node x,Node y) {
    return strcmp(x.name,y.name)<0;
}
 
int down(Node x,Node y) {
    return strcmp(x.name,y.name)>0;
}
 
int main() {
    Node p[maxn];
 
    int n;
    cin>>n;
    for(int i=0; i<n; i++) {
        cin>>p[i].name>>p[i].score;
    }
 
    sort(p,p+n,up); //Sort by ascending field name
    //sort(p,p+n,down);
 
    cout<<endl;
    for(int i=0; i<n; i++) {
        cout<<p[i].name<<" "<<p[i].score<<endl;
    }
 
    return 0;
}
 
 
/*
in:
7
Tom 27.2
Mary 50.6
Jim 30.9
Bob 50.6
Wood 72.8
Alice 49.3
Kite 21.1

out:
Alice 49.3
Bob 50.6
Jim 30.9
Kite 21.1
Mary 50.6
Tom 27.2
Wood 72.8
*/



【参考文献】
https://blog.csdn.net/hnjzsyjyj/article/details/120184972

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值