//就开始的时候在格式的输出有错误,实在是搞不懂“两个相邻测试数据间用一个空行隔开”如何表示,看了别人的代码才明白!
#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;
}
}
sicily 1482
最新推荐文章于 2015-09-24 11:20:25 发布