睿明乎哦iun 2021-12-30 00:00 采纳率: 100%
浏览 195
已结题

声明一个基类Student(学生)类

1、声明一个基类Student(学生)类,声明一个派生出新类college_student (大学生)类,并继承Student(学生)类,要求:
(1) 在Student类中包括:num(学号),name(姓名),sex(性别)等成员数据,viod display();(输出学生学号,姓名,性别)函数成员,构造函数自己设计。
(2) 在派生出新类college_student (大学生)类中包括:Chinese(语文分),math(数学分),computer(计算机分)等成员数据,float total_score();(统计一个大学生的三科总分)。
(3) 建立一个对象数组,内放5位大学生的数据(学号、姓名、性别、语文分、数学分、计算机分),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中总成绩最高者,并输出该学生的所有信息(学号、姓名、性别、语文分、数学分、计算机分,及总分)。
(4) 对5位大学生按总分进行排名,并输出排名后的结果。

  • 写回答

2条回答 默认 最新

  • stone_wangzx 2021-12-30 17:26
    关注
    
    #include <string>
    #include <iostream>
    using namespace std;
    
    class Student {
    public:
        Student(int num, string name, bool is_male): num_(num), name_(name), sex_(is_male) {}
        virtual ~Student() {}
        
        virtual void display(void) {
            cout << "学号:" << num_ << " 姓名:" << name_ << " 性别:" << sex() << endl;
        }
    
        string sex()
        {
            return sex_ ? "男" : "女";
        }
    
        int num() { return num_; }
    
        string name() { return name_; }
    
    private:
        int num_ = 0;//序号
        string name_;//姓名
        bool sex_;//性别, true 男 false 女
    };
    
    class college_student
        : public Student {
    public:
        college_student(int num, string name, bool is_male, float chinese, float math, float computer)
            : Student(num, name, is_male)
            , chinese_(chinese)
            , math_(math)
            , computer_(computer) {}
        ~college_student() {}
    
        void display() {
            Student::display();
            cout << "chinese = " << chinese_ << " math = " << math_ << " computer = " << computer_ << " total = " << total_score() << endl;
        }
        float total_score() { return chinese_ + math_ + computer_; }
    
    private:
        float chinese_ = 0.0;
        float math_ = 0.0;
        float computer_ = 0.0;
    };
    
    college_student students[] = {
        {1, "张三丰", true, 88.5, 90.0, 77.0},
        {2, "王晓红", false, 88, 91.0, 87.0},
        {3, "段誉", true, 68.5, 90.0, 76.0},
        {4, "王重阳", true, 83.5, 93.0, 97.0},
        {5, "林黛玉", false, 82.5, 92.0, 97.0},
    };
    
    void max(college_student* students, int count)
    {
        float score = 0.0;
        college_student* pStu = students;
        for (int i=0;i<count; ++i)
        {        
            if (pStu->total_score() > students[i].total_score())
            {
                pStu = &students[i];
            }        
        }
        pStu->display();
    }
    
    void sort(college_student* students, int count) 
    {
        college_student** tempArray = new college_student*[count];
        //copy
        for (int i=0; i<count; ++i)
        {
            tempArray[i] = &students[i];
        }
        //sort
        for (int i=0; i<count - 1; ++i)
        {
            for (int j= 0; j<count - 1 - i; ++j)
            {
                if (tempArray[j] < tempArray[j + 1])
                {
                    college_student* temp = tempArray[j];
                    tempArray[j] = tempArray[j + 1];
                    tempArray[j + 1] = temp;
                }            
            }
        }
        //print
        for (int i = 0; i < count; ++i)
        {
            tempArray[i]->display();
        }
    
        delete[] tempArray;
    }
    
    int main() {
        //max
        max(students, sizeof(students) / sizeof(college_student));
        //sort
        sort(students, sizeof(students) / sizeof(college_student));
    
        //wait
        int i = 0;
        cin >> i;
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月7日
  • 已采纳回答 12月30日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿