C语言实现:矩形面积重叠

矩形的面积:
【问题描述】

在笛卡尔坐标系内(x轴向右为正,y轴向上为正),给出2个矩形的左上角坐标与右下角坐标,请你计算出两个矩形所覆盖区域的面积。

【输入形式】

第一行4个空格隔开的整数,表示第1个矩形的左上角与右下角的坐标x1,y1,x2,y2;

第二行4个空格隔开的整数,表示第2个矩形的左上角与右下角的坐标x3,y3,x4,y4;

坐标xi与yi均大于等于1000000且小于等于-1000000;

数据确保面积小于1000000000。

【输出形式】

一个整数表示面积。
【样例输入1】

0 2 2 0
-1 1 1 -1 
1
2
【样例输出1】

7
1
【样例输入2】

0 3 3 0
-1 2 4 1 
1
2
【样例输出2】

11
1
【样例输入3】

-100 0 100 -1
0 1 200 0 
1
2
【样例输出3】

400
 

#include <stdio.h>
#include <math.h>
#define max(a,b) a>b?a:b
#define min(a,b) a<b?a:b
int main(){

int x1,x2,y1,y2,x3,y3,x4,y4;

scanf("%d %d %d %d",&x1,&y1,&x2,&y2);

scanf("%d %d %d %d",&x3,&y3,&x4,&y4);

//无交集

if(x3>x2||x4<x1||y4>y1||y3<y2)printf("两个矩形不重叠");



else{
    int s=0,w=2;
    int a,b,c,d;
    c=min(x2,x4);
    d=max(x1,x3);
    int l = c-d;

    a=min(y1,y3);
    b=max(y2,y4);
    w = a-b;
    //printf("%d %d,w=%d\n",min(y1,y3),max(y2,y4),w);
    //printf("l=%d,w=%d,l*w=%d\n",l,w,l*w);
    s=abs(x1-x2)*abs(y1-y2)+abs(x3-x4)*abs(y3-y4)-l*w;
    printf("%d",s);

}
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又是被bug折磨的一天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值