Bootstrap

面向对象试题带答案

阅读以下程序并填空 ,使其成为完整的程序 

1、下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。

class MyClass

{

public:

MyClass(int a);

~MyClass();

private:

int* X;

};

MyClass::MyClass(int a)

{

    ____(1)_____;

}

MyClass::~MyClassO

{

____(2)______;

}

2、请根据提示完成该类的定义

#include<iostream>

#include<cstring>

using namespace std;

class Student{

   char *name;

   int age;   

   int score;

public:

   char * Getname(){

       (3)   //返回学生姓名

   }

   int Getage(){  

        return age;   

   }

   int Getscore(){

       return score;

   }

   void display(){  //显示学生相关信息

(4) 

}

Student(char* n,int a,int s){ //分别用n,a和s初始化学生的姓名,年龄和成绩

name=new char[strlen(n)+1];

    strcpy(name,n);

    age=a;

    score=s;

   }

Student(const Student& s){  //拷贝构造函数

    name=new char[strlen(s.name)+1+6];

    strcpy(name,"copyof");

    strcat(name,s.name);

    age=s.age;    

    score=s.score;

   }

~Student(){ 

       (5)

   }

};

 编程题 

1、下图描述了A、B、C三个类的关系以及包含成员,定义这三个类。

2、设计并测试复数类(Complex)

  1. 设计一个复数类(Complex)包含两个数据成员:实部(real),虚部(imagin);

包含如下主要成员函数:

  • 构造函数(用来初始化一个复数对象,默认实部、虚部均为0);
  • 重载加、减法运算符(+、-)实现复数类的加、减法运算;
  • 显示复数对象,按a+bi(a为实部、b为虚部)格式输出一个复数对象。
  1. 请在主函数中使用所设计的复数类定义两个复数对象,求其和、差并输出。

答案

 阅读以下程序并填空 ,使其成为完整的程序 

(1) X=new int(a)

(2) delete X

(3) return name;

(4) cout<<"name:"<<name<<","<<"age:"<<age<<","<<"score:"<<score<<endl;

(5) delete[] name;

 编程题 

1、

class A

{public:

  int a;

void display( );

};

class B

{public:

  int a;

  void display( );

};

class C :public A,public B

{public :

  int b;

  void show();

};

2、

#include <iostream.h>

class complex

{

public:

        complex(double r=0.0,double i=0.0)

        {      real=r;             image=i;  }

        friend complex operator +(complex c1,complex c2);

        friend complex operator -(complex c1,complex c2);

        void display();

private:

        double real;

        double image;

};

complex  operator +(complex c1,complex c2)

{

        return complex(c1.real+c2.real,c1.image+c2.image);

}

complex  operator -(complex c1,complex c2)

{

        return complex(c1.real-c2.real,c1.image-c2.image);

}

void complex::display()

{

        if(image>0)

                cout<<real<<"+"<<image<<"i"<<endl;

        else if(image<0)

                        cout<<real<<image<<"i"<<endl;

                 else cout<<real<<endl;

}

int main()

{

        complex c1(5,4),c2(2,10),c3;

        cout<<"c1=";  c1.display();

        cout<<"c2=";  c2.display();

        c3=c1-c2;

        cout<<"c3=c1-c2=";       c3.display();

        c3=c1+c2;

        cout<<"c3=c1+c2=";      c3.display();

        return 1;

}

;