C++编程题目 急求答案

C++编程题目 急求答案
1.编一个使用派生类的程序,使一个包含圆和圆柱的几何尺寸的类,它使用内部数据建立几何形状并显示它们的尺寸.面积和体积。
2.设计一个平面几何中点的位置类position,该类至少提供移动,求到另一点的距离(包括到原点的距离),求x坐标,求y坐标等操作。编一主函数检查它们。

/*
1.编一个使用派生类的程序,使一个包含圆和圆柱的几何尺寸的类,
它使用内部数据建立几何形状并显示它们的尺寸.面积和体积。
2.设计一个平面几何中点的位置类position,该类至少提供移动,
求到另一点的距离(包括到原点的距离),求x坐标,求y坐标等
操作。编一主函数检查它们。
*/

#include <stdio.h>
#include <math.h>

//圆类
class Circle
{
public:
float r;//半径
public:
//获取面积
float GetArea()
{
return 3.14159265 * r * r;
}
//输出半径,面积
virtual void ShowMsg()
{
printf("圆的半径为 %f ,面积为 %f\n",r,GetArea());
}
};

//圆柱类,从圆派生,多一个高度
class Cylinder : public Circle
{
public:
float h;//高
public:
//获取体积
float GetVolume()
{
//底面积乘高
return GetArea() * h;
}
//输出底面半径,底面积,高,体积
virtual void ShowMsg()
{
printf("圆柱的底面半径为 %f ,底面积为 %f ,高为 %f ,体积为 %f\n",
r,
GetArea(),
h,
GetVolume());
}
};

//平面内几何点Position类
class Position
{
private:
float x;//X坐标
float y;//Y坐标
public:
//设置X坐标
void SetX(float newX)
{
x = newX;
}
//设置Y坐标
void SetY(float newY)
{
y = newY;
}
//获取X及Y坐标
float GetX()
{
return x;
}
float GetY()
{
return y;
}
//计算到另外一个点的距离
float dist(Position b)
{
return sqrt( pow(b.x - x,2) + pow(b.y - y,2) );
}
};

void main(void)
{
//定义圆
Circle aCircle;
//定义圆柱
Cylinder aCylinder;

//设置圆的半径
aCircle.r = 3;
//输出圆的信息
aCircle.ShowMsg();

//设置圆柱底圆半径
aCylinder.r = 4;
//设置圆柱高
aCylinder.h = 5;
//输出圆柱的信息
aCylinder.ShowMsg();

//原点:
Position P1;
P1.SetX(0.0);
P1.SetY(0.0);
//X坐标为4,Y坐标为3的点,根据勾股定理可以知道,它到原点的距离为5,可以验证程序正确性
Position P2;
P2.SetX(4);
P2.SetY(3);
//求P2到P1的距离
printf("P2(%f,%f)到P1(%f,%f)的距离为%f\n",P2.GetX(),P2.GetY(),P1.GetX(),P1.GetY(),P2.dist(P1));
//也可以设置P2的坐标为第二象限的(-4,3)点来验证
P2.SetX(-4);
P2.SetY(3);
//求P2到P1的距离
printf("P2(%f,%f)到P1(%f,%f)的距离为%f\n",P2.GetX(),P2.GetY(),P1.GetX(),P1.GetY(),P2.dist(P1));
//第三象限及第四象限同理
P2.SetX(-4);
P2.SetY(-3);
//求P2到P1的距离
printf("P2(%f,%f)到P1(%f,%f)的距离为%f\n",P2.GetX(),P2.GetY(),P1.GetX(),P1.GetY(),P2.dist(P1));
P2.SetX(4);
P2.SetY(-3);
//求P2到P1的距离
printf("P2(%f,%f)到P1(%f,%f)的距离为%f\n",P2.GetX(),P2.GetY(),P1.GetX(),P1.GetY(),P2.dist(P1));

getchar();
}
温馨提示:答案为网友推荐,仅供参考
相似回答