1、国家二级 C+机试(操作题)模拟试卷 19及答案与解析 一、基本操作题 1 使用 Vc+6 0打开考生文件夹下的源程序文件 1 cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 Number=7 Number=12 注意:错误的语句在 *error*的下面,修改该语句即可。 试题程序: #include class TC public: *error* TC(int i): Number=i *error* return Number; void set(int i) Number=i: void display() coutdisplay(); p-set(12); p-di
2、splay(); return; 二、简单应用题 2 使用 VC+6 0打开考生文件夹下的源程序文件 2 cpp。阅读下列函数说明和代码,补充空出的代码。使 sum(int n)能计算所有 n的因子之和 (不包括 1和自身 )。 注意:不能修改程序的其他部分,只能补充 sum函数。 试题程序: #inelude int sum(int n) void main() cout #include(cmath) class CPoint public: * * * * * * * * 1 * * * * * * * * x=i: y=j; int GetX() return x: int GetY(
3、) return y; private: int x, y; ; class CRectangle public: * * * * * * * * 2 * * * * * * * * int GetArea() * * * * * * * * 3 * * * * * * * * int height=point1 GetY()-point2 GetY(); return(width*height)?width*height: -width* height; private: * * * * * * * * 4 * * * * * * * * CPoint point2; ; int main(
4、) CRectangle rect(0, 0, 1, 1); toutrect GetArea()end1; return 0; 国家二级 C+机试(操作题)模拟试卷 19答案与解析 一、基本操作题 1 【正确答案】 (1)应改为 “TC(int i): Number(i)”。 (2)应删除 “return Number; ”。 (3)应改为 “TC*p=new TC(7); ”。 【试题解析】 本题第 1处是声明构造函数,并使用初始化列表完成成员变量的初始化,可知第 1处的初始化列表错误,正确的应该是 “TC(int i): Number(i)”。构造函数不能有返回值,不能用 return来
5、返回值,故第 2处应将 “return Number; ”删除。类实例在不指定构造函数的情况下,调用的是默认无参数的构造函数,此时成员变量 Number是不确定的,在定义对象时,应使用已定义的构造函数,根据输出结果可知, p指向的对象的 Number初始化值为 7,故第 3处应改为“TC*p=new TC(7); ”。 二、简单应用题 2 【正确答案】 int all=0; for(int i=2; in; i+) if(n i=0) all+=i: return all; 【试题解析】 为了实现计算所有 n的因子之和且不包含 1和自身,在函数中定义一个变量 all来保存求和结果,并为最终结果
6、在函数结束时返回。在循环中逐个寻找 n的因子,为了在计算中排除掉 1和 n本身,因此循环变量 i的变 化范围为 2n-1。如果 n i=0,说明 i是 n的因子,因此将 i加到 all上。 三、综合应用题 3 【正确答案】 (1)应添加 “CPoint(int i=0, int j=0)”。 (2)应添加 “CRectangle(int top, int left, int right, int bottom): point1(top, left),point2(right, bottom)”。 (3)应添加 “int width=point1 GetX()-point2 GetX(); ”。
7、 (4)应添加 “CPoint point1; ”。 【试题解析】 本题中在第 1处添加构造函数定义,该构造带有两个参数 x和 Y的构造函数, x、 y都为 int型,默认值为 0,因此第 1处应添加 “CPoint(int i=0, int j=0)”0第 2处通过 Cpoint类的构造函数来完成 Crectangle类成员的初始化,在函数体内没有任何函数语句,因此其初始化过程是在初始化列表里完成的,通过调用基类的构造函数来实现两个私有对象 point1和 point2的初始化,故第 2处应添加 “CRectangle(int top, int left, int right, int bottom): pointl(top, left),point2(right, bottom)”。面积为矩形长宽的乘积,因此先计算矩形的长和宽,可由两个 Cpoint对象的 z坐标相减计算得到, CPoint对象的 z坐标为私有成员,只能通过公有接口函数调用获得,因此第 3处的语句为 “int width=pointl GetX()-point2 GetX(); ”。 Creetangle类的成员变量为两个 Cpoint对象成员 point1和point2,在第 4处补充 point1的定义,故第 4处应 添加语句 “CPoint pointl; ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1