1、国家二级 C+机试(操作题)模拟试卷 396及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹下的源程序文件 modil cpp,但该程序运行时有错,请改正 main()函数中的错误,使程序的输出结果如下: Constructor Default constructor Area is 12 Area is 0 Area is 12 注意:错误的语句在 *error*的下面,修改该语句即可。 #include class CRectangle private: double length, width; public: CRectangle() coutlength=1; this一
2、 width=w; void GetArea() cout void fun(int N4) int main() int N4=1, 2, 3, 0; fun(N); return 0; 三、综合应用题 3 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补 充完整。完成以下功能: (1)声明类 objA1,请在注释 *1*后添加适当的语句。 (2)为类 objA0增加友元函数 func0,请在注释 *2*后添加适当的语句。 (3)为类 objA1增加友元函数 func0,请在注释 *3*后添加适当的语句。 (4)函数 fun
3、c0返回 obiAl对象中的变量和 objA0的静态变量的乘积,请在注释 *4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。 #include *1* class objA0 private: static int m A0; *2* ; int obj A0: m A0=10; class objA1 private: int m A1; *3* public: objAl(int i) m A1=i; ; int func(objAl obj) *4* int main() objA1 obj0(10); coutfunc(obj 0
4、)endl; return 0; 国家二级 C+机试(操作题)模拟试卷 396答案与解析 一、基本操作题 1 【正确答案】 (1)CRectangle Rect2; (2)CRectangle Rect3(Rectl); (3)Rect2 Set(0, 0); 【试题解析】 程序中定义了类 CRectangle,有 length和 width两个成员变量,两个构造函数, Set()成员函数和 GetArea()成员函数, Set()成员函数可以改变length和 width的值, GetArea()成员函数在屏幕上打印 length和 width的积。 二、简单应用题 2 【正确答案】 int
5、 i, j, k; for(i=0 ; i4; i+) 百位循环 for(j=0 ; j4; j+) 十位循环 for(k=0; k4; K+) 个位循环 if(i!=j &j!=k &k!=i Ni!=0) 当三位数不同,并且百位不为 0 coutNiNjNk endl; 输出这三位数组成的数字 【试题解析】 (1)该程序功能是输出百、十、个位都不相同的组合。它的解题思路,利用 j层循环,对百、十、个位数字是否相同进行判断。 (2)从已给部分源程序的 main主函数开始入手,核心函数 void fun(int N4)中的N4参数为存放输入的四位数字的数组。 三、综合应用题 3 【正确答案】
6、(1)添加语句: class objAl; (2)添加语句: friend int func(objAl obj); (3)添加语句: friend int func(objAl&obj); (4)添加语句: return obj m A1*objA0: mA0; 【试题解析】 友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制,友元不是本类的成员函数,在它的函数体内部可以通过对象名来访问类的私有 成员和保护成员。友元函数是在类声明中由关键字friend修饰的非成员函数。 func()函数为类 objA1的友元,因此可以通过对象名直接访问到 obiA1的私有成员变量。