1、国家二级 C+机试(操作题)模拟试卷 475及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 proj1下的工程 proj1,此工程中包含了类 Pets(“宠物 ”)和主函数 main的定义。程序中位于每个 “ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Name: sonny Tvpe: dog Name: John Type: dog Name: Danny Type: cat Name: John Type: dog 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #incl
2、ude using namespace std; enum Pets typedog, cat, bird, fish); class Pets private: char*name; Pets type type; public: Pets (const char * name=“sonny“, Pets_type type=dog); Pets&operator=(const Pets&s); Pets(); void show()const; ; Pets: Pets(const char*name, Pets type type) 构造函数 this-name = new char s
3、trlen(name)+1; strcpy(this-name, name); ERROR *found* type=type; Pets: Pets()析构函数,释放 name所 指向的字符串 ERROR *found* name= 0; Pets&Pets: operator=(constPets&s) if(&s=this) 4保不要向自身赋值 return*this; deletename; name=new charstrlen(s name)+1; ERROR *found* strcpy(this-name, name); type=s type; return*this ; v
4、oid Pets: show()const cout using namespace std; class Class “班级 ”类 public: Class(const char*id, const char*room) strcpy(class id, id); *found* const char*getClassID() constreturn class id; 返回班号 *found* const char *getClassroom() const_ 返回所在教室房号 void changeRoomTo(const char *new room) 改换到另一个指定房号的教室 s
5、trcpy(classroom, new_room); private: char class id20; 班号 char classroom20; 所在教室房号 ; class Student “学生 ”类 char my id10; 学号 char my name20;姓名 Class&my class; 所在教室 public: *found* Student(const char*the_id, const char*the_name, Class&the class): _ strcpy(my_id, the_id); strcpy(my_name, the_name); const
6、 char*getID()constreturn my_id; const char*getName()constreturn my_name; Class getClass()constreturn my_class; ; void shOwStudent (Student * stu) coutgetID() getName() get Class() getClassID()get Class() getClassr00m() using namespace std; template class Array数组类 public: Array(Type b, int mm) 构造函数 f
7、or(int i=0; i=m) cout void Array: Contrary()补充函数体 *333* *666* int main() int s15=1, 2, 3, 4, 5); double s26=1 2, 2 3, 3 4, 4 5, 5 6, 8 4); Arraydl(s1, 5); Arrayd2(s2, 6); int i; d1 Contrary(); d2 Contrary(); couttype=type; (2)deletename; (3)strcpy(this-name, s name); 【试题解析】 (1)主要考查考生对构造函数的掌握情况,因为形参名
8、和类的私有成员名称都是 type,为了避免混淆,所以规定类的私有成员使用 this指针调用,即: this-type=type:。 (2)主要考查考生对析构函数的掌握情况,题目中要求,释放 name所指向的字符串。要释放 name指针用 delete语句,即 deletename;。 (3)主要考查考生对 strepy函数的掌握情况, strepy函数的形参为两个字符串,而 nalne为指向字符串的指针,因此使用语句: strepy(this-name, s nanle);。 二、简单应用题 2 【正确答案】 (1)strcpy(classroom, room); (2)return clas
9、sroom; (3)my_class(the_class) (4)cla changeRoomTo(“311“); 【试题解析】 (1)主要考查 考生对 strcpy函数的掌握情况,根据上一条语句:strcpy(classjd, id);可知,这条语句要复制字符串 room,因此使用 strcpy函数复制,即 strcpy(classroom, room);。 (2)主要考查考生对函数返回值的掌握情况,根据函数要求:返回所在教室房号及函数要求返回的类型为 const char*,可以得出这里直接使用 return语句返回classroom即可。 (3)主要考查考生对构造函数的掌握情况,先看函数体中: strcpy(my_id, the_id); strcpy(my_name, the_name); 可知只有参数 Class&the_class未使用,因此在这里使用成员列表初始化给my_class赋初始值。 (4)主要考查考生对成员函数调用的掌握,程序要求 062113班的教室由 521改换到 311。在类 Class中已经定义了函数: void changeRoomTo(const char*new_room),因此直接调用函数 changeRoomTo即可。 三、综合应用题 3 【正确答案】 tor(int i =0, j=m1; i j时停止交换即可。