法一:利用二维数组求
#include <cmath>
#include <iostream>
double dist(double x1, double y1, double x2, double y2) {
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main() {
double pointA[2] = {0.0, 0.0};
double pointB[2] = {3.0, 4.0};
double distance = dist(pointA[0], pointA[1], pointB[0], pointB[1]);
std::cout << "The Euclidean distance between two points is:" << distance;
return 0;
}
pointA[2]表示二维空间中一个点的数组
pointA[0]表示A点的x坐标,pointA[1]表示A点的y坐标
若A点坐标为(1.0,0.0)
可写成pointA[0]=1.0 pointA[1]=0.0 或pointA[2]={1.0,0.0};
法二:设点求值
#include <cmath>
#include <iostream>
int main() {
double x1 = 1.0;
double y1 = 2.0;
double x2 = 4.0;
double y2 = 6.0;
double distance = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2));
std::cout << "两点的欧几里得距离为:" << distance << std::endl;
return 0;
}
1. sqrt:开平方
2. pow:规定为double pow(double case,int exponent) case:数值 exponent:幅数
pow(a,n):表示a的n次方
用法举例: ①double result=pow(a,n);
②sqrt(pow(x1-x2,2)+pow(y1-y2,2));
法三:借助结构体
#include <>
// 定义一个结构体来表示点
typedef struct {double x,y;} Point;
// 计算两点间的欧几里得距离
double dist(Point a, Point b)
{
return sqrt(( - )*( - ) + ( - )*( - ));
}//或写成 return hypot( - , - );
int main() {
// 声明两个Point结构体,分别表示点A和点B
Point pointA = {0.0, 0.0};
Point pointB = {3.0, 4.0};
// 使用dist函数计算两点间的距离
double distance = dist(pointA, pointB);
printf("两点的欧几里得距离为:%f\n",distance);
return 0;
}
使用结构体来表示点的坐标,替换掉四个double型的坐标值,使代码更清晰易懂
1. hypot:返回为sqrt(x*x+y*y),可用于替换部分代码 (注意:这个函数不是ANSI C的)
2. typedef:可为某一类型自定义名称,使用格式为:typedef 数据类型 新的名字。
与#define不同,typedef创建的符号名只受限于类型,不能用于值。相比之下typedef的使用比 #define更灵活
3. struct 概述:如果要创造一个结构体,需要使用struct关键字,后面跟着结构体名
struct 结构体名{
变量列表;
};
其中,变量列表是包含一个或多个变量的括号内的内容
如
struct Person
{
int 成绩;
char 名字[20];
};
访问结构体的成员时,需要使用点运算符(.):
struct Person 人;
人.成绩 = 100;
strcpy(人.成绩,"小云");
//struct是C语言标准库中的一个字符串复制函数
//用于将一个源字符串的内容拷贝到目标数组中。
4. 结构体的使用 例如:
- 数据存储和管理:结构体可以帮助你更好地组织数据,使其变得更加易于理解和操作。
- 函数参数传递:结构体可以作为函数参数传递给函数,方便传递相关数据。
- 数据交换和共享:结构体可以用于在不同程序之间进行数据的交换和共享。