题目描述
一个windows桌面上的窗体用4个整数定义位置:左边坐标、右边坐标、下边坐标、上边坐标
现在,请输入2个窗体的位置信息,判断它们的位置是否重叠
输入
两行,每行一个窗体的位置信息,int 范围以内
输出
输出2个窗体的重叠面积,不重叠就输出0
样例输入
10 100 20 60 60 160 50 200
样例输出
400
#include<stdio.h>
struct win{
int left;
int right;
int down;
int up;
};
int max(int x,int y){
int k;
if(x>=y)k=x;
else k=y;
return k;
}
int min(int x,int y){
int k;
if(x<=y)k=x;
else k=y;
return k;
}
int main(){
struct win w1,w2;
int i,a,b,s;
scanf("%d%d%d%d",&w1.left,&w1.right,&w1.down,&w1.up);
scanf("%d%d%d%d",&w2.left,&w2.right,&w2.down,&w2.up);
a=min(w1.right,w2.right)-max(w1.left,w2.left);
b=min(w1.up,w2.up)-max(w1.down,w2.down);
if(a<0||b<0)s=0;
else s=a*b;
printf("%d",s);
return 0;
}
自我反思:这道题不是很绕,但关键是要会算窗体重叠的面积,而且还要考虑到两种边长为负的情况(代码中的a和b)。