这是一个考察关于继承和多态特性的题目,已知平面上点Point的详细定义,根据程序要求的输入和输出,请你设计其派生圆(Circle)和圆的派生类圆柱(Cylinder)的定义。
类的定义:
class Point{
int x, y;
public:
Point(int a=0, int b=0): x(a), y(b){}
virtual double area() {return 0.0; };
virtual double volume() { return 0.0; }
};
class Circle: public Point{
...
};
class Cylinder: public Circle{
...
};
裁判测试程序样例:
#include <iostream>
using namespace std;
const double pi = 3.14159;
class Point{
int x, y;
public:
Point(int a=0, int b=0): x(a), y(b){}
virtual double area() {return 0.0; }
virtual double volume() { return 0.0; }
};
/* 你的答案将插入这里,你需要给出类Circle和Cylinder的完整定义,包括必须的数据成员和成员函数 */
int main()
{
int x, y; double r, h;
cin >> x >> y >> r >> h;
Point* p = new Circle(r, x, y);
cout << "Circle Area:" << p->area() << endl;
delete p;
p = new Cylinder(h, r, x, y);
cout << "Cylinder Area:" << p->area() << " and Volume:" << p->volume() << endl;
delete p;
return 0;
}
输入样例:
0 1 2 3
输出样例:
Circle Area:12.5664
Cylinder Area:62.8318 and Volume:37.6991
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB