1、国家二级 C+机试(操作题)模拟试卷 473及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,其中有点类 Point和线段类 Line和主函数 main的定义,程序中位于每个 “ERROR*found*”之的一行语句有错误,请加以改正。改正后程序的输出应为: p1=(8, 4)p2=(3, 5) 注意:只修改两个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include #include using namespace std; class Point double x, y; public: Poi
2、nt(double x=0 0, double y=0 0) ERROR*found* x=x; y=y; double getX()constreturn x; double getY()constreturn y; ERROR *found* void show()constcout double length(Point p1, Point p2) return sqrt(p1 getX()一 p2 getX()*(p1 getX()一 p2 getX()+(p1 getY()一p2 getY()*(p1 getY()一 p2 getY(); double Triangle: perim
3、eter ()const 一个 return语句,它利用 length函数计算并返回三角形的周长 *found* _; double Triangle: area()const double s=perimeter() 2 0; return sqrt(s*(slength(point1, point2)* (slength(point2, point3)球 (slength(point3, point1); proj2 cpp #include“shape h“ #include using namespace std; *found* show函数的函数头 (函数体以前的部分 ) cout
4、 using namespace std; class ValArray int*V; int size; public: ValArray(const int*p, int n): size(n) v=new intsize; for(int i=0; ix=x, this-y=y; (2)void show()constcout(x, y); (3): p1(pt1), p2(pt2)或 p1=pt1; p2=pt2 【试题解析】 (1)主要考查考生对构造函数的掌握,因为形参名和私有成员名称一样,因此不能直接赋值,在这里使用成员列表初始化,也可以使用 this指针赋值。 (2)主要考查考生
5、对语句基本语法的掌握,根据语句: void show()constcout(x, y)。可看出函数体内并没有 “; ”作为 cout语句的结束符,因此程序错误。 (3)主要考查考生对构造函数的掌握,形参是 pt1和 pt2,这里写反了,也可以使用成员列表初始化法,可以避免这种错误。 二、简单应用题 2 【正确答案】 (1)x(x0), y(y0) (2)Point point1, point2, point3 (3)return length(point1, point2)+length(point1, point3)+length(point2, point3) (4)void show(S
6、hape&shape) 【试题解析】 (1)主要考查考生对构造函数的掌握,题目要求用 x0、 y0初始化数据成员 x、 y,因此在这里使用成员列表初始化,即 Point(double x0, double y0):x(x0), y(y0)。 (2)主要考查考生对构造函数的掌握,题目要求定义 3个私有数据成员。由构造函数可知 3个私有数据成员的类型都是 Point,名称分别为 point1、 point2和point3,因此空格处填写: Point point1, point2, point3。 (3)主要考查考生对成员函数的掌握,题目要求使用 return语句,利用 length函数计算并返回
7、三角形的周长。 length函数返回的是两点间的距离,因此 return语句只要返回三角形三条边的距离和,即为三角形的周长。 (4)主要考查考生对成员函数的掌握,这里要定义 show函数的函数头 (函数体以前的部分 )。由主函数 main中 show函数的使用情况 show(s)和 show(tri)可知, s是Shape类, tri是 Triangle类,因为 Triangle是 Shape类的派生类,所以可知 show函数的参数是 Shape类型,无返回值,得出语句 void show(Shape&shape)。 三、综合应用题 3 【正确答案】 Size=other Size; v=ne
8、w intsize; for(int i=0; isize; i+) setArray(i, other vi); 【试题解析】 主要考查考生对复制构造函数的掌握, ValArray类的复制构造函数应实现对象的深层复制。由 ValArray类的构造函数: ValArray(const int* p, int n) : size(n) v=new intsize; 给 v分配大小为 size的空间 for(int i=0; i size; i+) 遍历 p vi =pi; 把 pi赋值给 vi 可知类中 v是动态数组, size表示数组长度,因此要先给 v分配空间为 size,再逐个元素复制以达到对象的深层复制。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1