C语言根据输入的两个矩形坐标求交的面积

题目描述

平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。

输入仅包含两行,每行描述一个矩形。在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10的7次方的实数表示。

输出仅包含一个实数,为交的面积,保留到小数后两位。

源代码

#include <stdio.h>

double min(double a, double b) {
    return a < b ? a : b;
}

double max(double a, double b) {
    return a > b ? a : b;
}

int main() {
    double x1, y1, x2, y2;  // 第一个矩形的坐标
    double a1, b1, a2, b2;  // 第二个矩形的坐标
    double x_min, y_min, x_max, y_max;  // 交集的四个顶点坐标
    double area;  // 交集的面积

    // 读入两个矩形的坐标
    scanf("%lf %lf %lf %lf", &x1, &y1, &x2, &y2);
    scanf("%lf %lf %lf %lf", &a1, &b1, &a2, &b2);

    // 计算交集的四个顶点坐标
    x_min = max(x1, a1);
    y_min = max(y1, b1);
    x_max = min(x2, a2);
    y_max = min(y2, b2);

    // 计算交集的面积
    if (x_min < x_max && y_min < y_max) {
        area = (x_max - x_min) * (y_max - y_min);
    } else {
        area = 0.0;
    }

    // 输出交集面积,保留两位小数
    printf("%.2lf\n", area);

    return 0;
}

对于计算交集的四个顶点坐标以及交集的面积的部分,minmax函数。首先读入两个矩形的坐标,然后计算交集的四个顶点坐标,即两个矩形的左上角坐标的最大值和右下角坐标的最小值。如果交集存在,则计算交集的面积;否则交集面积为0。最后输出交集面积,保留两位小数。

© 版权声明
THE END
喜欢就支持一下吧
点赞12赞赏 分享