回复 10楼 rjsp
											我的这道题的坐标是用户任意给出的,并且两个矩形可能根本不相交,此时的面积应为0										
					
	
一片落叶掉进了回忆的流年。
 2015-01-15 17:04
	    2015-01-15 17:04
   2015-01-15 17:06
	    2015-01-15 17:06
   2015-01-15 17:12
	    2015-01-15 17:12
   2015-01-15 18:31
	    2015-01-15 18:31
   程序代码:
程序代码:#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");
}										
					
	 2015-01-15 22:29
	    2015-01-15 22:29
   2015-01-16 10:49
	    2015-01-16 10:49
   2015-01-17 13:18
	    2015-01-17 13:18