思路:要构成线段,即长度大于0;存入二维数组,比较时第i个点只和i后面的点计算距离,避免重复,用min记录最短距离
//100个点,任意两点构成线段
//求在可以构成的所有线段中,长度最小的线段长度
#include<stdio.h>
#include<math.h>
#define n 3
int main(){
double a[n][2]={0},min,d;
int i,j;
for(i=0;i<n;i++){
for(j=0;j<2;j++){
scanf("%lf",&a[i][j]);
}
}
min=10000;//尽可能大的一个数
for(i=0;i<n-1;i++){//最后一个距离=倒数第二个点和倒数第一个点之间
for(j=i+1;j<n;j++){
d=pow(a[i][0]-a[j][0],2)+pow(a[i][1]-a[j][1],2);
d=sqrt(d);
if((d<min)&&(d>0)) min=d;//d>0 --构成线段
}
}
printf("%lf",min);
}