1004 成绩排名

本文介绍了一种高效的方法来找到一组学生中的最高分和最低分学生,通过使用变量或结构体数组来存储和比较成绩,实现了快速查找。文章提供了两种实现方式的代码示例,一种是使用变量直接比较,另一种是利用结构体数组记录每个学生的详细信息。
摘要由CSDN通过智能技术生成

在这里插入图片描述
这道题其实很简单,对于读入数据的条数,题目只说了n>0,试了一下做一个一万的数组就满分了,不存在之前写1002的时候有很大的数据。解法上要么直接用结构体和数组来做,要么直接定义变量也能写。其实这两种解法蕴含着两种不同的思维方式。对于用变量来做,只需要提前定义一个最大值和最小值,在输入数据不断与最值进行比较,更新最值,最后就能得结果,他不需要储存数据,用完就丢弃。而如果用结构体的话,可以先定义个结构体数组,记下最值的位置,最后在数组中用哪个位置来输出。像这种只有三个成员用不用结构体都无所谓,代码的简洁性上没有什么区别。下面给出两种代码。
注意下面的只能写if和if不能写if-else if,自己想想为什么。

1.定义变量

#include<iostream>
#include<string>
using namespace std;

int main()
{
	int n;
	cin >> n;
	string min_name, min_number, max_name, max_number,name,number;
	int min_score=101, max_score=-1,score;                     //保证只要输入合法的0-100的分数,min和max都可以更新
	for (int i = 0; i < n; i++)
	{
		cin >> name >> number >> score;           //将当前的三个信息输入
		if (score < min_score)
		{
			min_name = name;
			min_number = number;
			min_score = score;
		}
		if (score > max_score)
		{
			max_name = name;
			max_number = number;
			max_score = score;
		}
	}
	cout << max_name << " " << max_number << endl;
	cout << min_name << " " << min_number<<endl;
    return 0;
}

2.结构体


#include<iostream>
#include<string>
using namespace std;

struct student
{
	string name, number;
	int score;
};

int main()
{
	student s[10000];
	int n,max=-1,min=101,max_position,min_position;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> s[i].name >> s[i].number >> s[i].score;
		if (s[i].score > max)
		{
			max = s[i].score;
			max_position = i;
		}
		if (s[i].score < min)
		{
			min = s[i].score;
			min_position = i;
		}
	}
	cout << s[max_position].name << " " << s[max_position].number<<endl;
	cout << s[min_position].name << " " << s[min_position].number << endl;
	return 0;

}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值