1、国家二级 C+机试(操作题)模拟试卷 225及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 projl,此工程中含有一个源程序文件 proj1 cpp。其中位于每个注释 “ ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: Constructor called The value is 10 Copy constructor called The value is 10 Destructor called Destructor called 注意:只修改注释 “ ERROR *found*”的下一行语
2、句,不要改动程序中的其他内容。 1 proj1 cpp 2 #include 3 using namespace std; 4 5 class MyClass 6 public: 7 ERROR *found* 8 MyClass(int i) 9 value=i; cout 2 using namespace std; 3 clas s Department “部门 ”类 4 public: 5 Department(const char *name, const char*office) 6 strcpy(this-name, name); 7 *found* 8 _ 9 10 const
3、 char*getName()constre-turn name; 返回 部门名称 11 *found* 12 const char*getOffice()const _ 返回办公室房号 13 void changeOfficeTo(const char *of-fice) 改换为指定房号的另一个办公室 14 strcpy(this-office, office); 15 16 private: 17 char name2 0; 部门名称 18 char office20; 部门所在办公室房号 19 ; 20 class Staff “职工 ”类 21 public: 22 *found* 2
4、3 Staff(const char*my_id, constchar*my_name, Department 29 Department getDepartment()const return dept; 30 private: 31 char staff id10; 职工号 32 char name20; 姓名 33 Department 35 void showStaff(Staff staff) 36 cout 3 using namespace std; 4 class MiniComplex复数类 5 6 public: 7 重载流插入和提取运算符 8 friend ostream
5、 19 20 MiniComplex(double real=0, doub-le imag=0); 21 构造函数 22 MiniComplex operator+ (const MiniC0mplex 23 重载运算符 + 24 private: 25 double realPart;存储实 部变量 26 double imagPart;存储虚部变量 27 ; 28 29 void writeToFiie(char*); 1 main cpp 2 #include“MiniComplex h“ 3 MiniComplex: MiniComplex (double re-al, double
6、 imag)f realPart=reai;imagPart=imag; 4 MiniComplex MiniComplex: operator+(const MiniComplex 14 MiniComplex numl(23, 34), num2(56, 35); 15 coutoffice, office); (2)return office; (3)dept(my_dept) (4)dept changeOfficeTo(“311“); 【试题解析】 (1)主要考查考生对 strcpy函数的掌握情况,根据上一条语句:strcpy(this-name, name);可知,这条语句复制的是
7、 office,即 strcpy(this-office, office);。 (2)主要考查考生对成员函数的掌握情况,根据语句的注释:返回办公室房号可知,要填写的是一条 return语句。在私有成员里: char office20;部门所在办公室房号,表明 office即为办公室房号。因此直接返回 office即可。 (3)主要考查考生对构造函数的掌握情况,根据函数体: strcpy(this-staff _id, my_jd); strepy(this-name, my_name); 可知,只有 dept没有初始化,而空格前有字符 “: ”,这是成员列表初始化的标识符,因此填写 dept(
8、my_dept)即可。 (4)主要考查考生对成员函数的调用的掌握情况,根据题目要求:人事处办公室由 521搬到 311。在 Department类中有函数 void changeOfficeTo(const chat*office)可以修改办公室的房间号,直接调用即可。 三、综合应用题 3 【正确答案】 1 MiniComplex sum; 定义复数对象 sum 2 sum imagPart=this-imsgPart +otherComplex imagPart;把 this中的虚部(this-imaqPart)和 othercomplex虚部相加赋值给 sum虚部 3 sum realPart =this-realPart +otherComplex realPart;把 this中的实部 (this-reapart)加上 othercomplex实部赋值给 sum实部 4 return sum; 返回对象 sum 【试题解析】 主要考查考生对运算符重载的掌握,题目要求编写 op-erater+运算符函数,以实现复数的求和与运 算。复数的和的实部等于两个复数的实部之和,虚部等于两个复数的虚部之和。函数要返回的类型是 MiniComplex,因此要先定义一个 MiniComplex类型变量 sum,然后对它们的实部和虚部各自求和,返回sum即可。