sicily 1482

//就开始的时候在格式的输出有错误,实在是搞不懂“两个相邻测试数据间用一个空行隔开”如何表示,看了别人的代码才明白!
#include "iostream"
#include "algorithm"
using namespace std;

struct Info//学生信息的存储
{
	int num;
	int chinese;
	int math;
	int english;
	int sum;
};

int main()
{
	int StuNum;
	cin >> StuNum;
	while (1)
	{
		Info *StudentInfo = new Info[StuNum];
		for (int i = 0; i < StuNum; i++)
			StudentInfo[i].num = i + 1;
		for (int i = 0; i < StuNum; i++)//学生信息的输入
		{
			cin >> StudentInfo[i].chinese;
			cin >> StudentInfo[i].math;
			cin >> StudentInfo[i].english;
		}
		for (int i = 0; i < StuNum; i++)//学生信息的总分计算
			StudentInfo[i].sum = StudentInfo[i].chinese + StudentInfo[i].math + StudentInfo[i].english;
		Info temp;
		for (int i = 0; i < StuNum; i++)//得出前五名总分最高的学生
			for (int j = i+1; j < StuNum; j++)
			{
				if (StudentInfo[i].sum < StudentInfo[j].sum)
				{
					temp = StudentInfo[j];
					StudentInfo[j] = StudentInfo[i];
					StudentInfo[i] = temp;
				}
				if (StudentInfo[i].sum == StudentInfo[j].sum)//如果总分相等的情况
				{
					if (StudentInfo[i].chinese < StudentInfo[j].chinese)
					{
						temp = StudentInfo[j];
						StudentInfo[j] = StudentInfo[i];
						StudentInfo[i] = temp;
					}
					if (StudentInfo[i].chinese == StudentInfo[j].sum)//如果总分相等而且语文成绩又相等的情况
					{
						if (StudentInfo[i].num < StudentInfo[j].num)
						{
							temp = StudentInfo[j];
							StudentInfo[j] = StudentInfo[i];
							StudentInfo[i] = temp;
						}
					}
				}
			}
		for (int i = 0; i < 5; i++)
			cout << StudentInfo[i].num << " " << StudentInfo[i].sum << endl;
		if (cin >> StuNum)
			cout << endl;
		else
			break;
	}
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值