> 文档中心 > 成长随心记16(65名学生的成绩由高到低排列,用STL实现)

成长随心记16(65名学生的成绩由高到低排列,用STL实现)

#include
#include
#include
class student {//学生
public:
    int Number;//学号
    double Score;//分数

};
class stuManager {//学生管理员
public:
    void initStu();//初始化
    void createStu();//创建65名学生
    void showStu();//展示65名学生及成绩
    vector v_student;//用于存放65名学生
};

void stuManager::initStu() {
    v_student.clear();
}
bool Greater(student s1,student s2) {//比较方式
    return s1.Score > s2.Score;
}
void stuManager::createStu() {
    srand((unsigned int)time(NULL) + rand());
    for (int i = 1; i <= 65;i++) {
        vector v_score;//用于存放10位老师评分
        for (int i = 0; i < 10; i++) {
            double goal = (rand() % 401 + 600) / 10;
            v_score.push_back(goal);
        }
        double avgScore = accumulate(v_score.begin(), v_score.end(),0.0f)/10;//求10位老师的平均数
        student s;
        s.Number = 10000 + i;
        s.Score = avgScore;
        v_student.push_back(s);
    }
}

void stuManager::showStu() {
    sort(v_student.begin(), v_student.end(),Greater);//按成绩高到底排序
    cout << "数据结构考试成绩如下:" << endl;
    for (vector ::iterator it = v_student.begin(); it != v_student.end(); it++) {
        cout << "学号:" <Number << " " << "分数:" <Score << endl;
    }
}
int main()
{
    stuManager mg;
    mg.initStu();
    mg.createStu();
    mg.showStu();
}