解题思路:
注意事项:
参考代码:
a=list(map(float,input().split())) b=list(map(float,input().split())) a1=[min(a[0],a[2]),min(a[1],a[3]),max(a[0],a[2]),max(a[1],a[3])] b1=[min(b[0],b[2]),min(b[1],b[3]),max(b[0],b[2]),max(b[1],b[3])] #将点的不同情况转化为默认情况 x=min(a1[2],b1[2])-max(a1[0],b1[0]) y=min(a1[3],b1[3])-max(a1[1],b1[1]) #获取相交部分的长,宽 v=x*y if(b1[0]>a1[2] or b1[1]>a1[3] or b1[2]<a1[0] or b1[3]<a1[1]): v=0#判断不相交的情况 print("{:.2f}".format(v))
方法二:
方法2的情况说明的图在这里面
蓝桥杯 Python 练习题 矩形面积交_阿于阿于的博客-CSDN博客
#重复性很高,很暴力 a1=list(map(float,input().split())) a2=list(map(float,input().split())) if(a1[0]>a1[2]):#情况2变成默认 a1=[a1[2],a1[3],a1[0],a1[1]] if(a2[0]>a2[2]): a2=[a2[2],a2[3],a2[0],a2[1]] if(a1[1]>a1[3]):#情况1变默认 a1=[a1[0],a1[3],a1[2],a1[1]] if(a2[1]>a2[3]): a2=[a2[0],a2[3],a2[2],a2[1]] def x(a1,a2): if(a2[2]>a1[2] and a2[0]>a1[0] and a2[0]<a1[2]):#(1) x=a1[2]-a2[0] elif(a2[2]<=a1[2] and a2[0]>=a1[0]):(2) x=a2[2]-a2[0] elif(a2[0]<a1[0] and a2[2]<a1[2]):(1)-1 x=a2[2]-a1[0] else:#(3) x=0 if(x<0): x=-x return x def y(a1,a2): if(a2[3]>a1[3] and a2[1]>a1[1] and a2[1]<a1[3]): y=a1[3]-a2[1] elif(a2[3]<=a1[3] and a2[1]>=a1[1]): y=a2[3]-a2[1] elif(a2[1]<a1[1] and a2[3]<a1[3]): y=a2[3]-a1[1] else: y=0 if(y<0): y=-y return y v=x(a1,a2)*y(a1,a2) print("{:.2f}".format(v))
0.0分
2 人评分
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:623 |
C二级辅导-公约公倍 (C语言代码)浏览:1510 |
C语言训练-排序问题<2> (C++代码)浏览:886 |
WU-整除问题 (C++代码)浏览:612 |
用筛法求之N内的素数。 (C语言代码)浏览:652 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:678 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:550 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:676 |
1202题解浏览:630 |
2003年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:1326 |