C++实验题 下载本文

内容发布更新时间 : 2024/12/23 21:15:45星期一 下面是文章的全部内容请认真阅读。

for(int i = 0; i < number - 1; i++) {

for(int j = 0; j < number - 1 - i ; j++) {

if(*P[j+1] > *P[j]) {

base = P[j]; P[j] = P[j+1]; P[j+1] = base; } } }

if(number == 6) {

base = P[2]; P[2] = P[3]; P[3] = base; }

for(int i = 0; i < number; i++) {

P[i]->Show();

}

for(int i = 0; i < number; i++) {

delete P[i]; }

return 0; }

试题查看

标题: 虚函数 时 限: 3000 ms 内存限制: 10000 K 总时限: 3000 ms 描述:

利用虚函数实现多态:

(1)设计Person类,要求具有用于表示姓名的保护数据成员:string szName; 实现信息打印的公有成员函数:void Print()。其中,Print函数设计为虚函数,输出的信息格式为:“Person 姓名”。

(2)从Person类派生Student类,添加用于表示学号的保护数据成员:int iNumber;重定义用于信息打印的公有成员函数:void Print()。其中,Print函数输出的信息格式为:“Student 姓名 学号”。 (3)从 Person类派生Teacher类,添加用于表示教龄的保护数据成员:int iYear;重定义用于信息打印的公有成员函数:void Print()。其中,Print函数输出的信息格式为:“Teacher 姓名 教龄”。

(4)从Student类派生Graduate类,添加用于表示研究方向的保护数据成员:string szResearch;重定义用于信息打印的公有成员函数:void Print()。其中,Print函数输出的信息格式为:“Graduate 姓名 研究方向”。

在main函数中根据用输入的整数动态创建一个Person类的对象指针数组。用户依次输入对象信息(对象类别及其相应的数据成员值),根据对象类别动态创建相应的对象并赋给相应的对象指针数组元素。全部录入后,根据用户输入要显示的对象信息在数组中的位置,调用Print函数在屏幕上打印出相应对象的信息。如果用户输入“exit”,则退出。 对象指针数组的长度;

对象类型及对象信息(输入方式见输入样例);

输入:

要显示的对象在数组中的位置; exit。

输出: 用户要求显示的对象信息。

4

Person Zhang Student Zhao 200905

输入样例:

Graduate Li 200905 DataMining Teacher Luo 10 0 2

exit

Person Zhang

输出样例:

Graduate Li 200905 DataMining

提示: 基类的成员函数Print()定义成虚函数。 来源:

#include using namespace std; #include #include class Person {

public:

Person(string name) {

szName = name; }

virtual void Print() {

cout << \ }

virtual ~Person() {

} protected:

string szName; };

class Student: public Person {

public:

Student(string name,int number):Person(name) {

iNumber = number; }

void Print() {

cout << \ }

virtual ~Student() {

}

protected:

int iNumber; };

class Teacher: public Person {

public:

Teacher(string name,int IYear):Person(name) {

iYear = IYear; }

void Print() {

cout << \ }

virtual ~Teacher() {

} protected: int iYear; };

class Graduate: public Student {

public:

Graduate(string name,int number,string SzResearch):Student(name,number) {

szResearch = SzResearch; }

void Print() {

cout << \ << iNumber << ' ' << szResearch << endl; } protected:

string szResearch; };

int main() {

int Number;//记录个数 string type; int iNumber;

string name; int iYear;

string szResearch; cin >> Number; Person *P[Number];

for(int i = 0; i < Number; i++) {

cin >> type;

if(type == \ {

cin >> name;

P[i] = new Person(name); }

else if(type == \ {

cin >> name >> iNumber;

P[i] = new Student(name,iNumber); }

else if(type == \ {

cin >> name >> iNumber >> szResearch;

P[i] = new Graduate(name,iNumber,szResearch); }

else if(type == \ {

cin >> name >> iYear;

P[i] = new Teacher(name,iYear); } else {

cout << \输入类型错误,请重新输入!\ i = i - 1; } }

string choice; cin >> choice;

while(choice != \ {

int Choice = atoi(choice.c_str()); if(Choice >= Number) {

cout << \输入越界,请重新输入!\ }