我已经苦编两周无结果,求助编程C语言【矩形相交】
答案:3 悬赏:0 手机版
解决时间 2021-02-03 10:19
- 提问者网友:你挡着我发光了
- 2021-02-02 15:46
我已经苦编两周无结果,求助编程C语言【矩形相交】
最佳答案
- 五星知识达人网友:长青诗
- 2021-02-02 16:53
#include
#include"math.h"
void main(){
int ax1,ay1,ax2,ay2,bx1,by1,bx2,by2,area;
printf("输入左上角和右下角的坐标!\n");
printf("input 1:");
scanf("%d %d %d %d",&ax1,&ay1,&ax2,&ay2);
printf("\ninput 2:");
scanf("%d %d %d %d",&bx1,&by1,&bx2,&by2);
if(ax2by1||ax1>bx2||ay1 {
printf("相离\n");
}
else if((ax1by1&&bx2ay2)||(ax1>bx1&&ay1ax2&&by2 {
if(ax1 {
area=(bx2-bx1)*(by1-by2);
printf("\nA包含B,面积:%d\n",area);
}
else
{
area=(ax2-ax1)*(ay1-ay2);
printf("\nB包含A,面积:%d\n",area);
}
}
else
{
if(bx2>ax2&&ax2>bx1&&by1>ay2&&ay2>by2)
{
if(bx2>ax2&&ax2>bx1&&by1>ay1&&ay1>by2)
{
area=(ax2-bx1)*(ay1-ay2);
printf("\n1相交,面积:%d",area);
}
else
{
area=(ax2-bx1)*(by1=ay2);
printf("\n2相交,面积:%d",area);
}
}
else if(bx2>ax1&&ax1>bx1&&by1>ay2&&ay2>by2)
{
if(bx2>ax1&&ax1>bx1&&by1>ay1&&ay1>by2)
{
area=(bx2-ax1)*(ay1-ay2);
printf("\n3相交,面积:%d",area);
}
else
{
area=(bx2-ax1)*(by1=ay2);
printf("\n4相交,面积:%d",area);
}
}
else if(bx2>ax2&&ax2>bx1&&by1>ay1&&ay1>by2)
{
if(bx2>ax1&&ax1>bx1&&by1>ay1&&ay1>by2)
{
area=(ax2-ax1)*(ay1-by2);
printf("\n5相交,面积:%d",area);
}
else
{
area=(ax2-bx1)*(ay1-by2);
printf("\n6相交,面积:%d",area);
}
}
else
{
if(bx2>ax2&&ax2>bx1&&by1>ay1&&ay1>by2)
{
area=(ax2-ax1)*(ay1-by2);
printf("\n7相交,面积:%d",area);
}
else
{
area=(bx2-ax1)*(ay1-by2);
printf("\n8相交,面积:%d",area);
}
}
}
}
只做了简单的测试!
#include"math.h"
void main(){
int ax1,ay1,ax2,ay2,bx1,by1,bx2,by2,area;
printf("输入左上角和右下角的坐标!\n");
printf("input 1:");
scanf("%d %d %d %d",&ax1,&ay1,&ax2,&ay2);
printf("\ninput 2:");
scanf("%d %d %d %d",&bx1,&by1,&bx2,&by2);
if(ax2
printf("相离\n");
}
else if((ax1
if(ax1
area=(bx2-bx1)*(by1-by2);
printf("\nA包含B,面积:%d\n",area);
}
else
{
area=(ax2-ax1)*(ay1-ay2);
printf("\nB包含A,面积:%d\n",area);
}
}
else
{
if(bx2>ax2&&ax2>bx1&&by1>ay2&&ay2>by2)
{
if(bx2>ax2&&ax2>bx1&&by1>ay1&&ay1>by2)
{
area=(ax2-bx1)*(ay1-ay2);
printf("\n1相交,面积:%d",area);
}
else
{
area=(ax2-bx1)*(by1=ay2);
printf("\n2相交,面积:%d",area);
}
}
else if(bx2>ax1&&ax1>bx1&&by1>ay2&&ay2>by2)
{
if(bx2>ax1&&ax1>bx1&&by1>ay1&&ay1>by2)
{
area=(bx2-ax1)*(ay1-ay2);
printf("\n3相交,面积:%d",area);
}
else
{
area=(bx2-ax1)*(by1=ay2);
printf("\n4相交,面积:%d",area);
}
}
else if(bx2>ax2&&ax2>bx1&&by1>ay1&&ay1>by2)
{
if(bx2>ax1&&ax1>bx1&&by1>ay1&&ay1>by2)
{
area=(ax2-ax1)*(ay1-by2);
printf("\n5相交,面积:%d",area);
}
else
{
area=(ax2-bx1)*(ay1-by2);
printf("\n6相交,面积:%d",area);
}
}
else
{
if(bx2>ax2&&ax2>bx1&&by1>ay1&&ay1>by2)
{
area=(ax2-ax1)*(ay1-by2);
printf("\n7相交,面积:%d",area);
}
else
{
area=(bx2-ax1)*(ay1-by2);
printf("\n8相交,面积:%d",area);
}
}
}
}
只做了简单的测试!
全部回答
- 1楼网友:几近狂妄
- 2021-02-02 17:29
x方向和y方向分别计算,比较简单不用这么麻烦,提示一下用min和max函数找到相交的边界
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯