作业帮 > 综合 > 作业

c语言关于蓝桥杯的平面4点的一道题

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/23 03:24:16
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点的一道题
程序中最后的输出语句中 +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类型.
再问: 不行啊,照你说的改答案更离谱了,m不能删,不信你改后运行下,另外题目让我4舍五入的,加0.005按理没错,实际却错了
再答: 我试过的m可以删除,变量m完全可以用x代替。 四舍五入的功能 printf("%.2lf",b[0]/6); 语句中就%.2lf已经四舍五入了,不用再写+0.005 或者判断什么的语句。