栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

PTA-宿舍谁最高? (25 分)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PTA-宿舍谁最高? (25 分)

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

输入格式:

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

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

输出格式:

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

注意宿舍号不足 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

struct Student{
	int num=-1;   //判断每一个宿舍中是否有人的标志
	char name[20];
	int height;
	int weight;
};

int main(){
	int sum=0, m, n;
	scanf("%d", &n);
	Student student[100], huancun;//我这里只开了100个空间的宿舍,如果测试数据量大可以增加
	while(n--){
		scanf("%d", &m);//输入宿舍号
		if(student[m].num==-1){//如果宿舍之前没有存储人
			student[m].num=m;//将宿舍号作为数组编号对其内部进行存放数据
			scanf("%s%d%d", &student[m].name, &student[m].height, &student[m].weight);
		}
		else{//宿舍之前存储有人
			huancun.num = m;
			scanf("%s%d%d", &huancun.name, &huancun.height, &huancun.weight);//将输入数据全部存到缓存数据中
			if(huancun.height>student[m].height){//判断新进来的和原来的谁更高
				student[m]=huancun;//留下身高更高的
			}
		}
	}
	for(int i=0;i<100;i++){//按数组顺序,恰好是宿舍编号从小到大输出
		if(student[i].num!=-1){//如果宿舍有入住,就对其输出
			printf("%06d %s %d %dn", student[i].num, student[i].name, student[i].height, student[i].weight);
		}
	}
	return 0;
} 

 内蒙古工业大学-----兰宇

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655808.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号