Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
题目描述
设计一个点类Point,包含属性:x坐标和y坐标,方法:设定坐标(SetPoint),获取x坐标(GetX),获取y坐标(GetY)
设计一个圆类Circle,包含属性:圆心坐标x和y、半径r;方法包括:
1. 设定圆心(SetCenter),设置圆心x坐标和y坐标
2. 设定半径(SetRadius),设置半径长度
3. 计算面积(getArea),计算公式:面积=3.14*r*r
4. 计算周长(getLength),计算公式:周长=2*3.14*r
5. 包含(Contain),判断一个圆是否包含一个点,计算圆心到这个点的距离,然后和半径做比较,大于则不包含,小于等于则包含
注意:提交代码时必须用注释划分出三个区域:类定义、类实现、主函数,如下
//-----类定义------
class XXX
{ // 写类定义代码
};
//----类实现------
void XXX::Process()
{ // 写类定义代码
};
//-----主函数-----
int main()
{
//自定义一些变量
//创建一个圆对象和一个点对象
//输入圆对象和点对象的属性数值,并做初始化
//输出圆的面积和圆的周长
//输出圆是否包含点,包含则输出yes,否则输出no
return 0;
}
输入
第一行输入圆的三个参数:圆心的x和y坐标,半径
第二行输入点的两个参数:x和y坐标
输出
第一行输出圆的面积和周长,结果之间用空格隔开,输出精度到小数点后2位
第二行输出圆是否包含点,包含则输出yes,否则输出no
在C++中,输出指定精度的参考代码如下:
#include
#include //必须包含这个头文件
using namespace std;
void main( )
{ double a =3.141596;
cout<<fixed<<setprecision(3)<<a<<endl; //输出小数点后3位
输入样例1
1 1 1
2 2
输出样例1
3.14 6.28
no
思路分析
考查类的定义和类的数据成员引用以及类的成员函数使用。
一般把数据成员定义为私有型,把成员函数定义为公有型。
然后通过成员函数返回值来获取私有数据成员。
题目很长,要慢慢看。
代码中用到了this指针,这是因为为了把数据成员和同名的形式参数区分开。
AC代码
#include"iostream"
#include"iomanip"
using namespace std;
//-----类定义------
class Point
{
private:
int x,y;
public:
void SetPoint();
int GetX();
int GetY();
};
class Circle
{
private:
int x,y,r;
public:
void SetCenter();
void SetRadius();
float getArea();
float getLength();
void Contain(int x,int y);
};
//-----类实现------
void Point::SetPoint()
{
cin>>x>>y;
}
int Point::GetX()
{
return x;
}
int Point::GetY()
{
return y;
}
void Circle::SetCenter()
{
cin>>x>>y;
}
void Circle::SetRadius()
{
cin>>r;
}
float Circle::getLength()
{
return 2*3.14*r;
}
float Circle::getArea()
{
return 3.14*r*r;
}
void Circle::Contain(int x,int y)
{
if((this->x-x)*(this->x-x)+(this->y-y)*(this->y-y)>r*r)
cout<<"no";
else
cout<<"yes";
}
//-----主函数------
int main()
{
Point point;
Circle circle;
circle.SetCenter();
circle.SetRadius();
point.SetPoint();
cout<<fixed<<setprecision(2)<<circle.getArea()<<' '<<circle.getLength()<<endl;
circle.Contain(point.GetX(),point.GetY());
}