首页 > 试题广场 >

两直线交点

[编程题]两直线交点
  • 热度指数:8350 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}你需要实现一个函数,接受的参数为两条直线 AB、CD,返回值为点类型的两直线的交点。
\hspace{15pt}
\hspace{15pt}函数接收的参数为:
{\hspace{20pt}}_\texttt{1.}\,由点 A 和点 B 构成的直线 AB
{\hspace{20pt}}_\texttt{2.}\,由点 C 和点 D 构成的直线 CD

\hspace{15pt}你需要实现的函数的返回值为:
\hspace{23pt}\bullet\,由直线 AB 和直线 CD 相交而得到的交点 P。若两直线交点不唯一,则返回点 (-1,-1)

输入描述:
\hspace{15pt}提供输入格式只是方便您在代码出错时进行调试,你只需要按照题目描述实现函数即可,并不需要关心数据的实际输入格式。

\hspace{15pt}输入包含两行:
\hspace{23pt}\bullet\,第一行包含四个正整数,分别为点 A 的横纵坐标的点 B 的横纵坐标。
\hspace{23pt}\bullet\,第二行包含四个正整数,分别为点 C 的横纵坐标的点 D 的横纵坐标。
\hspace{15pt}数据保证点 A 和点 B 不重合,点 C 和点 D 不重合,且若交点 P 存在则其横纵坐标的绝对值均在 10^4 以内。


输出描述:
\hspace{15pt}提供输出格式只是方便您在代码出错时进行调试,你只需要按照题目描述实现函数即可,并不需要关心数据的实际输出格式。

\hspace{15pt}输出一行两个实数,分别为直线 AB 直线 CD 交点 P 的横纵坐标。特别的,如果两直线交点不唯一,则输出  \text{-1 -1}
\hspace{15pt}注意,只要您的答案与标准答案之差在 10^{-6} 以内,就会被认为是正确的。
示例1

输入

0 0 1 1
0 2 2 0

输出

1.000000 1.000000

说明


按照输入格式,点 A 为 (0,0)点 B 为 (1,1)点 C 为 (0,2)点 D 为 (2,0)
图中绿线表示直线 AB,红线表示直线 CD,两直线交于点 P (1,1),此时点 P 与点 B 重合。
头像 冷意
发表于 2025-06-07 22:12:18
#include<bits/stdc++.h> using namespace std; struct point { double x, y; point(double A, double B) { x = A, y = B; } po 展开全文
头像 Silencer76
发表于 2025-06-11 20:28:49
题目链接 两直线交点 题目描述 给定两条直线,每条直线由两个不同的点确定。你需要计算这两条直线的交点坐标。 题目以核心代码模式提供,你需要实现 findMeetingPoint 函数。 直线 A 由点 定义。 直线 B 由点 定义。 如果两直线平行或重合(没有唯一交点),则返回点 (-1, - 展开全文
头像 ZYCwuque
发表于 2025-08-18 21:37:06
这题纯恶心人,要考虑的情况非常多,包括两条直线都是铅垂线,然后重合,这个时候斜率是不存在的,需要注意,然后测试案例里面还有平行的情况,我一开始以为没有的,调试了一段时间才发现是平行的问题,还有就是应当学到,如果返回的结果中有NaN,就很有可能是由于做除法的时候分母为零导致 import java.u 展开全文
头像 手有余湘
发表于 2025-07-09 17:35:48
class Point: def __init__(self, x=0.0, y=0.0): self.x = x self.y = y class Line: def __init__(self, point_a=None, point_b=Non 展开全文
头像 吐司仙人
发表于 2026-01-24 11:27:21
#include <bits/stdc++.h> using namespace std; struct point { double x, y; point(double A, double B) { x = A, y = B; } p 展开全文
头像 123Du
发表于 2026-03-31 21:01:04
class Point: def __init__(self, x=0.0, y=0.0): self.x = x self.y = y class Line: def __init__(self, point_a=None, point_b=No 展开全文
头像 BaiJay
发表于 2026-01-12 16:23:56
#include <bits/stdc++.h> using namespace std; struct point { double x, y; point(double A, double B) { x = A, y = B; } p 展开全文
头像 银河护胃队
发表于 2026-01-23 16:48:42
#include <bits/stdc++.h> using namespace std; struct point { double x, y; point(double A, double B) { x = A, y = B; } p 展开全文
头像 意若久时天然呆
发表于 2026-01-15 13:48:58
class Point: def __init__(self, x=0.0, y=0.0): self.x = x self.y = y class Line: def __init__(self, point_a=None, point_b=No 展开全文
头像 需要热奶茶
发表于 2025-09-07 16:25:37
#include<bits/stdc++.h> using namespace std; struct point { double x, y; point(double A, double B) { x = A, y = B; } po 展开全文