C++实验---成绩排序

成绩排序

Description

定义Student类:

数据成员string name和int score表示一个学生的姓名、成绩。

无参构造函数。

void setStudent(string,int)方法,用于设置一个学生的属性值。

重载>(大于运算符)。Student类的对象A和B的大小关系,A>B定义为A.score>B.score,或者A.score=B.score但A.name<B.name。

5.重载运算符<<用于输出学生信息:先输出成绩再输出姓名,中间用一个空格隔开。

Input

分多行。第一个M>0表示有M个学生信息。

之后有M行,每一行是一个学生信息。第一部分是学生姓名,第二部分是学生成绩。

Output

输出为M行,按照从大到小的顺序依次输出每个学生的成绩、姓名。假定不存在重名的学生。

Sample Input

5
Tom 98
Jack 97
Mary 98
Sherry 99
Dock 97

Sample Output

99 Sherry
98 Mary
98 Tom
97 Dock
97 Jack

题目给定代码

int main()
{
    
    
    int cases;
    string name;
    int score;
    cin>>cases;
    Student students[cases], temp;
    for (int i = 0; i < cases; i++)
    {
    
    
       cin>>name>>score;
       students[i].setStudent(name, score);
    }
    for (int i = 0; i < cases; i++)
    {
    
    
        for (int j = 0; j < cases - i - 1; j++)
        {
    
    
            if (!(students[j] > students[j + 1]))
            {
    
    
                temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }
    for (int i = 0; i < cases; i++)
        cout<<students[i]<<endl;
    return 0;
}

code:

#include<iostream>

using namespace std;

class Student{
    
    
	string name;
	int score;
public:
	Student(){
    
    
		name="lisi";
		score=100;
	}
	
	void setStudent(string Name,int Score){
    
    
		name=Name;
		score=Score;
	}
	
	friend bool operator >(Student A,Student B){
    
    
		if(A.score!=B.score){
    
    
			return A.score>B.score;
		}else{
    
    
			return A.name<B.name;
		}
	}
	
	friend ostream& operator <<(ostream &os,const Student &s){
    
    
		os<<s.score<<' '<<s.name;
		return os;
	}
};

int main()
{
    
    
    int cases;
    string name;
    int score;
    cin>>cases;
    Student students[cases], temp;
    for (int i = 0; i < cases; i++)
    {
    
    
       cin>>name>>score;
       students[i].setStudent(name, score);
    }
    for (int i = 0; i < cases; i++)
    {
    
    
        for (int j = 0; j < cases - i - 1; j++)
        {
    
    
            if (!(students[j] > students[j + 1]))
            {
    
    
                temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }
    for (int i = 0; i < cases; i++)
        cout<<students[i]<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/timelessx_x/article/details/115050146