拿到问题先做分析:
1.点和圆的位置关系有几种:点在圆上、点在圆内、点在圆外
2.如何判断点在圆的什么位置:用点到圆心的距离D和圆的半径R做对比
D=R:点在圆上
D>R:点在圆外
D<R:点在圆内
3.点到圆心的距离D用代码怎么表示:两点之间距离公式
4.C++表示根号不方便怎么做:等式左右两边同时平方去根号
注意:圆心需要用X,Y坐标表示,所以先自定义一个数据类型point类,里面放X坐标和Y坐标给点和圆心用。
思维导图梳理

代码:
#include <iostream>
using namespace std;
//点类
class point //自定义 点类 数据类型
{
public:
//设置X坐标
void setX(int X)
{
m_X=X;
}
//获取X坐标
int getX()
{
return m_X;
}
//设置Y坐标
void setY(int Y)
{
m_Y=Y;
}
//获取Y坐标
int getY()
{
return m_Y;
}
private:
int m_X;
int m_Y;
};
//圆类
class circle
{
public:
//设置半径
void setR(int R)
{
m_R=R;
}
//获取半径
int getR()
{
return m_R;
}
//设置圆心
void setcenter(point center)
{
m_center=center;
}
//获取圆心
point getcenter()
{
return m_center;
}
private:
int m_R; //半径
point m_center; //圆心
};
//判断点和圆的关系(利用全局函数)
void isincircle(circle &c,point &p)
{
//计算两点之间距离的平方
int distance=
(c.getcenter().getX()-p.getX())*(c.getcenter().getX()-p.getX())+ //圆的圆心的X坐标
(c.getcenter().getY()-p.getY())*(c.getcenter().getY()-p.getY());
//计算半径的平方
int Rdistance=c.getR()*c.getR();
//判断两点之间距离和半径关系
if(distance=Rdistance)
{
cout<<"点在圆上"<<endl;
}
else if(distance>Rdistance)
{
cout<<"点在圆外"<<endl;
}
else
{
cout<<"点在圆内"<<endl;
}
};
int main()
{
//创建圆
circle c;
c.setR(10); //半径
point center; //圆心
center.setX(10);
center.setY(0);
c.setcenter(center);
//创建点
point p;
p.setX(10);
p.setY(10);
//判断关系
isincircle(c,p);
system("pause");
}
运行:

本文详细介绍了如何使用C++编程判断一个点与圆的位置关系,通过计算点到圆心的距离并与圆的半径比较,区分点在圆上、内、外的情况,并提供了自定义点和圆类的实例。

被折叠的 条评论
为什么被折叠?



