#include <stdio.h>
#include <stdlib.h>
int main()
{
double x1,x2,x3,x4,y1,y2,y3,y4,s,a,b,c,d,u;
while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF){
if(x1>x2){
u=x1;
x1=x2;
x2=u;
}
if(y1>y2){
u=y1;
y1=y2;
y2=u;
}
if(x3>x4){
u=x3;
x3=x4;
x4=u;
}
if(y3>y4){
u=y3;
y3=y4;
y4=u;
}
if(x3>=x2||x1>=x4||y2<=y3||y4<=y1)
{
s=0;
printf("0.00\n");
continue;
}
a=y2<y4?y2:y4;
b=y1>y3?y1:y3;
c=x1>x3?x1:x3;
d=x2<x4?x2:x4;
s=(a-b)*(d-c);
printf("%.2lf\n",s);
}
return 0;
}
这个题修修改改好多次,许多条件都是写到一半才想起来,然后重新修改,这种习惯真的很不好quq
1.把每个矩形里的两对点变成左下角和右上角,方便下一步计算
2.在两个矩形中,左下角取最大的x和最大的y,右上角取最小的x和最小的y,然后计算