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位大学生按总分进行排名,并输出排名后的结果。
声明一个基类Student(学生)类
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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无用
悬赏问题
- ¥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编程架构设计的方案 有偿