永发信息网

用C语言写个程序判断两条线段的位置关系

答案:2  悬赏:10  手机版
解决时间 2021-04-29 02:38

用C语言写个程序判断两条线段的位置关系。编译器是VC6.0

具体流程是先输入2个点坐标得到一条线段,然后再输入2点坐标得到另外一条线段,然后就判断这两条线段的位置关系(相交或者不相交)

最佳答案

很抱歉,第一次写的程序代码有问题方法存在很多未考虑的情况,这是修改后补充的答案。


#include<stdio.h>


struct point
{
double x;
double y;
};



int main()


{


struct point a,b,c,d;
double k1,k2,tempx;


printf("input point a,b,c,d(坐标点x值延x轴正方向): \n");
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&a.x,&a.y,&b.x,&b.y,&c.x,&c.y,&d.x,&d.y);
k1=(b.y-a.y)/(b.x-a.x);
k2=(d.y-c.y)/(d.x-c.x);
if(k1==k2)
printf("the two line is horizentol.\n");
else
{


tempx=(c.y-a.y+k1*a.x-k2*c.x)/(k1-k2);
if(tempx>=a.x&&tempx<=b.x)


{


printf("两条线段相交。\n");


}
else
printf("两条线段不相交。\n");
}
return 0;
}
我已经测试过,可以运行。谢谢采纳。不懂追问。

全部回答

看看这个

#include<stdio.h> #include<math.h> int main() { int a,b,c,d,X1,Y1,X2,Y2; printf("第一条线段:\n"); printf("输入第一个点的坐标(用空格间隔):"); scanf("%d %d",&a,&b);

printf("输入第二个点的坐标(用空格间隔):"); scanf("%d %d",&c,&d); X1 = (int)fabs(a-c); Y1 = (int)fabs(b-d); printf("第二条线段:\n"); printf("输入第一个点的坐标(用空格间隔):"); scanf("%d %d",&a,&b);

printf("输入第二个点的坐标(用空格间隔):"); scanf("%d %d",&c,&d); X2 = (int)fabs(a-c); Y2 = (int)fabs(b-d); if(X1*Y2 == X2*Y1) printf("这两条线不相交\n"); else printf("这两条线相交\n"); return 1; }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果是今天买的戒指,会不会今天不求婚,明天
什么鹅的绒毛做羽绒服最好?
进程里的东西
花孖村这个地址在什么地方,我要处理点事
如何申请开通局域网?
如何判定一个人有没精神分裂症和抑郁症
维普引用算不算重复率,自己写的内容标注引用
红嘴相思鸟有价值养吗…
我星座是?
游戏屯的开心农场在哪里?
我的教师资格证笔试到期时间是2016年12月31。
推荐几首安静、悲伤的歌
QQ密保忘了有什么办法可以修改密码?
QQ华夏004要杀了鲛衣公主才能做吗?
关于银行卡在境外刷卡问题
推荐资讯
彩虹的味道是啥样的
CF登陆不上(有图)
开心心香菜馆我想知道这个在什么地方
淘宝开店怎么选择类目
如何品,好茶,好酒,好咖啡。
凤凰家常菜馆在哪里啊,我有事要去这个地方
怎么才能感冒啊
怎样才能加上QQ农场的好友
所谓的友谊?
最 伤心的 事情 是什么
小马综合市场西南门地址在什么地方,想过去办
琦鲁车行这个地址在什么地方,我要处理点事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?