1621: 实验13-5:求相距最近的两个点
OJ team:杨富超&&朱明华
题目描述
输入五个点(float型),输出哪两个点间的距离最近。 输入输出格式参见样例。
输入
float型五个点的坐标
输出
最近的两个点坐标及距离
样例输入
1.5,3
4,2.5
2,1
3,1.5
6,5
样例输出
点(2,1)和点(3,1.5)的距离最近,距离为 1.12
题解
#include<stdio.h>
#include<math.h>
struct shu
{
float x;
float y;
}N[5];
float fun(float n,float m,float k,float l)
{
float a=pow(n-k,2);
float b=pow(m-l,2);
return sqrt(a+b);
}//得到距离
int main ()
{float min=10000,k=0;
int a,b;
for(int i=0;i<5;i++){
char c;
scanf("%f%c%f",&N[i].x,&c,&N[i].y);
}//输入
for(int i=0;i<5;i++){
for(int j=i+1;j<5;j++)
{
k=fun(N[i].x,N[i].y,N[j].x,N[j].y);
if(k<min)//判断最小值
{
min=k;
a=i;
b=j;
}
}
}
printf("点(%g,%g)和点(%g,%g)的距离最近,距离为 %.2f",N[a].x,N[a].y,N[b].x,N[b].y,min);
return 0;
}
本专栏为东北大学C语言课程题库的题解,内含盖课程要求的50题的题解(慢慢更新),每个都是一字一字亲手码出来的代码,手动秃头。所有题解都是OJ通过的。