题目
第2题
试题五(共15分)
阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图5-1所示的8个点中,点(1,1)与(2,0.5)是间距最近的点对。
【C++代码】
include <iostream>
include <cmath>
using namespace std;
class GPoint {
private:
double x, y;
public:
void setX(double x) { this->x = x; }
void setY(double y) { this->y = y; }
double getX() { return this->x; }
double getY() { return this->y; }
};
class ComputeDistance {
public:
double distance(GPoint a,GPoint b) {
return sqrt《a.getX() - b.getX())*(a.getX() - b.getX())
+ (a.getY() - b.getY())*(a.getY() - b.getY()));
}
};
int main()
{
int i,j, numberOfPoints=0;
cout<<"输入点的个数:";
cin>>numberOfPoints;
(1) points= neW GPoint[numberOfPoints];//创建保存点坐标的数组
memset(points,0,sizeof(points));
cout <<"输入"<< numberOfPoints<<"个点的坐标:";
for(i=0;i<numberOfPoints; i++){
double tmpx, tmpy;
cin>>tmpx>>tmpy;
points[i].setX(tmpx);
points[i].setY(tmpy);
}
(2) computeDistance= new ComputeDistance();
int p1=0,p2=1;//p1和p2用于表示距离最近的点对在数组中的下标
double shortestDistance= computeDistance->distance(points[p1], points[p2]);
//计算每一对点之间的距离
for(i=0;i<numberOfPoints; i++){
for(j=i+1;j< (3) ;j++){
double tmpDistance=computeDistance-> (4) ;
if ((5) ) {
p1=i; p2 =j;
shortestDistance= tmpDistance;
}
}
}
cout<<"距离最近的点对是:(";
cout"points[p1].getX()<<","<<points[pl].getY()<<")和(";
cout<<points[p2].getX()<<","<<points[p2].getY()<<")"<<endl;
delete computeDistance;
return 0:
}
第3题
试题六(共15分)
阅读以下说明和Java程序,填充程序中的空缺,将解答填入答题纸的对应栏内。
【说明】
下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图6—1所示的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.nextlnt();
(1) points= new GPoint[numberOfPoints]; //创建保存点坐标的数组
System.out.print("请输入"+numberOfPoints+"个点的坐标");
for (int i=0;i<points.length; i++){
points[i]= (2) ;
points[i].setX(input.nextDouble());
points[i].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.length; 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 pt1, GPoint pt2)
{
retum Math.sqrt((pt2.getX() – pt1.getX())*(pt2.getX() – ptl1getX())
+ (pt2.getY() – pt1.getY())*(pt2.getY() – pt1.getY());
}
}
第5题
A.2
B.3
C.4
D.5
第6题
A.2
B.3
C.4
D.5
为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!