学生成绩排序

编写一个程序,功能是对若干个同学的某门课程成绩进行排序。

   要求定义一个学生类,类中私有成员有学生的编号及成绩;成员函数有建立数据、输入数据函数;编写一个友元函数能完成对成绩由高到低排序。

    从键盘输入学生的个数、学号及一门课程的成绩,调用排序程序后,将排序后的结果输出。输入、输出格式如下:

输入:

3

1001 90

1002 80

1003 85

输出:

学号:1001 成绩:90

学号:1003 成绩:85

学号:1002 成绩:80

#include 
using namespace std;

class Student
{
public:
	Student(int id = 0, int grade = 0)
		:m_id(id),m_grade(grade)
		{}
	void input(void);
	int id(void)const{return m_id;}
	int grade(void)const{return m_grade;}
	
	friend void sort(Student *std, int n);
private:
	int m_id;
	int m_grade;
};

int main()
{
	int num;
	int in_id;
	int in_grade;
	cin>>num;
	Student *c_stu = new Student[num];
	for (int i=0; i<num; i++)
	{
		c_stu[i].input();
	}
	sort(c_stu, num);
	for (int i=0; i<num; i++)
	{
		cout<<"学号:"<<c_stu[i].id()<<"  成绩:"<<c_stu[i].grade()<<endl;
	}
	return 0;
}

void sort(Student *std, int n)
{
	int i,j;
	for (i=1; i<n; i++)
	{
		Student temp=std[i];
		for (j=i-1; j>=0; j--)
		{
			if (std[j].m_grade >= temp.m_grade)
			{
				break;
			}
			std[j+1] = std[j];
		}
		std[j+1] = temp;
	}
}

void Student::input(void)
{
	cin>>m_id>>m_grade;
}

你可能感兴趣的:(C++习题实践)