C58-结构体排序
原题链接:28705.NoteSC++2025-05-24 12:12:25
发布于:江苏
A30635.【结构体】【排序】年龄排序
#include <bits/stdc++.h>
using namespace std;
struct node{
string name, gender;
int y, m;
}a[105];
bool cmp(node x, node y){
if (x.y != y.y)
return x.y > y.y;
return x.m > y.m;
}
int main(){
int n;
cin >> n;
for (int i=0; i<n; i++){
cin>>a[i].name>>a[i].gender>>a[i].y>>a[i].m;
}
sort (a, a+n, cmp);
for (int i=0; i<n; i++){
cout<<a[i].name<<' '<<a[i].gender<<' '<<a[i].y<<' '<<a[i].m<< endl;
}
return 0;
}
A30636.【结构体】【排序】身高问题
#include<bits/stdc++.h>
using namespace std;
struct date{
string a;
int b,c;
} ;
bool cmp(date x,date y){
if(x.b!=y.b){
return x.b>y.b;
}
else{
return x.c<y.c;
}
}
int main(){
int n,i,j;
date m[101];
cin>>n;
for(i=1;i<=n;i++){
cin>>m[i].a>>m[i].b>>m[i].c;
}
sort(m+1,m+1+n,cmp);
cout<<m[1].a<<" "<<m[1].b<<" "<<m[1].c;
return 0;
}
A30609.【结构体】【排序】病人排队
#include<bits/stdc++.h>
using namespace std;
struct node{
string id;
int age;
int idx; //先后顺序
}a[105];
bool cmp(node x, node y)
{
// 1. 都是老年人
if (x.age>=60 && y.age >=60){
return x.age > y.age;
}
// 2. 都是非老年人
else if (x.age<60 && y.age<60){
return x.idx < y.idx;
}
// 3. 一个老年人另一个非老年人
else{
return x.age > y.age;
}
}
int main()
{
int n;
cin >> n;
for (int i=0; i<n; i++){
cin >>a[i].id>>a[i].age;
a[i].idx = i;
}
sort(a, a+n, cmp);
for (int i=0; i<n; i++){
cout << a[i].id <<endl;
}
return 0;
}
作业连接
作业提示
A30608.【结构体】【排序】合影效果
按照身高排序一次,输出的时候按照要求正序或者逆序遍历,if判断性别进行输出。
这里空空如也
有帮助,赞一个