阅读以下说明和Java程序,填充程序中的空缺,将解答填入答题纸的对应栏内。 【说明】 下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点

admin2013-07-03  34

问题 阅读以下说明和Java程序,填充程序中的空缺,将解答填入答题纸的对应栏内。
    【说明】
    下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在下图所示的8个点中,点(1,1)与(2,0.5)是问距最近的点对。
   
    [Java代码】
    import java.util.Scanner;
class GPoint
{
private double x,y;
    public void setX(aouble x)  {this.x:x;}
    public void setY(double y)  {this.y=y;}
    public double getX()    {return this.x;}
    public double getY()    {return this.y;
}
class FindNearestPoints{
    public static void main(String[]args){
        Scanner input=new Scanner(System.in);
        System.out.print(”输入点的个数:”);
        int numberOfPoints=input.nextInt():
      (1)  points=new GPoint[numberOfPoints];    //创建保存点坐标的数组
        System.out.print(”请输入”+numberOfPoints+”个点的坐标”);
        for(int i=0;i<points.1ength;i++){
            points=  (2)  
                points.setX(input.nextDouble());
                points.setY(input.nextDouble());
            }
            FindNearestPoints fnp=new FindNearestPoints():
            int p1=0,p2:1;    //p1和p2用于表示距离最近的点对在数组中的下标
            double shortestDistance=fnp.getDistance(points[p1],points[p2]);
                                                  //计算每一对点之间的距离
            for(int i=0;i<:points.1ength;i++)
            {
               for(intj=1+1;j<  (3)  ;J++)
               {
                 double tmpDistance=fnp.  (4)  
                                               //计算两点间的距离
                         if(  (5)  )
                 {
                         p1=i;
                         p2=j;
                         shortestDistance=tmpDistance;
                 }
          }
    }
    System.out.println(”距离最近的点对是(”+
       points[p1].getX()+”,”+points[p1].getY()+”)和(”+
       points[p2].getX()+”,”+points[p2].getY()+”)”);
}
    public double getDistance(GPoint ptl,GPoint pt2)
    {
            retum Math.sqrt((pt2.getX() - pt1.getX())*(pt2.getX() - pt11getX())
               +(pt2.getY() - pt1.getY())*(pt2.getY() - pt1.getY());
    }
}

选项

答案(1)GPoint[] (2)new GPoint[] (3)points.length (4)getDistance(points[i],points[j]) (5)shortestDistance>tmpDistance

解析 本题考查考生使用Java语青进行面向对象程序设计的能力。首先要理解清楚题目中有关最近点对的概念和计算方法,然后阅读程序以实现该功能。
    (1)处显示创建保存点坐标的数组。这里的new运算符用于开辟数组空间,其语法规则为:new类型[初值]。(1)处需要填入一类型修饰符,因此应填入GPoint。类似的思路,(2)处考查Java语言中用new初始化数组,应填入new GPoint[]。
    根据程序段中的注释,(3)和(4)处实现计算每一对点之间的距离。(3)处为循环控制变量,因为要计算所有对点间的距离,因此应填入points.1ength。(4)处应调用computeDistance类的distance函数计算每一对点points和points[j]之间的距离,因此应填入getDistance(points,points[j])。
    (5)处应填入一个判断条件,以输出距离最小的点对。这可通过比较shortestDistance和tmpDistance来实现。因此,(5)处应填入shortestDistance>tmpDistance。
转载请注明原文地址:https://jikaoti.com/ti/VbW7FFFM
0

最新回复(0)