hdu2056 Rectangles

题目大意:
输入两个矩形对角线上的两点坐标,输出两个矩形重叠面积。

大致思路:
水题中稍微难一点的类型。。。输入的两点不一定是主对角线上的。。。所以需要处理一下

C:

#include<stdio.h>
struct point
{
    double x1,y1,x2,y2;
};                      //用结构体是个好习惯
double max(double a,double b){
    return a>b?a:b;
}                       //模仿dalao自己编写函数
double min(double a,double b){
    return a<b?a:b;
}
int main()
{
    struct point p1,p2;
    double x1,y1,x2,y2;
    //输入有点长,注意不要打错
    while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p1.x1,&p1.y1,&p1.x2,&p1.y2,&p2.x1,&p2.y1,&p2.x2,&p2.y2)!=EOF)
    {
        x1=min(p1.x1,p1.x2);
        y1=min(p1.y1,p1.y2);
        x2=max(p1.x1,p1.x2);
        y2=max(p1.y1,p1.y2);
        p1.x1=x1,p1.y1=y1,p1.x2=x2,p1.y2=y2;
        //处理为矩形左下和右上两点,下面同理
        x1=min(p2.x1,p2.x2);
        y1=min(p2.y1,p2.y2);
        x2=max(p2.x1,p2.x2);
        y2=max(p2.y1,p2.y2);
        p2.x1=x1,p2.y1=y1,p2.x2=x2,p2.y2=y2;
        x1=max(p1.x1,p2.x1);
        x2=min(p1.x2,p2.x2);
        y1=max(p1.y1,p2.y1);
        y2=min(p1.y2,p2.y2);
        /*判断两矩形是否相交,
        要么是一个矩形x最大小于另一个矩形x最小
        要么是一个矩形y最大小于另一个矩形y最小,
        重叠的话,(x2-x1)*(y2-y1)即为面积*/
        printf("%.2lf\n",(x1>=x2||y1>=y2)?0.00:(x2-x1)*(y2-y1));
        //条件运算符是个缩短代码长度的好东西~
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值