问答题
请使用菜单命令或直接使用VC6打开
下的工程proj1。程序中位于每个//ERROR**********found**********下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是:两点之间的距离为:7.5231
注意:只能修改每个//ERROR **********found**********下的那一行,不要改动程序中的其他内容。
#include <iostream>
#include<cmath>
using namespace std;
class Point{
private:
double x, y;
public:
Point(double xx, double yy){
x=xx;
y=yy;
}
//ERROR **********found**********
double MyDistance(Point &a, Point &b);
};
double MyDistance(Point &a, Point &b){
//ERROR **********found*********
double dx=x-b.x;
//ERROR **********found**********
double dy=a.y-y;
retum sqrt(dx*dx+dy*dy);
}
int main()
{
Point p1(3.6, 6.4), p2(8, 0.3);
double d=MyDistance(p1, p2);
cout<<“两点之间的距离为:”<<d<<endl;
return 0;
}
【正确答案】
【答案解析】(1)friend double MyDistance(Point &a, Point &b);
(2)double dx=a.x-b.x;
(3)double dy=a.y-b.y;
答案考生文件夹
[解析] 本题考查Point类,其中涉及友元函数,成员变量的访问。
(1)主要考查考生对友元函数的掌握,由于MyDistance函数在类定义体外定义时,未加类名Point修饰作用域,可知MyDistance并不是类Point的成员函数,但是声明是在Point定义体内部,所以应该是友元函数,另外函数MyDistance可以直接操作Point对象的成员变量,所以进一步确定是友元函数,使用friend关键字修饰。
(2)主要考查考生对友元函数的掌握和成员变量的访问,在函数。MyDistance中,为了计算a、b两点的距离,需要计算两个点的横纵坐标差值,所以需要访问a、b的横纵坐标,将a的横坐标减去b的横坐标,得到差值dx,再计算dy。
(3)主要考查考生对友元函数的掌握和成员变量的访问,在函数MyDistance中,为了计算a、b两点的距离,需要计算两个点的横纵坐标差值,所以需要访问a、b的横纵坐标,将a的纵坐标减去b的纵坐标,得到差值dy,再与dx一起计算距离。