题目

定义包含左上角坐标与宽高属性的嵌套结构体 Rectangle,计算并输出该矩形的面积与周长。

输入格式:一行输入两个浮点数,分别表示矩形的宽度 w 和高度 h。

输出格式:按格式输出矩形的面积与周长(保留两位小数)。

数据范围与约定:w, h > 0。

思路与算法

1. 复合结构嵌套
结构体内部可以嵌套另一个结构体作为成员变量(例如 Point topleft 成员)。

2. 多级成员访问
使用点操作符逐级访问内部结构体成员,如 rect.topleft.x;面积直接用 rect.w * rect.h 计算。

完整程序

#include <stdio.h>
#include <math.h>

typedef struct {
    double x, y;
} Point;

// 结构体嵌套:矩形由左上角和右下角两个 Point 构成
typedef struct {
    Point tl, br;
} Rect;

int main(void)
{
    Rect r;
    // 访问嵌套成员:r.tl.x 即矩形左上角点的 x 坐标
    scanf("%lf %lf %lf %lf", &r.tl.x, &r.tl.y, &r.br.x, &r.br.y);

    // 绝对值计算宽高,避免因输入顶点顺序颠倒导致负数
    double w = fabs(r.br.x - r.tl.x);
    double h = fabs(r.br.y - r.tl.y);
    printf("w=%.2f h=%.2f area=%.2f\n", w, h, w * h);
    return 0;
}

运行示例

输入:

0 0 4 3

输出:

w=4.00 h=3.00 area=12.00