p1104

P1104 生日
思路:首先定义struct

struct stu{
    int year,mouth,day;
    string name;
}a[105];

然后cin
接着排序
最后输出
代码

#include<bits/stdc++.h>
using namespace std;
struct stu{
    int year,month,day,id;
    string name;
}a[105];
//返回true代表需要交换
bool needSwap(stu x,stu y){
    if(x.year!=y.year) return x.year>y.year;
    if(x.month!=y.month) return x.month>y.month;
    if(x.day!=y.day) return x.day>y.day;
    return x.id<y.id;//生日相同,输入靠前的换到后面
}
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].year>>a[i].month>>a[i].day;
        a[i].id=i;//记录输入顺序
    }
    //冒泡排序
    for(int i=1;i<n;i++){
        for(int j=1;j<=n-i;j++){
            if(needSwap(a[j],a[j+1])){
                swap(a[j],a[j+1]);
            }
        }
    }
    for(int i=1;i<=n;i++) cout<<a[i].name<<"\n";
    return 0;
}
posted @ 2026-08-01 19:23  屠桦  阅读(2)  评论(0)    收藏  举报