//以下为原创答案和测试结果图。
#include <stdio.h>
#include <math.h>
double LONG(double a[],double b[]);
void main()
{
double a[4],b[4],c[4],d[4],x1[4],x2[4];
printf("请逆时针输入四点的横坐标\n");
printf("请先输入根号下的数,若没有输入0,再输入空格(重要),再输入分数位,再输入空格,\n");
printf("再输入分母,没有分母输入1,最后然后回车,接着输入下一个点的横坐标\n");
scanf("%lf %lf %lf",&a[0],&c[0],&d[0]);x1[0]=sqrt(a[0])+c[0]/d[0];
scanf("%lf %lf %lf",&a[1],&c[1],&d[1]);x1[1]=sqrt(a[1])+c[1]/d[1];
scanf("%lf %lf %lf",&a[2],&c[2],&d[2]);x1[2]=sqrt(a[2])+c[2]/d[2];
scanf("%lf %lf %lf",&a[3],&c[3],&d[3]);x1[3]=sqrt(a[3])+c[3]/d[3];
printf("请逆时针输入四点的纵坐标\n");
scanf("%lf %lf %lf",&b[0],&c[0],&d[0]);x2[0]=sqrt(b[0])+c[0]/d[0];
scanf("%lf %lf %lf",&b[1],&c[1],&d[1]);x2[1]=sqrt(b[1])+c[1]/d[1];
scanf("%lf %lf %lf",&b[2],&c[2],&d[2]);x2[2]=sqrt(b[2])+c[2]/d[2];
scanf("%lf %lf %lf",&b[3],&c[3],&d[3]);x2[3]=sqrt(b[3])+c[3]/d[3];
if (LONG(x1,x2)==1)
printf("四个顶点坐标构成了一个等边四边形\n");
else
printf("四个顶点坐标没有构成等边四边形\n");
}
double LONG(double x1[],double x2[])
{
double l1,l2,l3,l4,n;
n=0;
l1=(x1[0]-x1[1])*(x1[0]-x1[1])+(x2[0]-x2[1])*(x2[0]-x2[1]);
l2=(x1[1]-x1[2])*(x1[1]-x1[2])+(x2[1]-x2[2])*(x2[1]-x2[2]);
l3=(x1[2]-x1[3])*(x1[2]-x1[3])+(x2[2]-x2[3])*(x2[2]-x2[3]);
l4=(x1[3]-x1[0])*(x1[3]-x1[0])+(x2[3]-x2[0])*(x2[3]-x2[0]);
if (l1==0)
printf("数据有误");
if (l1==l2)
n=n+1;
else
n=n;
if (l2==l3)
n=n+1;
else
n=n;
if (l3==l4)
n=n+1;
else
n=n;
if (l4==l1)
n=n+1;
else
n=n;
if (n==4)
return 1;
else
return 0;
}
但若将上面那个点横坐标改为0.5,就不是正方形了,如图。