【计算机类职业资格】二级C++-61及答案解析.doc

上传人:outsidejudge265 文档编号:1324117 上传时间:2019-10-17 格式:DOC 页数:4 大小:40KB
下载 相关 举报
【计算机类职业资格】二级C++-61及答案解析.doc_第1页
第1页 / 共4页
【计算机类职业资格】二级C++-61及答案解析.doc_第2页
第2页 / 共4页
【计算机类职业资格】二级C++-61及答案解析.doc_第3页
第3页 / 共4页
【计算机类职业资格】二级C++-61及答案解析.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、二级 C+-61及答案解析(总分:100.00,做题时间:90 分钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1,此工程中含有一个源程序文件proj1.cpp。其中每个注释“/ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: smaller smaller smaller largest 注意:只修改注释“/ERROR *found*”的下一行语句,不要改动程序中的其他内容。 /proj1.cpp #include iostream using namespace s

2、td; const int Size =4; class MyClass public: MyClass(int x=0) :value(x) void Set(int x) value=x; friend void Judge(MyClass private: int value; ; / ERROR * found* voidMyClass:Judge(MyClass else cout “smaller“ endl; int main () MyClass * ptr =new MyClassSize; for(int i=0;i_二、B简单应用题/B(总题数:1,分数:30.00)2.

3、请使用 VC6或使用答题菜单打开考生文件夹 proj2下的工程 proj2,此工程中含有一个源程序文件proj2.cpp,其中定义了 MyString类。MyString 是一个用于表示字符串的类,其构造函数负责动态分配一个字符数组,并将形参指向的字符串复制到该数组中;成员函数 reverse的功能是对字符串进行反转操作,例如,字符串“ABCDE”经过反转操作后,会变为“EDCBA”;成员函数 print的作用是将字符串输出到屏幕上。 请在横线处填写适当的代码并删除横线,以实现 MyString类的功能。此程序的正确输出结果应为: Before reverse: abc defg After

4、reverse: cha gfed 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“/*found*”。 /proj2.cpp #include iostream using namespace std; class MyString public: MyString (const char* s) /* found* m_str = new char_; strcpy (m_str, s) ; MyString () /* found* _; void reverse () int n = strlen(m str) ; for (int i=0; i n/2;

5、+i) int tmp = m_stri; /* found* m_stri = _; /* found* _; void print () cout m_str endl; /其他成员. private: char* m_str; ; int main(int argc, char * argv) MyString str1 (“abc“), str2 (“defg“); cout “Before reverse: /n“; str1.print (); str2.print (); str1.reverse (); str2.reverse (); cout “After reverse:

6、 /n“; str1.print (); str2.print (); return 0; (分数:30.00)_三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 proj3下的工程文件 proj3。本题创建一个小型字符串类,字符串长度不超过 100。程序文件包括 proj3.h、proj3.cpp、writeToFile.obj。补充完成 proj3.h,重载+运算符。 要求: 补充编制的内容写在“/*333*”与“/*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out.dat中。输出函数writeToFile已

7、经编译为 obj文件,并且在本程序中调用。 /proj3.h #include iostream #include iomanip using namespace std; class MiniString /+运算符重载 public: friendostream return output; friend istream /用于输入的临时数组 temp0 = /0; input setw (100) temp; int inLen = strlen(temp); /取输入字符串长度 if( inLen ! = O) s.length = inLen; /赋长度 if(s.sPtr! = 0

8、) delete s.sPtr; /避免内存泄 s.sPtr = new char s.length + 1; strcpy( s.sPtr, temp ); /如果 s不是空指针,则复制内容 else s.sPtr0 = /0; /如果 s是空指针,则为空字符串 return input; MiniString (const char * s = “): length(s!= 0)?strlen (s): 0)setString (s); MiniString() delete sPtr; /析构函数 /* 333* /+运算符重载 /* 666* MiniString (MiniStrin

9、g sPtr = new char s.length + 1; strcpy( sPtr, s.sPtr); private: int length; /字符串长度 char * sPtr; /指向字符串起始位置 void setString(const char * string2) /辅助函数 sPtr = new char strlen(string2) + 1; /分配内存 if ( string2!= 0) strcpy( sPtr, string2 ); /如果 string2不是空指针,则复制内容 else sPtr 0 = /0; /如果 string2是空指针,则为空字符串

10、; /proj3.cpp #include iostream #include iomanip using namespace std; #include “proj3.h“ int main () MiniString strl (“Hello!“), str2 (“World“); void writeToFile (char * ); MiniString temp = str1 + str2; /使用重载的+运算符 cout temp “/n“; writeToFile (“); return 0; (分数:40.00)_二级 C+-61答案解析(总分:100.00,做题时间:90 分

11、钟)一、B基本操作题/B(总题数:1,分数:30.00)1.请使用 VC6或使用答题菜单打开考生文件夹 proj1下的工程 proj1,此工程中含有一个源程序文件proj1.cpp。其中每个注释“/ERROR *found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: smaller smaller smaller largest 注意:只修改注释“/ERROR *found*”的下一行语句,不要改动程序中的其他内容。 /proj1.cpp #include iostream using namespace std; const int Size =4; class MyCl

12、ass public: MyClass(int x=0) :value(x) void Set(int x) value=x; friend void Judge(MyClass private: int value; ; / ERROR * found* voidMyClass:Judge(MyClass else cout “smaller“ endl; int main () MyClass * ptr =new MyClassSize; for(int i=0;i_正确答案:(1)void Judge(MyClass class MyString public: MyString (c

13、onst char* s) /* found* m_str = new char_; strcpy (m_str, s) ; MyString () /* found* _; void reverse () int n = strlen(m str) ; for (int i=0; i n/2; +i) int tmp = m_stri; /* found* m_stri = _; /* found* _; void print () cout m_str endl; /其他成员. private: char* m_str; ; int main(int argc, char * argv)

14、MyString str1 (“abc“), str2 (“defg“); cout “Before reverse: /n“; str1.print (); str2.print (); str1.reverse (); str2.reverse (); cout “After reverse: /n“; str1.print (); str2.print (); return 0; (分数:30.00)_正确答案:(1)strlen(s)+1 (2)deletem_str (3)m_strn-i-1 (4)m_strn-i-1=tmp)解析:考点 本题考查 MyString类,其中涉及构造

15、函数、动态数组、析构函数和成员函数。 解析 (1)考查使用 new语句动态分配内存空间,要分配的空间大小应为字符串的长度加 1。 (2)主要考查考生对析构函数的掌握,析构函数使用 delete语句释放指针。 (3)和(4)主要考查考生对成员函数的掌握,这里是一个变量交换操作,通过中间变量 tmp交换。三、B综合应用题/B(总题数:1,分数:40.00)3.请使用 VC6或使用答题菜单打开考生文件夹 proj3下的工程文件 proj3。本题创建一个小型字符串类,字符串长度不超过 100。程序文件包括 proj3.h、proj3.cpp、writeToFile.obj。补充完成 proj3.h,重

16、载+运算符。 要求: 补充编制的内容写在“/*333*”与“/*666*”之间,不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out.dat中。输出函数writeToFile已经编译为 obj文件,并且在本程序中调用。 /proj3.h #include iostream #include iomanip using namespace std; class MiniString /+运算符重载 public: friendostream return output; friend istream /用于输入的临时数组 temp0 = /0; input setw (100) te

17、mp; int inLen = strlen(temp); /取输入字符串长度 if( inLen ! = O) s.length = inLen; /赋长度 if(s.sPtr! = 0) delete s.sPtr; /避免内存泄 s.sPtr = new char s.length + 1; strcpy( s.sPtr, temp ); /如果 s不是空指针,则复制内容 else s.sPtr0 = /0; /如果 s是空指针,则为空字符串 return input; MiniString (const char * s = “): length(s!= 0)?strlen (s):

18、0)setString (s); MiniString() delete sPtr; /析构函数 /* 333* /+运算符重载 /* 666* MiniString (MiniString sPtr = new char s.length + 1; strcpy( sPtr, s.sPtr); private: int length; /字符串长度 char * sPtr; /指向字符串起始位置 void setString(const char * string2) /辅助函数 sPtr = new char strlen(string2) + 1; /分配内存 if ( string2!

19、= 0) strcpy( sPtr, string2 ); /如果 string2不是空指针,则复制内容 else sPtr 0 = /0; /如果 string2是空指针,则为空字符串 ; /proj3.cpp #include iostream #include iomanip using namespace std; #include “proj3.h“ int main () MiniString strl (“Hello!“), str2 (“World“); void writeToFile (char * ); MiniString temp = str1 + str2; /使用

20、重载的+运算符 cout temp “/n“; writeToFile (“); return 0; (分数:40.00)_正确答案:(MiniString /给pt动态分配大小为 lenth+1 Strcpy(pt, sPtr); /把 sptr中的内容复制到 pt中 int blength=length; /把 length赋值给变量 biength length+=s.length; /把对象 s成员变量 length加到 length deletesPtr; /删除 sptr的空间 sPtr=new charlength+1; /给 sptr动态分配大小 length的空间 strcpy(SPtr, pt); /把 pt中的内容复制到 sptr中 deletept; /删除 pt的空间 for(int i=0; ilength; +i) /从零到 length遍历 sPtrblength+i=s.sPtr i; /把对象 s中成员变量 sptri赋值 给 sptrblength+i return*this; /返回 this指的 对象 )解析:考点 本题考查 MiniString类,其中涉及构造函数、友元函数、运算符重载和析构函数。 解析 主要考查考生对运算符重载的掌握,因为有动态数组,所以要先分配空间,再复制字符串。

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

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

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