加载中...

浙江理工大学入队200题——16E

问题 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;
} 
posted @ 2022-10-30 10:46  shany212  阅读(25)  评论(0编辑  收藏  举报