编写程序,输入两个点A(x1,y1)和B(x2,y2)的坐标,求AB两点的距离。结果保留两位小数
时间: 2024-10-07 10:03:41 浏览: 121
在Python中,你可以使用数学库(`math`)中的平方根函数(`sqrt()`)来计算两点之间的距离。两点之间的距离公式为:
\[ d = \sqrt{(x2 - x1)^2 + (y2 - y1)^2} \]
以下是一个简单的程序,它会接受用户的输入并计算两点间的距离:
```python
import math
# 请求用户输入点A和B的坐标
x1, y1 = map(float, input("请输入点A的坐标 (x1, y1): ").split(', '))
x2, y2 = map(float, input("请输入点B的坐标 (x2, y2): ").split(', '))
# 计算两点间距离
distance = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
# 保留两位小数并打印结果
rounded_distance = round(distance, 2)
print(f"两点 {A} 和 {B} 的距离是: {rounded_distance}")
```
在这个例子中,`map(float, ...)`用于将输入字符串转换为浮点数,`round(distance, 2)`则是四舍五入到两位小数。
相关问题
用c++编写代码。要求题目描述: 在一个平面直角坐标系中给定两个点的坐标 A(x1, y1),B(x2, y2),A、B 两个点的横纵坐标都 是整数,连接 A、B 两点,请问线段 AB 上,横纵坐标都是整数的点有多少个。 输入格式: 4 个整数,x1, y1, x2, y2,用空格隔开,表示 A、B 两点的坐标。 输出格式: 一个整数,表示线段 AB 上横纵坐标都是整数的点的数量。 样例输入: 0 0 3 3 样例输出: 4 数据说明: x1, x2, y1, y2 的绝对值都不大于 1000000
以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
int main() {
int x1, y1, x2, y2;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
int dx = abs(x1 - x2); // x轴距离
int dy = abs(y1 - y2); // y轴距离
if (dx == 0) { // 斜率不存在
printf("%d", dy + 1); // 点的数量为两个端点之间的距离+1
} else if (dy == 0) { // 斜率为0
printf("%d", dx + 1); // 点的数量为两个端点之间的距离+1
} else { // 一般情况
int d = gcd(dx, dy); // gcd函数计算最大公约数
printf("%d", d + 1); // 点的数量为两个端点之间的距离除以最大公约数+1
}
return 0;
}
```
首先输入两个点的坐标,然后计算它们之间的距离(横轴距离和纵轴距离),然后分三种情况讨论:
- 斜率不存在,即两点在同一竖直线上,此时线段AB上横纵坐标都是整数的点的数量为两个端点之间的距离+1;
- 斜率为0,即两点在同一水平线上,此时线段AB上横纵坐标都是整数的点的数量为两个端点之间的距离+1;
- 一般情况,此时线段AB上横纵坐标都是整数的点的数量为两个端点之间的距离除以它们之间的最大公约数+1。
最后输出点的数量即可。
写一段C#代码,给出A点坐标x1 y1;B点坐标x2 y2;计算AB边的方位角
在C#中,我们可以使用向量的概念来计算两点之间的方位角。以下是计算A点到B点方位角(从A点看B点的方向)的代码:
```csharp
using System;
public class Vector2D
{
public double X { get; set; }
public double Y { get; set; }
// 向量构造函数
public Vector2D(double x, double y)
{
X = x;
Y = y;
}
// 计算两个向量的内积(点积)
public double DotProduct(Vector2D other)
{
return X * other.X + Y * other.Y;
}
// 计算两个向量的模长(长度)
public double Magnitude()
{
return Math.Sqrt(X * X + Y * Y);
}
// 计算方位角(弧度),基于坐标系顺时针方向为正
public double AngleTo(Vector2D other)
{
double dotProduct = DotProduct(other);
double magnitudeA = Magnitude();
double magnitudeB = other.Magnitude();
// 防止除以零错误
if (magnitudeB == 0)
return 0;
return Math.Acos(dotProduct / (magnitudeA * magnitudeB));
}
}
class Program
{
static void Main(string[] args)
{
Vector2D pointA = new Vector2D(0, 0);
Vector2D pointB = new Vector2D(5, 3);
double directionAngle = pointA.AngleTo(pointB);
Console.WriteLine($"方位角(弧度): {directionAngle}");
// 将角度转换为度数并打印
double degrees = directionAngle * 180 / Math.PI;
Console.WriteLine($"方位角(度): {degrees}");
}
}
```
这段代码首先定义了一个`Vector2D`类,用于表示二维向量。然后计算A点(原点)到B点的向量,并使用向量的点积和模长来找到它们之间的角度。
阅读全文