1、国家二级 C+机试(操作题)模拟试卷 456及答案与解析 一、基本操作题 1 使用 VC6打开考生文件夹 proj1下的工程 proj1,其中定义了一个 CD类。程序中位于每个 ERROR*found*下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是: 歌唱祖国 30 义勇军进行曲 95 注意:只能修改每个 ERROR*found*下的那一行,不要改动程序中的其他内容。 #include #include using namespace std; class CD char name20; int number; public: void init(char*aa,
2、 int bb) ERROR*found* name=aa; number=bb; char*getName() ERROR*found* return*name; int getNumber()return number; void output() ERROR*found* cout using namespace std; class Department “部门 ”类 public: Department(const char * strcpy(this-name, name); *found* const char*getName()constreturn name; 返回部门名称
3、*found* const char*getOffice() const_) 返回办公室房号 void changeOfficeTo (const char*office)改换为指定房号的另一个办公室 strcpy(this-office, office); private: char name20; 部门名称 char office20; 部门所在办公室房号 ; class Staff “职工 ”类 public: *found* Staff(const char*my id, const char*my_name, Department&my dept): _ strcpy(this-st
4、aff_id, my id); strcpy(this-name, my_name); const char*getID()constreturn staff id; const char*getName()constreturn name; Department getDepartment()constreturn dept; private: char staff id10; 职工号 char name20;姓名 Department&dept; 所在部门 ; void showStaff(Staff&staff) cout #include using namespace std; cl
5、ass CDeepCopy public: int n; 动态数组的元 素个数 int *p; 动态数组首地址 CDeepCopy(int); CDeepCopy(); CDeepCopy&operator=(constCDeepCopy&r);赋值运算符函数 ; void writeToFile(char*); main cpp #include“CDeepCopy h“ CDeepCopy: CDeepCopy() deletep; ) CDeepCopy: CDeepCopy(int k)n=k; p=new intn; 构造函数实现 CDeepCopy&CDeepCopy: opera
6、tor=(const CDeepCopy&r) 赋值运算符函数实现 *333* *666* int main() CDeepCopy a(2), d(3); a p0=1; d p0=666; 对象 a, d数组元素的赋值 CDeepCopy b(3); a p0=88; b=a; 调用 赋值运算符函数 coutoffice, office); (2)return office; (3)dept(my_dept) (4)dept changeOfficeTo(“311“); 【试题解析】 (1)主要考查考生对 strcpy函数的掌握情况,根据上一条语句:strcpy(this-name, na
7、me);可知,这条语句复制的是 office,即 strcpy(this-office, office);。 (2)主要考查考生对成员函数的掌握情况,根据语句的注释:返回办公室房号可知,要填写的是一条 return语句。在私有成员里: char office20;部门所在办公室房号,表明 office即为办公室房号。因此直接返回 office即可。 (3)主要考查考生对构造函数的掌握情况,根据函数体: strcpy(this-staffl_id, my_id); st rcpy(this-name, my_name); 可知,只有 dept没有初始化,而空格前有字符 “: ”,这是成员列表初始
8、化的标识符,因此填写 dept(my_dept)即可。 (4)主要考查考生对成员函数的调用的掌握情况,根据题目要求:人事处办公室由 521搬到 311。在 Department类中有函数 void changeOfficeTo(constchar*office)可以修改办公室的房间号,直接调用即可。 三、综合应用题 3 【正确答案】 n=r n;把对象 r字符长度赋值给 n deletep; 删除动态数组 p p=new intn; 给动态数组 p分配空间为 n for(int i=0; in; i+) 遍历对象 r中的数组 p pi=r pi; 把 r pi赋值给 pi return*this;返回被赋值的对象 【试题解析】 主要考查考生对运 算符重载的掌握,由注释可知此处要实现赋值运算符函数。要重载的运算符是 “=”,该类的成员是动态数组 p,数组元素个数为n,因此先释放原来的动态数组,再分配空间,然后逐个复制元素即可。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1