PTA面向对象程序设计 7-1 宿舍谁最高?

题目:

学校选拔篮球队员,每间宿舍最多有 4 个人。现给出宿舍列表,请找出每个宿舍最高的同学。定义一个学生类 Student,有身高 height,体重 weight 等。

输入格式:

首先输入一个整型数 n (1≤n≤106),表示有 n 位同学。

紧跟着 n 行输入,每一行格式为:宿舍号 name height weight
宿舍号的区间为 [0, 999999], name 由字母组成,长度小于 16,heightweight 为正整数。

输出格式:

按宿舍号从小到大排序,输出每间宿舍身高最高的同学信息。题目保证每间宿舍只有一位身高最高的同学。

注意宿舍号不足 6 位的,要按 6 位补齐前导 0。

输入样例:

7
000000 Tom 175 120
000001 Jack 180 130
000001 Hale 160 140
000000 Marry 160 120
000000 Jerry 165 110
000003 ETAF 183 145
000001 Mickey 170 115

输出样例:

000000 Tom 175 120
000001 Jack 180 130
000003 ETAF 183 145

代码:

#include<bits/stdc++.h>
using namespace std;
class Student{
	public:
		int height,weight;
		string name;
		int sushe;
		void get(int s1,string s2,int h,int w) {sushe=s1;name=s2;height=h;weight=w;}
		void print() {
		cout <<setw(6)<<setfill('0')<<sushe<<" "<<name<<" "<<height<<" "<<weight<<endl;
		}
};
int cmp(Student a,Student b)
{
	if(a.sushe<b.sushe) return 1;
	else
	{
		if(a.sushe==b.sushe)
		{
			if(a.height>b.height) return 1;
			else return 0;
		}
		else return 0;
	}
}
int main()
{
	int n;
	cin>>n;
	Student ans[n+1];
	for(int i=1;i<=n;i++)
	{
		string na;
		int he,we,su;
		cin>>su>>na>>he>>we;
		ans[i].get(su,na,he,we);
	}
	sort(ans+1,ans+1+n,cmp);
	int s;
	s=ans[1].sushe;
	ans[1].print();
	for(int i=1;i<=n;i++)
	{
		if(ans[i].sushe!=s){
			s=ans[i].sushe;
			ans[i].print();
		}
	}
	return 0;
}

小结

将宿舍号定义为整型输入,在输出时使用cout <<setw(6)<<setfill(‘0’),将不足六位的空位用‘0’补齐。

评论

  1. Windows Chrome 86.0.4240.198
    10月前
    2022-12-09 15:27:09

    请问:这个程序会在哪里有应用

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇