C++第七次PTA练习题总结(1)

  1. 在protected保护继承中,对于垂直访问等同于公有继承,对于水平访问等同于私有继承
    T
  2. A has-a relationship is implemented via inheritance.
    F, has-A关系是通过继承实现的
  3. 类的组合关系可以用“Has-A”描述;类间的继承与派生关系可以用“Is-A”描述。
    T
  4. 下列程序的执行结果为
    #include
    using namespace std;
    class A {
    public:
    A() { cout << “1”; }
    ~A() { cout << “2”; }
    };
    class B: public A {
    public:
    B() { cout << “3”; }
    ~B() { cout << “4”; }
    };
    int main() {
    B b;
    return 0;
    }
    A1234
    B1324
    C1342
    D3142
    C
  5. 下列关于派生类构造函数和析构函数的说法中,错误的是
    A派生类的构造函数会隐含调用基类的构造函数
    B如果基类声明了带有形参表的构造函数,则派生类就应当声明构造函数
    C在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
    D在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数
    D
  6. 建立派生类对象时, 3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为
    Aabc
    Bacb
    Ccab
    Dcba
    A
  7. 从shape类派生出一个直角三角形类RTriangle
    从shape类派生出一个直角三角形类RTriangle类(regular triangle)。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
    class shape {// 抽象类
    public:
    virtual double getArea()=0;// 求面积
    virtual double getPerimeter()=0; // 求周长
    };
    直角三角形类名:RTriangle
    直角三角形类的构造函数原型如下: RTriangle(double a, double b);
    其中 a 和 b 都是直角三角形的两条直角边。
    裁判测试程序样例:
    #include
    #include
    using namespace std;
    class shape {// 抽象类
    public:
    virtual double getArea()=0;// 求面积
    virtual double getPerimeter()=0; // 求周长
    };
    //你提交的代码将嵌入到这里
    int main()
    {
    double a,b;
    cin>>a>>b;
    RTriangle t(a,b);
    cout< cout< }
    输入样例:
    在这里填写一组输入
    3 4
    输出样例:
    在这里填写相应的输出
    12
    12
class RTriangle:public shape{
    private:
        double a,b;
    public:
        RTriangle(double c,double d)
        {
            a=c;
            b=d;
        }
     double getArea()
     {
         return a*b/2;
        }
        double getPerimeter()
        {
            return a+b+sqrt(a*a+b*b);
        }
};

  1. 从shape类派生出一个圆形类Circle
    请从下列shape类派生出一个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造函数。圆周率PI取3.1415926。
    class shape {
    public:
    double getArea(){ return -1; };
    double getPerimeter(){ return -1 };
    }
    圆形类名Circle
    裁判测试程序样例:
    #include
    using namespace std;
    class shape {
    public:
    double getArea(){ return -1 };// 求面积
    double getPerimeter(){ return -1 }; // 求周长
    };
    /* 你提交的代码将被嵌入到这里 /
    int main() {
    double r;
    cin>>r;
    Circle c®;
    cout< cout< return 0;
    }
    /
    请在这里填写答案 */
    输入样例:
    在这里填写一组输入
    2.78
    输出样例:
    在这里填写相应的输出
    24.2795
    17.4673
const double  pi = 3.1415926;

class Circle : public shape{
public:
    Circle(){}
    Circle(double a):r(a){}
    double getArea()
    { 
        return pi * r * r; 
    }
    double getPerimeter()
    { 
        return 2.0 * pi * r;  
    } 
private:
    double r;
};

  1. 计算圆柱体的表面积(函数名隐藏)
    Cylinder类是Circle类的派生类,在下面的程序中计算并输出了圆柱体的表面积。请阅读理解下面的程序。将下面的Cylinder类补充完整后提交。
    Cylinder类的定义:
    class Cylinder :public Circle{
    double height;
    public:

    };
    你提交的Cylinder类的定义将嵌入到下面的程序中:
    #include
    using namespace std;
    const double PI=3.1415926;
    class Circle{
    protected:
    double radius;
    public:
    Circle(double r){
    radius=r;
    }
    double getArea(){
    return PIradiusradius;
    }
    };
    // 你提交的代码将嵌入在这里
    int main()
    {
    double r,h;
    cin>>r>>h;
    Cylinder Cy1(r,h) ;
    cout< return 0;
    }
    输入样例:
    3.5 4.2
    输出样例:
    106.369
class Cylinder :public Circle{
public:
    Cylinder(double r, double h):Circle(r),height(h){}
    double getArea()
    {
        return PI*radius*radius * 2  + 2.0 * PI * radius * height;
    }
private:
    double height;
};

  1. 狗的继承
    完成两个类,一个类Animal,表示动物类,有一个成员表示年龄。一个类Dog,继承自Animal,有一个新的数据成员表示颜色,合理设计这两个类,使得测试程序可以运行并得到正确的结果。
    函数接口定义:
    按照要求实现类
    裁判测试程序样例:
    /* 请在这里填写答案 */
    int main(){
    Animal ani(5);
    cout<<“age of ani:”< Dog dog(5,“black”);
    cout<<“infor of dog:”< dog.showInfor();
    }
    输入样例:

    输出样例:
    age of ani:5
    infor of dog:
    age:5
    color:black
#include  
#include  
using namespace std; 

class Animal
{ 
  protected: 
    int age; 
  public: 
    Animal(int age1)
    { 
      age=age1;
    } 
    ~Animal(){} 
    int getAge()
    { 
      return age;
    } 
}; 
class Dog:public Animal{ 
  private: 
    char color[100]; 
    int age1; 
  public: 
    Dog(int age1,char color1[]):Animal(age1) 
    { 
      age=age1; 
      strcpy(color,color1); 
    } 
    ~Dog(){} 
    void showInfor() 
    { 
      cout<<"age:"<<getAge()<<endl; 
      cout<<"color:"<<color<<endl; 
    } 
};

你可能感兴趣的:(C++)