1. (简答题) 编程题(运算符重载)。设计一个复数类,要求对其构造函数进行重载,并重载运算符+号,以便用于计算两个复数类对象的相加,再写一个类型转换函数,将复数类对象转化为一个复数实部的数值,再参与简单数值计算。
#include <iostream>
using namespace std;
class Complex{
double a; //实部
double b; //虚部
public:
double getA() const {
return a;
}
void setA(double a) {
Complex::a = a;
}
double getB() const {
return b;
}
void setB(double b) {
Complex::b = b;
}
public:
/*重载运算符'+'*/
Complex operator+(Complex x){
Complex ans(*this);
ans.a += x.a;
ans.b += x.b;
return ans;
}
/*类型转换函数*/
operator double(){
return this->a;
}
/*打印复数*/
static void printComplex(Complex x){
if (x.a == 0){
cout<<x.b<<"i"<<endl;
}
else if (x.b == 0){
cout<<x.a<<endl;
}
else{
cout<<x.a<<"+"<<x.b<<"i"<<endl;
}
}
};
int main()
{
return 0;
}
2. (简答题) 编程题(类对象的转换)。编写一个学生类和教师类信息输入/输出程序。学生类数据包括学号、姓名、班级、成绩;教师类数据包括编号、姓名、职称和部门。要求设计一个person类,作为学生类student和教师类teacher的基类,再写一个转换构造函数,可以把学生类对象转换为教师类对象,最后定义一个学生类对象和教师类对象。
#include <iostream>
using namespace std;
/**
* Person基类
*/
class Person{
string name; //姓名
public:
const string &getName() const {
return name;
}
void setName(const string &name) {
Person::name = name;
}
};
/**
* 学生类
*/
class Student : public Person{
string schoolNum; //学号
string classNum; //班级
int score; //成绩
public:
const string &getSchoolNum() const {
return schoolNum;
}
void setSchoolNum(const string &schoolNum) {
Student::schoolNum = schoolNum;
}
const string &getClassNum() const {
return classNum;
}
void setClassNum(const string &classNum) {
Student::classNum = classNum;
}
int getScore() const {
return score;
}
void setScore(int score) {
Student::score = score;
}
};
/**
* 教师类
*/
class Teacher : public Person{
string teacherNum; //教师编号
string title; //职称
string department; //部门
public:
const string &getTeacherNum() const {
return teacherNum;
}
void setTeacherNum(const string &teacherNum) {
Teacher::teacherNum = teacherNum;
}
const string &getTitle() const {
return title;
}
void setTitle(const string &title) {
Teacher::title = title;
}
const string &getDepartment() const {
return department;
}
void setDepartment(const string &department) {
Teacher::department = department;
}
/*转换构造函数*/
Teacher(Student student,string teacherNum,string title,string department){
Teacher::setName(student.getName());
Teacher::setTeacherNum(teacherNum);
Teacher::setTitle(title);
Teacher::setDepartment(department);
}
Teacher(){}
};
int main() {
system("chcp 65001");
//定义一个学生类对象
Student x;
x.setName("赵玥萱");
x.setClassNum("计科2班");
x.setSchoolNum("21408000xxx");
x.setScore(100);
//定义一个教师类对象
Teacher y;
y.setName("周美彤");
y.setDepartment("数学教学组");
y.setTitle("教授");
y.setTeacherNum("001");
return 0;
}