1、国家二级 C+机试(操作题)模拟试卷 396及答案解析(总分:6.00,做题时间:90 分钟)一、基本操作题(总题数:1,分数:2.00)1.使用 VC6打开考生文件夹下的源程序文件 modilcpp,但该程序运行时有错,请改正 main()函数中的错误,使程序的输出结果如下: Constructor Default constructor Area is 12 Area is 0 Area is 12 注意:错误的语句在*error*的下面,修改该语句即可。 #include class CRectangle private: double length,width; public: CRe
2、ctangle() coutwidth=w; void GetArea() coutwidth=w; void GetArea() cout_正确答案:(正确答案:(1)CRectangle Rect2; (2)CRectangle Rect3(Rectl); (3)Rect2Set(0,0);)解析:解析:程序中定义了类 CRectangle,有 length和 width两个成员变量,两个构造函数,Set()成员函数和 GetArea()成员函数,Set()成员函数可以改变 length和 width的值,GetArea()成员函数在屏幕上打印 length和 width的积。二、简单应用
3、题(总题数:1,分数:2.00)2.使用 VC6打开考生文件夹下的源程序文件 modi2cpp。阅读下列函数说明和代码,完成空出部分程序。函数 fun(int N4)的功能是用 4个数字,组成互不相同且无重复数字的三位数,并将满足所有条件的数字输出到屏幕,并且每输出一个三位数字就换一行。 程序分析:可填在百位、十位、个位的数字都是1、2、3、0。组成所有的排列后再去掉不满足条件的排列。如果判定第一个数字是 0则也去掉。 #include void fun(int N4) int main() int N4=1,2,3,0; fun(N); return 0; (分数:2.00)_正确答案:(正
4、确答案:int i,j,k; for(i=0 ; i4;i+) 百位循环 for(j=0 ; j4;j+) 十位循环 for(k=0;k4;K+) 个位循环 if(i!=j int func(objAlobj) *4* int main() objA1 obj0(10); cout_正确答案:(正确答案:(1)添加语句:class objAl; (2)添加语句:friend int func(objAlobj); (3)添加语句:friend int func(objAl&obj); (4)添加语句: return objm A1*objA0:mA0;)解析:解析:友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制,友元不是本类的成员函数,在它的函数体内部可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字 friend修饰的非成员函数。func()函数为类 objA1的友元,因此可以通过对象名直接访问到 obiA1的私有成员变量。