平面上有4个圆,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。现输入任一点的坐标,判断该点是否在这4个圆中,如在则给出是在哪一个圆中。c语言
时间: 2024-09-30 21:12:06 浏览: 108
在C语言中,你可以使用欧几里得距离公式来计算任意一点到每个圆心的距离,然后比较这个距离与圆的半径(1)。如果距离小于等于1,则说明点在相应圆内。
以下是简单的步骤:
1. 定义一个函数 `distance(x1, y1, x2, y2)` 来计算两点之间的距离:
```c
#include <math.h>
double distance(int x1, int y1, int x2, int y2) {
return sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
}
```
2. 主函数中接受用户输入的点坐标`(x, y)`,并遍历所有四个圆:
```c
int main() {
int x, y; // 用户输入的点的坐标
printf("Enter the coordinates of the point (x, y): ");
scanf("%d %d", &x, &y);
int circle = -1; // 初始化,表示不在任何一个圆内
if (distance(x, y, 2, 2) <= 1) { // 圆心(2,2)
circle = 0;
}
else if (distance(x, y, -2, 2) <= 1) { // 圆心(-2,2)
circle = 1;
}
else if (distance(x, y, -2, -2) <= 1) { // 圆心(-2,-2)
circle = 2;
}
else if (distance(x, y, 2, -2) <= 1) { // 圆心(2,-2)
circle = 3;
}
if (circle == -1) {
printf("The point is not within any of the four circles.\n");
} else {
printf("The point is on the circle with center (%d, %d).",
(circle+2)%4*2, (circle+2)%4*(-1)); // 因为圆索引是从0开始的,所以需要转换
}
return 0;
}
```
阅读全文