老师平时布置的希冀系统上的作业答案,仅供参考!
【问题描述】
平面上有两个矩形A和B,其位置是任意的。编程求出其相交部分(如图中阴影部分)的面积。(0<=a,b<=1000)
【输入文件】
从标准输入读取两行以空格分隔的整数,格式如下:
Ax1 Ay1 Ax2 Ay2
Bx1 By1 Bx2 By2
其中(x1,y1)为矩形左上顶点下标,(x2,y2)为右下顶点下标。各座标值均为整数,取值在0至1000之间。
【输出文件】
向标准输出打印一个整数,是两矩形相交部分的面积(可能为0)。在输出末尾要有一个回车符。
【输入样例】
0 0 2 2
1 1 3 4
【输出样例】
1
【样例说明】
输入的两个矩阵的相交面积为1
【参考答案】
#include <stdio.h>
int max(int a, int b)
{
return (a > b) ? a : b;
}
int min(int a, int b)
{
return(a < b) ? a : b;
}
int main()
{
int Ax1, Ay1, Ax2, Ay2;
int Bx1, By1, Bx2, By2;
int s;
int a, b;//左上角的横纵
int c, d;//右下角的横纵
scanf("%d %d %d %d", &Ax1, &Ay1, &Ax2, &Ay2);
scanf("%d %d %d %d", &Bx1, &By1, &Bx2, &By2);
a = max( min(Ax1, Ax2), min(Bx1, Bx2) );
b = min( max(Ay1, Ay2), max(By1, By2) );
c = min( max(Ax1, Ax2), max(Bx1, Bx2) );
d = max( min(Ay1, Ay2), min(By1, By2) );
if ( a > c || b < d)
{
s = 0;
}
else
{
s = (c - a) * (b -d);
}
printf("%d", s);
return 0;
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容