用c++语言设计三个图形类:Point(点)、Circle(圆)、Triangle(三角形); (1)Point类基本信息:x、y坐标;Cirlce类基本信息:圆心坐标(Point类子对象)和半径;Triangle类基本信息:三个顶点坐标(三个Point类子对象); (2)每个图形类都有带参数的构造函数和返回图形的基本信息函数getMessage()。Point类的getMessage()函数返回包含x,y坐标的字符串;Cirlce类的getMessage()函数返回包含圆心坐标、直径、周长、面积信息的字符串;Triangle类的getMessage()函数返回包含三角形三边长信息的字符串;Circle和Triangle类还有返回图形面积的函数getArea()。 (3)每个类中数据成员为private访问控制方式,成员函数为public访问控制方式;
时间: 2023-06-11 09:09:35 浏览: 82
以下是用 C 语言设计的三个图形类:
```
#include <stdio.h>
#include <math.h>
// 声明 Point 类
typedef struct {
double x;
double y;
} Point;
// 声明 Circle 类
typedef struct {
Point center; // 圆心坐标
double radius; // 半径
} Circle;
// 声明 Triangle 类
typedef struct {
Point vertex1; // 顶点1
Point vertex2; // 顶点2
Point vertex3; // 顶点3
} Triangle;
// 定义 Point 类的构造函数
Point createPoint(double x, double y) {
Point p;
p.x = x;
p.y = y;
return p;
}
// 定义 Circle 类的构造函数
Circle createCircle(Point center, double radius) {
Circle c;
c.center = center;
c.radius = radius;
return c;
}
// 定义 Triangle 类的构造函数
Triangle createTriangle(Point vertex1, Point vertex2, Point vertex3) {
Triangle t;
t.vertex1 = vertex1;
t.vertex2 = vertex2;
t.vertex3 = vertex3;
return t;
}
// 定义 Point 类的 getMessage 函数
char* getPointMessage(Point p) {
static char message[50];
sprintf(message, "Point: (%.2f, %.2f)", p.x, p.y);
return message;
}
// 定义 Circle 类的 getMessage 函数
char* getCircleMessage(Circle c) {
static char message[100];
double diameter = c.radius * 2;
double circumference = 2 * M_PI * c.radius;
double area = M_PI * c.radius * c.radius;
sprintf(message, "Circle: Center: (%.2f, %.2f), Diameter: %.2f, Circumference: %.2f, Area: %.2f", c.center.x, c.center.y, diameter, circumference, area);
return message;
}
// 定义 Circle 类的 getArea 函数
double getCircleArea(Circle c) {
return M_PI * c.radius * c.radius;
}
// 定义 Triangle 类的 getMessage 函数
char* getTriangleMessage(Triangle t) {
static char message[100];
double a = sqrt(pow((t.vertex1.x - t.vertex2.x), 2) + pow((t.vertex1.y - t.vertex2.y), 2));
double b = sqrt(pow((t.vertex2.x - t.vertex3.x), 2) + pow((t.vertex2.y - t.vertex3.y), 2));
double c = sqrt(pow((t.vertex3.x - t.vertex1.x), 2) + pow((t.vertex3.y - t.vertex1.y), 2));
sprintf(message, "Triangle: Side1: %.2f, Side2: %.2f, Side3: %.2f", a, b, c);
return message;
}
// 定义 Triangle 类的 getArea 函数
double getTriangleArea(Triangle t) {
double a = sqrt(pow((t.vertex1.x - t.vertex2.x), 2) + pow((t.vertex1.y - t.vertex2.y), 2));
double b = sqrt(pow((t.vertex2.x - t.vertex3.x), 2) + pow((t.vertex2.y - t.vertex3.y), 2));
double c = sqrt(pow((t.vertex3.x - t.vertex1.x), 2) + pow((t.vertex3.y - t.vertex1.y), 2));
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}
```
在上面的代码中,我们使用了 C 语言结构体来定义点、圆和三角形,每个类都有带参数的构造函数和返回图形的基本信息函数 getMessage()。Point 类的 getMessage() 函数返回包含 x、y 坐标的字符串;Circle 类的 getMessage() 函数返回包含圆心坐标、直径、周长、面积信息的字符串;Triangle 类的 getMessage() 函数返回包含三角形三边长信息的字符串;Circle 和 Triangle 类还有返回图形面积的函数 getArea()。注意,每个类中数据成员为 private 访问控制方式,成员函数为 public 访问控制方式。
阅读全文