P1104 生日

一道简单的结构体排序问题

话不多说直接上代码

复制代码
 1 #include <iostream>
 2 #include <string>
 3 #include <algorithm>
 4 using namespace std;
 5 struct student {
 6     string name;
 7     int y;//
 8     int m;//
 9     int d;//
10     int n;//输入编号
11 }S[101];
12 bool cmp(student& a, student& b) {
13     //判断生日大小,若生日相同,判断他们的输入编号,大的先输出
14     if (a.y == b.y) {
15         if (a.m == b.m) {
16             if (a.d == b.d) {
17                 return a.n > b.n;
18             }
19             return a.d < b.d;
20         }
21         return a.m < b.m;
22     }
23     return a.y < b.y;
24 }
25 int main() {
26     int n = 0;
27     scanf("%d", &n);
28     for (int i = 1; i <= n; i++) {
29         cin >> S[i].name;
30         scanf("%d %d %d", &S[i].y, &S[i].m, &S[i].d);
31         S[i].n = i;//输入编号
32     }
33     sort(S + 1, S + n + 1, cmp);//sort自定义函数排序,注意因为是从1到n所以是从S + 1 到S + n + 1排
34     for (int i = 1; i < n; i++) {
35         printf("%s\n",S[i].name.c_str());//c_str()将string串转为字符型再输出
36     }
37     printf("%s", S[n].name.c_str());//去掉末尾换行符(可忽略)
38     return 0; //好习惯
39 }
复制代码

 

posted @   白与花糖  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示