问题 E: 零基础学C/C++175——身高问题
题目描述
输入n个学生的信息,每个学生信息包括姓名、身高、学号。请编程输出身高最高的学生的信息。
输入
第1行一个正整数n,表示学生人数,n<=100
以下n行,每一行依次输入学生的姓名、身高、学号
输出
输出身高最高的学生信息,如果存在身高一样的,请输出学号小的那个同学
样例输入 Copy
5
John 172 20160302
David 173 20160306
Jason 168 20160309
Jack 152 20160311
Kitty 147 20160319
样例输出 Copy
David 173 20160306
题解
与前面问题 B: 零基础学C/C++171——年龄排序问题>https://www.cnblogs.com/codeshany/p/zstu_200_16B.html<相同,使用sort函数自定义cmp轻松解决。
当然也有人卡在编译错误这个问题上,你在输出字符串name的时候会不会遇到这个问题?
<>
具体原因请看>https://blog.csdn.net/weixin_43892514/article/details/104232189<这里不做过多解释(太长了)
只要我们在name后面加上c.str()就顺利输出了
<
代码(AC)
点击查看代码
#include<bits/stdc++.h>
using namespace std;
struct node
{
string name;
int h,id;
}st[1000];
bool cmp(node x,node y)
{
if(x.h == y.h ) return x.id < y.id;
else return x.h>y.h;
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>st[i].name>>st[i].h>>st[i].id;
sort(st,st+n,cmp);
printf("%s %d %d\n",st[0].name.c_str(),st[0].h,st[0].id);
return 0;
}