蓝桥杯基础练习BASIC-18 矩形面积交

(C语言实现)IDE:dev c++

算法一

#include <stdio.h>
double Area(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4)
{
	double s;
	double x,y;
	if(x4<=x1 || x2<=x3) x=0;
	if(x3<=x1 && x1<=x4 && x4<=x2) x=x4-x1;
	if(x3<=x1 && x1<=x2 && x2<=x4) x=x2-x1;
	if(x1<=x3 && x3<=x4 && x4<=x2) x=x4-x3;
	if(x1<=x3 && x3<=x2 && x2<=x4) x=x2-x3;
	if(y4<=y1 || y2<=y3) y=0;
	if(y3<=y1 && y1<=y4 && y4<=y2) y=y4-y1;
	if(y3<=y1 && y1<=y2 && y2<=y4) y=y2-y1;
	if(y1<=y3 && y3<=y4 && y4<=y2) y=y4-y3;
	if(y1<=y3 && y3<=y2 && y2<=y4) y=y2-y3;	
	s = x * y;
	return s;
}
int main(){
	double x1,y1, x2,y2, x3,y3, x4,y4, s;
	scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
	s = Area(x1,y1, x2,y2, x3,y3, x4,y4);	
	printf("%.2lf",s);	
	return 0;
}

算法二

#include <stdio.h>
int Area(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4){
	double s;
	if(x4<=x1 || x2<=x3 || y4<=y1 || y2<= y3) s=0;
	
	if(x1<=x3 && x3<=x2 && x2<=x4 
	&& y1<=y3 && y3<=y2 && y2<=y4) s=(x2-x3)*(y2-y3);
	
	if(x1<=x3 && x3<=x2 && x2<=x4 
	&& y3<=y1 && y1<=y4 && y4<=y2) s=(x2-x3)*(y4-y1);
	
	if(x3<=x1 && x1<=x4 && x4<=x2
	&& y3<=y1 && y1<=y4 && y4<=y2) s=(x4-x1)*(y4-y1);
	
	if(x3<=x1 && x1<=x4 && x4<=x2
	&& y1<=y3 && y3<=y2 && y2<=y4) s=(x4-x1)*(y2-y3);
	
	if(x1<=x3 && x3<=x2 && x2<=x4
	&& y1<=y3 && y3<=y4 && y4<=y2) s=(x2-x3)*(y4-y3);
	
	if(x1<=x3 && x3<=x4 && x4<=x2
	&& y3<=y1 && y1<=y4 && y4<=y2) s=(x4-x3)*(y4-y1);
	
	if(x3<=x1 && x1<=x4 && x4<=x2
	&& y1<=y3 && y3<=y4 && y4<=y2) s=(x4-x1)*(y4-y3);
	
	if(x1<=x3 && x3<=x4 && x4<=x2
	&& y1<=y3 && y3<=y2 && y2<=y4) s=(x4-x3)*(y2-y3);
	
	if(x1<=x3 && x3<=x4 && x4<=x2
	&& y1<=y3 && y3<=y4 && y4<=y2) s=(x4-x3)*(y4-y3);
	
	if(x3<=x1 && x1<=x2 && x2<=x4
	&& y3<=y1 && y1<=y2 && y2<=y4) s=(x2-x1)*(y2-y1);
	
	if(x3<=x1 && x1<=x2 && x2<=x4
	&& y1<=y3 && y3<=y4 && y4<=y2) s=(x2-x1)*(y4-y3);
	
	if(x1<=x3 && x3<=x4 && x4<=x2
	&& y3<=y1 && y1<=y2 && y2<=y4) s=(x4-x3)*(y2-y1);
	
	if(x3<=x1 && x1<=x2 && x2<=x4
	&& y1<=y3 && y3<=y2 && y2<=y4) s=(x2-x1)*(y2-y3);
	
	if(x1<=x3 && x3<=x2 && x2<=x4
	&& y3<=y1 && y1<=y2 && y2<=y4) s=(x2-x3)*(y2-y1);
	
	if(x3<=x1 && x1<=x2 && x2<=x4
	&& y3<=y1 && y1<=y4 && y4<=y2) s=(x2-x1)*(y4-y1);
	
	if(x3<=x1 && x1<=x4 && x4<=x2
	&& y3<=y1 && y1<=y2 && y2<=y4) s=(x4-x1)*(y2-y1);
	
	return s;
}
int main(){
	
	double x1,y1, x2,y2, x3,y3, x4,y4, s;
	scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
	
	s = Area(x1,y1,x2,y2,x3,y3,x4,y4);
	
	printf("%0.2lf\n",s);

	return 0;
}

如果这段代码对您有帮助,希望您可以给猿猿一个赞,谢谢您嘞,code不易,且看且珍惜。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值