我希望矩形结构体中能存有成员:矩形面积计算函数,并通过矩形结构体调用矩形面积计算函数,你能帮我改一下,如何全部一起发给我吗
时间: 2024-04-08 18:34:39 浏览: 81
矩形的并(算法)
5星 · 资源好评率100%
当然,我可以帮你修改代码以实现你的需求。以下是修改后的代码:
```c
#include <stdio.h>
// 定义基类 Shape
typedef struct {
int x;
int y;
} Shape;
// 定义派生类 Rectangle
typedef struct {
Shape shape; // 继承基类 Shape
int length;
int width;
int (*getArea)(struct Rectangle* rect); // 矩形面积计算函数指针
} Rectangle;
// 定义派生类 Circle
typedef struct {
Shape shape; // 继承基类 Shape
int radius;
} Circle;
// 定义派生类 Square
typedef struct {
Rectangle rectangle; // 继承派生类 Rectangle
} Square;
// 计算矩形面积的函数
int getRectangleArea(struct Rectangle* rect) {
return (rect->length) * (rect->width);
}
// 计算圆面积
float getCircleArea(Circle circle) {
return 3.14 * circle.radius * circle.radius;
}
// 计算正方形面积
int getSquareArea(Square square) {
return square.rectangle.length * square.rectangle.length;
}
int main() {
Rectangle rect;
Circle cir;
Square sqr;
// 输入矩形的长和宽
printf("请输入矩形的长和宽:");
scanf("%d%d", &rect.length, &rect.width);
rect.getArea = getRectangleArea; // 将矩形面积计算函数赋值给矩形结构体的getArea成员
printf("矩形的面积为:%d\n", rect.getArea(&rect)); // 通过矩形结构体调用矩形面积计算函数
// 输入圆的半径
printf("请输入圆的半径:");
scanf("%d", &cir.radius);
printf("圆的面积为:%f\n", getCircleArea(cir));
// 输入正方形的边长
printf("请输入正方形的边长:");
scanf("%d", &sqr.rectangle.length);
printf("正方形的面积为:%d\n", getSquareArea(sqr));
return 0;
}
```
在修改后的代码中,我添加了一个函数指针成员`getArea`到矩形结构体`Rectangle`中,用于存储矩形面积计算函数的地址。通过将矩形面积计算函数赋值给`getArea`成员,我们可以通过矩形结构体调用矩形面积计算函数。
请尝试运行修改后的代码,看看是否满足你的需求。如果还有其他问题,请随时告诉我。
阅读全文