开门人和关门人
#include<stdio.h>
#include<string.h>
//-------------
#include<algorithm>
using namespace std;
/* sort必备头文件 */
int n,m;
struct pp
{
char id[20],dao[20],li[20];
}p[110000];
bool cmp1(pp x,pp y)/*bool 布尔类型,cmp1可自已定义成别的,pp为自己定义的结构体名,x,y可自定义 */
{
return strcmp(x.dao,y.dao)<0;/*返回x.dao的字典序小于y.dao的字典序 */
}
/*若比较int型,x.a<y.a表示从小到大排序 */
bool cmp2(pp x,pp y)
{
return strcmp(x.li,y.li)>0;
}
int main()
{
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
for(int i=0;i<m;i++)
scanf("%s %s %s",p[i].id,p[i].dao,p[i].li);
sort(p,p+m,cmp1);
printf("%s ",p[0].id);
sort(p,p+m,cmp2);/*sort默认从小到大排序,加cmp2,会按照上面cmp2函数返回所需 */
/*默认p从0开始,到m-1结束,若下标从1开始,则为sort(p+1,p+m+1,cmp2); */
printf("%s\n",p[0].id);
}
return 0;
}
这段代码展示了如何使用C++的sort函数对结构体数组进行排序,首先根据dao字段字典序升序排序,然后根据li字段字典序降序排序。主要涉及字符串比较和自定义排序函数。
396

被折叠的 条评论
为什么被折叠?



