c语言关于蓝桥杯的平面4点的一道题已知平面上若干个点的坐标.需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数).比如有4个点:a,b,c,d,则平均距离是指:ab,ac,ad,bc
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 21:41:10
c语言关于蓝桥杯的平面4点的一道题已知平面上若干个点的坐标.需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数).比如有4个点:a,b,c,d,则平均距离是指:ab,ac,ad,bc
c语言关于蓝桥杯的平面4点的一道题
已知平面上若干个点的坐标.
需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数).
比如有4个点:a,b,c,d,则平均距离是指:ab,ac,ad,bc,bd,cd 这6个距离的平均值.
每个点的坐标表示为:横坐标,纵坐标
坐标的取值范围是:1000
输入
输出
样例输入
10,10
20,20
80,50
10,20
20,10
样例输出
11.38
然后是我写的代码,照上面的输入,输出却是11.39,要怎么改才对
#include
#include
main()
{
int a[20][2],c[4][2],d[20][8];
double b[50],sum;
int i=0,j=0,n=0,x,k=0,m=0,temp;
while(scanf("%d,",&x)==1)
{
if(n==0)
{a[i][0]=x;n=1;}
else
{a[i++][1]=x;n=0;k++;}
}//俩俩输入坐标 ,k代表几对坐标;
for(i=1,n=1;i
c语言关于蓝桥杯的平面4点的一道题已知平面上若干个点的坐标.需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数).比如有4个点:a,b,c,d,则平均距离是指:ab,ac,ad,bc
程序中最后的输出语句中 +0.005 是多余的.就是以为这个0.005,四舍五入的时候结果进位了.
另外,程序中有一些错误:
x=0;
while(m++<n)
{
for(i=0,k=0;i<4;i++)
for(j=0;j<2;j++)
{
c[i][j]=d[m][k++];
}
for(i=0;i<4;i++)
for(j=i+1;j<4;j++)
{
b[x]+=sqrt((c[i][0]-c[j][0])*(c[i][0]-c[j][0])+(c[i][1]-c[j][1])*(c[i][1]-c[j][1]));
}//把每行距离之和保存在b数组
x++;
}
上面这一段中,变量m是多余的(可直接用x),并且在while里写m++是错误的,但是此错误并未影响示例数据的结果.可以改为while(x<n) 并且c[i][j]=d[x][k++];
变量temp应该为 double类型.