#include<stdio.h> int getarea_k(struct square.kuan); float getarea_c(struct circle.r); int getarea_cfx(struct rectangle.chang,struct rect.kuan); typedef struct square//正方形 { int kuan; int (*getarea_k)(sq.kuan); }sq; typedef struct circle//圆 { int r; float (*getarea_c)(cir.r); }cir; typedef struct rectangle//长方形 { int chang; int kuan; int (*getarea_cfx)(struct rectangle.chang,struct rectangle.kuan); square; }rect; typedef struct shape//.... { int x; int y; rectangle; circle; }sp; int getarea_k(sq.kuan)//正方形面积 { return sq.kuan*sq.kuan; } float getarea_c(cir.r)//圆面积 { return 3.14*cir.r*cir.r; } int getarea_cfx(rect.chang,rect.kuan)//长方形面积 { return rect.chuang*rect.kuan; } int main(0 { scanf("%d%d",rect.chang,rect.kuan); printf("%d",rect.getarea_cfx(rect.chang,rect.kuan)); scanf("%d%d",sq.kuan); printf("%d",getarea_k(sq.kuan)); scanf("%d%d",cir.r); printf("%d",getarea_c(cir.r))); ]
时间: 2024-04-08 16:34:15 浏览: 90
#include<stdio.h>
在您提供的代码中,存在一些问题:
1. 函数声明和定义的参数名不一致:在函数声明和定义中,参数名需要保持一致,但是您的代码中存在不一致的情况。例如,在`getarea_k`函数的声明中,参数名为`struct square.kuan`,而在定义中参数名为`sq.kuan`。请统一参数名。
2. 结构体嵌套的语法错误:在`rectangle`结构体中,您尝试嵌套`square`结构体,但是语法错误。请将`square`结构体定义放在`rectangle`结构体之前。
3. 函数定义的参数类型错误:在函数定义中,您尝试使用结构体成员作为参数类型,但是语法错误。请直接使用成员类型作为参数类型。
4. 函数定义和调用时的参数传递错误:在函数定义和调用时,需要使用实际的变量作为参数传递,但是您的代码中使用了结构体成员作为参数。请使用实际变量作为参数传递。
下面是修正后的代码:
```c
#include <stdio.h>
typedef struct square // 正方形
{
int kuan;
int (*getarea_k)(int);
} sq;
typedef struct circle // 圆
{
int r;
float (*getarea_c)(int);
} cir;
typedef struct rectangle // 长方形
{
int chang;
int kuan;
int (*getarea_cfx)(int, int);
} rect;
typedef struct shape // ....
{
int x;
int y;
rect rectangle;
cir circle;
} sp;
int getarea_k(int kuan) // 正方形面积
{
return kuan * kuan;
}
float getarea_c(int r) // 圆面积
{
return 3.14 * r * r;
}
int getarea_cfx(int chang, int kuan) // 长方形面积
{
return chang * kuan;
}
int main()
{
rect r;
sq s;
cir c;
scanf("%d%d", &r.chang, &r.kuan);
printf("%d\n", getarea_cfx(r.chang, r.kuan));
scanf("%d", &s.kuan);
printf("%d\n", getarea_k(s.kuan));
scanf("%d", &c.r);
printf("%f\n", getarea_c(c.r));
return 0;
}
```
请注意,以上修正仅针对代码的语法问题,并未考虑代码的逻辑正确性。如果您还有其他问题,请随时提问。
阅读全文