CPP2022-25-继承与派生(中)

简介: CPP2022-25-继承与派生(中)

 

 

6-1 狗的继承

分数 2

全屏浏览题目

切换布局

作者 杨军

单位 四川师范大学

完成两个类,一个类Animal,表示动物类,有一个成员表示年龄。一个类Dog,继承自Animal,有一个新的数据成员表示颜色,合理设计这两个类,使得测试程序可以运行并得到正确的结果。

函数接口定义:

按照要求实现类

裁判测试程序样例:

/* 请在这里填写答案 */ int main(){ Animal ani(5); cout<<"age of ani:"<<ani.getAge()<<endl; Dog dog(5,"black"); cout<<"infor of dog:"<<endl; dog.showInfor(); }

输入样例:

输出样例:

1. age of ani:5
2. infor of dog:
3. age:5
1. #include<bits/stdc++.h>
2. using namespace std;
3. class Animal
4. {
5. private:
6. int age;
7. public:
8. Animal (int a)
9.     {
10.         age=a;
11.     }
12. int getAge()
13.     {
14. return age;
15.     }
16. };
17. class Dog:public Animal
18. {
19. private:
20.     string color;
21. public:
22. Dog (int age,string c):Animal(age)
23.     {
24.         color=c;
25.     }
26. void showInfor()
27.     {
28.         cout<<"age:"<<getAge()<<endl<<"color:"<<color<<endl;
29.     }
30. };

 

6-2 使用类输出图形

分数 5

全屏浏览题目

切换布局

作者 刘骥

单位 重庆大学

声明一个图形基类 Shape,在它的基础上派生出矩形类 Rectangle 和圆形类 Circle,他们都有计算面积和周长、输出图形信息等成员函数,再在 Rectangle 类的基础上派生出正方形类 Square。编写程序完成各类的定义和实现,以及类的使用。

注意:

题目中定义的所有数值类型的变量都使用 double 类型

π的值为 3.14159

测试程序样例:

#include <iostream> #define PI 3.14159 using namespace std; class Shape{ public: double getArea(){return 0;} double getPerimeter(){return 0;} }; class Rectangle:public Shape { protected: double height; double width; public: Rectangle() {}; Rectangle(double _height, double _width) { height = _height; width = _width; } double getArea(){ return height * width; } double getPerimeter(){ return 2 * (height + width); } void Print(){ cout << "Width=" << width << ",Height=" << height << endl; } }; /* 请在这里填写答案 */ int main() { double ra, rb; cin >> ra >> rb; Rectangle r1(ra, rb); double sa; cin >> sa; Square s1(sa); double ca, cb, cc; cin >> ca >> cb >> cc; Circle c1(ca, cb, cc); cout << "Rectangle" << endl; r1.Print(); cout << "Area=" << r1.getArea() << endl; cout << "Perimeter=" << r1.getPerimeter() << endl ; cout << "Square" << endl; s1.Print(); cout << "Area=" << s1.getArea() << endl; cout << "Perimeter=" << s1.getPerimeter() << endl; cout << "Circle" << endl; c1.Print(); cout << "Area=" << c1.getArea() << endl; cout << "Perimeter=" << c1.getPerimeter() << endl; return 0; }

输入样例:

在这里给出一组输入。例如:

1. 4 2.5
2. 8
3. 4 5 6.5

输出样例:

1. Rectangle
2. Width=2.5,Height=4
3. Area=10
4. Perimeter=13
5. Square
6. Side=8
7. Area=64
8. Perimeter=32
9. Circle
10. Center=[4,5],Adius=6.5
11. Area=132.732
12. Perimeter=40.8407

提示

需要补充的类定义如下:

class Square:public Rectangle{ //...... }; class Circle: public Shape{ //...... };

1. class Square:public Rectangle
2. {
3. private:
4. int side;
5. public:
6. Square (int s)
7.    {
8.      side=s;
9.    }
10. void Print()
11.    {
12.      cout<<"Side="<<side<<endl;
13.    }
14. int getArea()
15.    {
16. return side*side;
17.    }
18. int getPerimeter()
19.    {
20. return 4*side;
21.    }
22. };
23. class Circle: public Shape
24. {
25. private:
26. int x;
27. int y;
28. float adius;
29. public:
30. Circle (int x0,int y0,float a)
31.    {
32.       x=x0;
33.       y=y0;
34.       adius=a;
35.    }
36. void Print()
37.    {
38.      cout<<"Center=["<<x<<","<<y<<"],Adius="<<adius<<endl;
39.    }
40. double getArea()
41.    {
42. return PI*adius*adius;
43.    }
44. double getPerimeter()
45.    {
46. return 2*PI*adius;
47.    }
48. };
相关文章
|
程序员 C++
28.【C++ 继承与派生 (详解)】(一)
28.【C++ 继承与派生 (详解)】
87 0
|
C++
28.【C++ 继承与派生 (详解)】(二)
28.【C++ 继承与派生 (详解)】
68 0
|
7月前
|
安全 Java 编译器
C++:继承与派生
C++:继承与派生
|
4月前
|
C++
CPP语法(四)——类的声明和定义
CPP语法(四)——类的声明和定义
41 0
|
4月前
|
程序员 C++
CPP语法(五)——类的继承
CPP语法(五)——类的继承
26 0
|
7月前
|
C++
【C++】——继承和派生
【C++】——继承和派生
|
7月前
|
C++
CPP的继承和多态
CPP的继承和多态
56 0
|
7月前
|
程序员 C++
48继承与派生
48继承与派生
48 0
C++中的继承和派生
C++ 中的继承是类与类之间的关系,是一个很简单很直观的概念,与现实世界中的继承类似,例如儿子继承父亲的财产。 继承(Inheritance)可以理解为一个类从另一个类获取成员变量和成员函数的过程。例如类 B 继承于类 A,那么 B 就拥有 A 的成员变量和成员函数。 在C++中,派生(Derive)和继承是一个概念,只是站的角度不同。继承是儿子接收父亲的产业,派生是父亲把产业传承给儿子。 被继承的类称为父类或基类,继承的类称为子类或派生类。“子类”和“父类”通常放在一起称呼,“基类”和“派生类”通常放在一起称呼。 派生类除了拥有基类的成员,还可以定义自己的新成员,以增强类的功能。