回复 10楼 rjsp
我的这道题的坐标是用户任意给出的,并且两个矩形可能根本不相交,此时的面积应为0
一片落叶掉进了回忆的流年。
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1 #define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> void change(int *a);//保证小的坐标在前,大的坐标在后 int cul_(int *a, int *b);//计算重合面积 void f_printf(int a); int main() { int x_[4] = { 0 }, y_[4] = {0}, area;//0.1 2.3 printf("请分别输入两个矩阵的横坐标x1_1,x1_2,x2_1,x2_2,以空格隔开\n"); scanf("%d %d %d %d",&x_[0], &x_[1], &x_[2], &x_[3]); printf("请分别输入两个矩阵的纵坐标y1_1,y1_2,y2_1,y2_2,以空格隔开\n"); scanf("%d %d %d %d",&y_[0], &y_[1], &y_[2], &y_[3]); change(x_); change(y_); area=cul_(x_,y_); f_printf(area); return 0; } void change(int *a) { if (a[0] > a[1]) { int temp = a[0]; a[0] = a[1]; a[1] = temp; } if (a[2] > a[3]) { int temp = a[2]; a[2] = a[3]; a[3] = temp; } } int cul_(int *a, int *b) { if (a[0] >= a[3]) return 0; else if (a[1] <= a[2]) return 0; else if (b[0] >= b[3]) return 0; else if (b[1] <= b[2]) return 0; else//前面都是没有重叠的情况,这里是重叠的情况 { int x, y; x=(a[1] - a[2])<(a[3] - a[0]) ? (a[1] - a[2]) : (a[3] - a[0]); y = (b[1] - b[2])<(b[3] - b[0]) ? (b[1] - b[2]) : (b[3] - b[0]); return x*y; } } void f_printf(int a) { if (a) printf("重叠部分面积为%d\n", a); else printf("没有重叠部分\n"); }