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

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

1、国家二级 C+机试(操作题)模拟试卷 500及答案与解析 一、基本操作题 1 请打开考生文件夹下的解决方案文件 proj1,此工程包含一个源程序文件proj1 cpp。其中位于每个注释 “ ERROR*found*”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: You areright 注意:只修改注释 “ ERROR*found*”的下一行语句,不要改动程序中的其他内容。 proj1 cpp #include iostream using namespace std; class MyClass public: NyCiass(int x): number(x) ERROR*

2、found* MyClass(int x) ERROR*found* void Judge(NyClas&obj); private: int number; ; void Judge(HyClass&obj) if(obj number=10) tout “You are right “ endl; else cout “Sorry“ endl; int main( ) ERROR*found* NyClass object; Judge(object); return0; 二、简单应用题 2 请打开考生文件夹下的解决方案文件 proj2,其中在编辑窗口内显示的主程序文件中定义有类 Base

3、和 Derived,以及主函数 main。程序文本中位于每行 “*found*”下面的一行内有一处或多处下画线标记,请在每个下画线标记处填写合适的内容,并删除下画线标 记。经修改后运行程序,得到的输出应为: sum=55。 注意:只在横线处填写适当的代码,不要改动程序中的其他内容。 #include iostEeam usiig namespace std; class Base public: Base(int m1, int m2) mem1=m1; mem2=m2; int slim( )reLurn mem1+mem2; private: int mem1, mem2;基类的数据成员

4、; 派生类 Derived从基类 Base公有继承 *found* class Derived: _ public: 构造函数声明 Derived(int m1, int m2, int m3); sum函数定义,要求返回 mem1、 mere2和 mem3之和 *found* int sum( )return_+mem3; private: int mem3;派生类本身的数据成员 ; 构造函数的类外定义,要求由 m1和 m2分别初始化 mem1和 mem2,由 m3初始化 mem3 *found* _Derived(int m1, int m2, intm3): *found* _, mem

5、3(m3) int main( ) Base a(4, 6); Derived b(10, 15, 20); int sum=a sum( )+b sum( ); cout “sum=“ sum endl; return0; 三、综合应用题 3 请打开考生文件夹下的解决方案文件 proj3,本题创建一个小型字符串 类,字符串长度不超过 100。程序文件包括 proj3 h、 proj3 cpp、 writeToFile obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 要求: 补充编制的内容写在 “ *333*”与

6、 “ *666*”两行之间。不得修改程序的其他部分。 注意: 程序最后调用 writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件 out dat中。输出函数 writeToFile已经编译为 obj文件。 proj3 h #include iostream #include iomanip using namespace std; class MiniString public: friend ostream&operator (ostream&output, const MiniString&s) 重载流插入运算符 output s sPtr; return ou

7、tput; friend istream&operator (istream&input, MiniString&s) 重载流提取运算符 char temp100;用于输入的临时数细 temp0= 0;初始为空字符串 input setw(100) temp; intinLen=strlen(temp); 输入字符串长度 if(inLen!=0) s length=inLen;赋长度 if(s sPtr!=0)delete s sPtr;避免内存泄漏 s sPtr=new chars length+1; strcpy(s sPtr, temp); 如果 s不是空指针,则复制内容 else s

8、sPtr0= 0; 如果 s是空指针,则为空字符串 return input; void modString(const char, *string2)更改字符串内容 if(string2!=0) 如果 string2不是空指针,则复制内容 if(strlen(string2)!=length) length=strlen(string2); delete sPtr; sPtr=new char1ength+1;分配内存 strcpy(sPtr, string2); else sPtr0= 0; 如果 string2是空指针,则为空字符串 MiniString&operator=(constM

9、iniS七 ring&otherString); MiniString(const char*s=“ “): length(s!=0)?Strlen(s): 0) 构造函数 sPtr=0; if(1ength!=0) setString(s); MiniString( )析构函数 delete sPtr; private: int length;字符串长度 char*sPtr;指向字符串起始位置 void setString(const char*string2)辅助函数 sPtr=new charstrlen(string2)+1;分配内存 if(String2!1=0)strcpy(SPt

10、r, string2); 如果 string2不是空指针,则复制内容 elsesPtr0= 0; 如果 string2是空指针,则为空字符串 ; proj3 cpp #include iostream #include iomanip using namespace std; #include“proj3 h“ MiniString&MiniString: operator =(constMiniString&0therString) 重载赋值运算符函数。提示:可以调用辅助函数 setString *333* *666* int main( ) MiniString strl(“Hello!“

11、), str2; void writeToFile(const char*); str2=str1;使用重载的赋值运算符 str2 modString(“Happy new year!“); cout strl n; cout str2 n; writeToFile(“ “); return0; ; 国家二级 C+机试(操作题)模拟试卷 500答案与解析 一、基本操 作题 1 【正确答案】 (1) MyClass( ) (2)friend void Judge(MyClass&obj); (3)MyClass object(10); 【试题解析】 (1)主要考查考生对析构函数的掌握,析构函数是

12、没有形参的,因此把形参去掉即可,因为该类没有动态分配空间,所以不需要使用 delete语句释放空间。 (2)主要考查考生对友元函数的掌握,在函数定义中有语句 void Judge(MyClass&obj),在 main函数中有语句 Judge(object);,即 Judge函 数是可以被类外函数调用的,并且定义时没有加上类名和作用域,因此可以知道 Judge函数是友元函数,需要在类型前加上 friend。 (3)主要考查考生对构造函数调用的掌握,题目要求输出结果为: You are right,在 Judge函数体内有语句: if(obj number=10) cout “You are r

13、ight “ endl; 要想使屏幕输出语句: You are right,就必须使 obj number的值为 10,因此要使用构造函数语句 MyClass object(10);。 二、简单 应用题 2 【正确答案】 (1)public Base (2)Base: sum( ) (3)Derived: (4)Base(m1, m2) 【试题解析】 (1)主要考查考生对公有继承的掌握情况,根据题目要求:派生类Derived从基类 Base公有继承,因此这里使用 public来公有继承。 (2)主要考查考生对成员函数的掌握情况,根据题目对 sum函数的要求: sum函数定义,要求返回 mem1

14、、 mem2和 mem3之和,因此这里直接调用基类的 sum函数,再加上 mem3就满足题目要求。 (3)主要考查考 生对构造函数的掌握情况,由于 Derived的构造函数在类外定义,因此要加上类名和作用域符,即 Derived:。 (4)主要考查考生对构造函数的掌握情况,因为 Derived是 Base类的派生类,所以其构造函数要使用成员列表初始化先给 Base初始化。 三、综合应用题 3 【正确答案】 length=otherStrlng length;把对象字符串 otherstring的长度赋值给变量 lenqth setString(otherString sPtr);调用函数 setstring,实现给类变量 sptr分配空间,以及逐个把对象 otherstrinq字符串的值复制到 sptr中 return*this;返回被赋值的对象 【试题解析】 主要考查考生对运算符重载的掌握,题目要求重载赋值运算符函数。要重载的运算符是 “=”,即赋值的意思。提示:可以调用辅助函数setStringc,该函数的功能是复制形参的字符串到 sPtr中,因此,首先复制length,其次通过函数 setString复制 sPtr,最后按要求返回 *this;。

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

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

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