PAT (Basic Level) Practice (中文) 1004 成绩排名 (20 分)

举报
花花叔叔 发表于 2022/08/12 23:29:05 2022/08/12
【摘要】 题目描述 读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第...

题目描述

读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:

每个测试输入包含 1 个测试用例,格式为

第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
… … …
第 n+1 行:第 n 个学生的姓名 学号 成绩
其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:

对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。

输入样例:

3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95
结尾无空行

输出样例:

Mike CS991301
Joe Math990112
结尾无空行

代码

#include<bits/stdc++.h>
using namespace std;
struct student {
	char name[15];
	char id[15];
	int score;
} temp,ans_min,ans_max ;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	int n;
	scanf("%d",&n);
	ans_min.score=100;
	ans_max.score=-1;
	for(int i=0;i<n;i++)
	{
		scanf("%s %s %d",&temp.name,&temp.id,&temp.score);
		if(temp.score<ans_min.score)
		{
			ans_min=temp;
		}
		if(temp.score>ans_max.score)
		{
			ans_max=temp;
		}
	}
	printf("%s %s\n",ans_max.name,ans_max.id);
	printf("%s %s\n",ans_min.name,ans_min.id);
	return 0;
 } 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

分析

找出最大值和最小值,刚开始想到的是使用数组下标最为分数,使用结构体数组存储,但是太占用存储空间,改进使用三个变量进行存储,一个是读入数据temp,还有一个是最大值,还有一个是最小值,每读入一个数据就要进行比较大小,之后将数据刷新,最后将数据打印。

总结

找最大最小时候,可以直接使用覆盖数据来进行。

文章来源: blog.csdn.net,作者:花花叔叔,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_52077949/article/details/119783186

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。