[计算机类试卷]国家二级C++机试(操作题)模拟试卷130及答案与解析.doc

上传人:registerpick115 文档编号:497189 上传时间:2018-11-28 格式:DOC 页数:9 大小:40KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(操作题)模拟试卷130及答案与解析.doc_第1页
第1页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷130及答案与解析.doc_第2页
第2页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷130及答案与解析.doc_第3页
第3页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷130及答案与解析.doc_第4页
第4页 / 共9页
[计算机类试卷]国家二级C++机试(操作题)模拟试卷130及答案与解析.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、国家二级 C+机试(操作题)模拟试卷 130及答案与解析 一、基本操作题 1 请使用 VC6或使用【答题】菜单打开考生文件夹 projl下的工程 projl,此工程中包含一个源程序文件 main cpp,其中有类 B00k(“书 ”)和主函数 main的定义。程序中位于每个 “ ERROR*found*”下的语句行有错误,请加以改正。改正后程序的输出结果应该是: 书名: C+语句程序设计总页数: 299 已把 “c+语言程序设计 ”翻到第 50页 已把 “C+语言程序设计 ”翻到第 51页 已把 “C+语言程序设计 ”翻到第 52页 已把 “C+语言程序设计 ”翻到第 51页 已把书合上。 当

2、前页: 0 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include using namespace std; class Book char*title; int num_pages;页数 int cur_page;当前打开页面的页码, 0表示书未打开 public: ERROR*found* Book(const char*theTitle, int pages)num_pages(pages) title=new charstrlen(theTi-tle)+1; strcpy(title, theTitle); coutnum_pages)

3、 cout using namespace std; class Room “房间 ”类 int room no; 房 间号 double length; 房间长度 (m) double width; 房间宽度 (m) public: Room(int the room no, double the length, double thewidth): roomno (theroomno), length(thelength), width(the_width) int theRoomNo()constreturn room no; 返回房间号 double theLength()const f

4、 return length; 返回房间长度 double theWidth()constreturn width; 返回房间宽度 *found* double theArea()const) 返回房间面积 (矩形面积 ) ); class Office: public Room “办公室 ”类 chardepart; 7甄属部 n public: Office(int the room no, double the length, double thewidth, const char*the depart) *found* : _ depart=new char strlen(the de

5、part)+1 j; *found* strcpy(_); 一 Office()deletedepart; ) const char*theDepartment()const return depart; )返回所属部门 , int main() * found* Office_;: cout #include using namespace std; class MiniString public: friend ostream&operator(is。 tream&input, MiniString s) 重载流提取运算符 char temp100;用于输入的临时数组 temp0=0;初始

6、为空字符串 inputsetw(100)temp; int inLen=strlen(temp); 输入字符每长度 if(inLen!=0) S 1ength=inLen; 赋长度 if(S sPtr!=0)deleteS sPtr;避免内存泄漏 S sPtr=new charS 1ength+1; strcpy(S sPtr, temp); 如果 S不是空指针,则复制内容 else S sPtr0= 0; 如果 S是空指针,则为空字符串 return input; void modString( const char* string2)更改字符串内容 if(string2 !=0) 如果 s

7、tring2不是空指针,则复制内容 if(strlen(string2)!=length) length=strlen(string2); deletesPtr; sPtr=new char1ength+1; 分配内备 strcpy(sPtr, string2); else sPtr0= 0; 如果 string2是空指针,则为空字符串 MiniString operator=(const Mini。 String otherString); MiniString(const char*S = ”): length(S!=0)?strlen(S): 0) 构造函数 SPtr=0; if(1en

8、gth!=0) setString(S); 一 MiniString()析构函数 deletesPtr; private: int length; 字符串长度 char*sPtr; 指向字符串起始位置 void setString( const char*string2) 辅助函数 sPtr=new charstrlen(string2)+1; 分配内存 if(string2 1=0)strcpy(sPtr, string2); 如果 string2不是空指针,则复制内容 else sPtr0= 0; 如果 string2是空指针,则为空字符串 ; proj3 cpp #include #in

9、clude using namespace std; #include”proj 3 h” MiniString MiniString: operator=(const MiniString otherString) 重载赋值运算符函数。提示:可以调用辅助函数 setString *333* *666* int main() MiniString strl(“Hello!”), str2; VOid writeToFile(const char*); str2=strl;使 用重载的赋值运算符 str2 modString(”Happy new year!”); coutstrl n; cou

10、tstr2 n; writeToFile(”); return 0; 国家二级 C+机试(操作题)模拟试卷 130答案与解析 一、基本操作题 1 【正确答案】 (1)Book(eonst char*theTitle, int pages): numpages(1)ages) (2)void openAtPage(int page n0)把书翻到指定页 (3)curpage=0; 【试题解析】 本题考查 Book类,其中涉及动态数组、构造函数、析构函数、bool函数和成员函数。 【解题思路】 (1)主要考查考生对构造函数的掌握,构造函数的成员列表初始化法要注意它的格式,即成员列表前要有标识符 “

11、: ”,因此语句改为: Book(eonst char*theTitle, int pages): Bumpages(pages)。 (2)主要考查考生对 eonst函数的掌握,在函数体中可以看到有语句 curpage=pagen0,即 curpage的值发生改变,因此该函数不是 const函数。 (3)主要考查考生对成员函数的掌握,题目要求输出的最后一条是 “当前页: 0”,可知主函数中调用 close函数后当前页为 0,因此应该是 curpage: 0;。 二、简单应用题 2 【正确答案】 (1)return length*width: (2)Room(theroom no, thelen

12、gth, the_width) (3)depart, thedepart (4)anoffice(308, 5 6, 4 8, ”会计科 ”) 【试题解析】 主 要考查的是 Room类及其派生类 Office,其中涉及构造函数,const函数,动态数组,析构函数。 strcpy函数用于复制字符串,其格式为:stcpy(字符串 1,字符串 2);。 【解题思路】 (1)主要考查考生对成员函数的掌握,题目要求返回房间面积 (矩形面积 )。由此可知空格部分要填写的是一个 return语句,返回房间面积,也就是 length*width,因此可以得出程序 return length*width;。 (

13、2)主要考查考生对派生类的构造函数的掌握,派生类的构造函数要使用成员列表初始法先对基类进行初始 化。 (3)考查 strcpy函数,由前一条语句 depart: new charstrlen(thedepart)+1;可知,程序给 depart分配了长度为 thedepart串长加 1的空间,因此要复制字符串thedepart串到 depart,直接填写 scpy(depart, thedepart)即可。 (4)主要考查考生对类的掌握,题目要求输出的结果为: 办公室房间号: 308 办公室长度: 5 6 办公室宽度: 4 8 办公室面积: 26 88 办公室所属部门:会计科 由 Office

14、类的构造函数可知要定义 的一个 Office类的对象为 anoffice(308,5 6, 4 8, ”会计科 ”)。 三、综合应用题 3 【正确答案】 length =otherString 1ength;把对象字符串 otherstrinq的长度赋值当变量 lenqth setString(otherString sPtr); 调用函数 setstring,实现给类变量 spt分配空间,以及逐个把对象 otherstring皇 符串的值复制到 sptr中 return*this; 返回被赋值的对象 【试题解析】 本题考查 MiniString类,其中涉及构造函数、动态数组、运算符重载和析构函数。运算符重载是 C+的一个难点,应先了解要被重载的运算符的含义,再根据类的成员完成程序段。 【解题思路】 主要考查考生对运算符重载的掌握,题目要求重载赋值运算符函数。要重载的运算符是 “=”,即赋值的意思。提示:可以调用辅助函数 setString。该函数的功能是复制形参的字符串到 sPtr中,因此,首先复制 length,其次通过函数 set String复制 sPtr,最后按要求返回木 this;。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1