用c++某学校教师每月工资的计算公式如下:固定工资+课时补贴。 1. 教授(Professor)的固定工资为5000元,每个课时补贴50元; 2. 副教授(ViceProfessor)的固定工资为3000元,每个课时补贴30元; 3. 讲师(Tutor)的固定工资为2000元,每个课时补贴20元。 定义教师(Teacher)抽象类,派生不同职称的教师子类,编写程序求若干教师的月工资。
时间: 2024-02-18 15:04:49 浏览: 170
以下是使用 C++ 实现的一个可能的解决方案:
```cpp
#include <iostream>
using namespace std;
// 教师抽象类
class Teacher {
public:
virtual double getSalary() = 0; // 纯虚函数
};
// 教授类
class Professor : public Teacher {
public:
Professor(int hours) : courseHours(hours) {}
virtual double getSalary() {
return 5000 + courseHours * 50;
}
private:
int courseHours; // 课时
};
// 副教授类
class ViceProfessor : public Teacher {
public:
ViceProfessor(int hours) : courseHours(hours) {}
virtual double getSalary() {
return 3000 + courseHours * 30;
}
private:
int courseHours; // 课时
};
// 讲师类
class Tutor : public Teacher {
public:
Tutor(int hours) : courseHours(hours) {}
virtual double getSalary() {
return 2000 + courseHours * 20;
}
private:
int courseHours; // 课时
};
int main() {
Teacher *prof = new Professor(100);
Teacher *vp = new ViceProfessor(80);
Teacher *tut = new Tutor(60);
cout << "Professor's monthly salary: " << prof->getSalary() << endl;
cout << "ViceProfessor's monthly salary: " << vp->getSalary() << endl;
cout << "Tutor's monthly salary: " << tut->getSalary() << endl;
delete prof;
delete vp;
delete tut;
return 0;
}
```
上面的代码定义了一个抽象类 `Teacher` 和三个子类 `Professor`、`ViceProfessor` 和 `Tutor`,分别对应三种职称的教师。每个子类都实现了 `getSalary` 函数,用于计算月工资。在 `main()` 函数中创建了三个教师对象,并输出他们的月工资。
运行结果应该是:
```
Professor's monthly salary: 10000
ViceProfessor's monthly salary: 5400
Tutor's monthly salary: 3200
```
其中,教授的月工资为 10000 元,副教授的月工资为 5400 元,讲师的月工资为 3200 元。
阅读全文