定义一个点 Point 类,有点坐标属性(x, y),再定义一个矩形 Rectangle 类,其 属性为两个 Point 点(分别表示矩形对角线上两点的坐标),及含有计算矩形的周 长及面积的成员函数;,请用c++完成这个编程问题
时间: 2023-06-03 20:04:04 浏览: 645
好的,这是一个比较简单的编程问题,这里给您提供一个 C 语言的实现代码,供您参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 定义点 Point 类
typedef struct Point {
int x;
int y;
} Point;
// 定义矩形 Rectangle 类
typedef struct Rectangle {
Point p1;
Point p2;
} Rectangle;
// 计算两点之间的距离
float distance(Point p1, Point p2) {
return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
}
// 计算矩形的周长
float perimeter(Rectangle r) {
return 2 * (distance(r.p1, r.p2) + distance((Point){r.p1.x, r.p2.y}, (Point){r.p2.x, r.p1.y}));
}
// 计算矩形的面积
float area(Rectangle r) {
return distance(r.p1, r.p2) * distance((Point){r.p1.x, r.p2.y}, (Point){r.p2.x, r.p1.y});
}
int main() {
// 创建一个点
Point p = {3, 4};
printf("Point: (%d, %d)\n", p.x, p.y);
// 创建一个矩形
Rectangle r = {(Point){1, 2}, (Point){5, 6}};
printf("Rectangle: [(%d, %d), (%d, %d)]\n", r.p1.x, r.p1.y, r.p2.x, r.p2.y);
// 计算矩形的周长和面积
printf("Perimeter: %.2f\n", perimeter(r));
printf("Area: %.2f\n", area(r));
return 0;
}
```
这段代码使用结构体来定义 Point 和 Rectangle 类,分别包含点坐标属性和矩形对角线上两个点的坐标属性。然后,分别定义了 distance、perimeter 和 area 三个函数来计算两点之间的距离、矩形的周长和面积。最后,在主函数中创建了一个点和一个矩形,分别输出其属性,并调用扩展函数计算矩形的周长和面积。
阅读全文