编写一个程序,功能是对若干个同学的某门课程成绩进行排序。
要求定义一个学生类,类中私有成员有学生的编号及成绩;成员函数有建立数据、输入数据函数;编写一个友元函数能完成对成绩由高到低排序。
从键盘输入学生的个数、学号及一门课程的成绩,调用排序程序后,将排序后的结果输出。输入、输出格式如下:
输入:
3
1001 90
1002 80
1003 85
输出:
学号:1001 成绩:90
学号:1003 成绩:85
学号:1002 成绩:80
#include <iostream>
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;
}