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

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

1、国家二级( C+)机试模拟试卷 66及答案与解析 一、选择题 1 下列语句中,错误的是 ( )。 ( A) constintbuffer=256; ( B) constdouble*point; ( C) intconstbuffer=256; ( D) double*constpoint; 2 以下关键字不能用来声明类的访问权限的是 ( )。 ( A) public ( B) static ( C) protected ( D) private 3 下列关于 C+预定义流对象的叙述中,正确的是 ( )。 ( A) cin是 C+预定义的标准输入流对象 ( B) cin是 C+预定义的标准输入

2、流类 ( C) cout是 C+预定义的标准输入流对象 ( D) cout是 C+预定义的标准输入流类 4 有如下程序: #include using namespace std; int main() int sum; for(int i = 0; i using namespace std; int main() int a6=27,57,20,42,56,18; int s1,s2; s1=s2=a0; for(int* p=a+1;p-a*p?*p:s1; s2=s2 using namespace std; void fun(int x=y/4; x+; int main() int

3、 x=4,y=5; fun(x,y); cout using namespace std; class AA char c; public: AA(char ch):c(ch) AA() cout using namespace std; void fun(int x=y/4; x+; int main() int x=4,y=5; fun(x,y); coutbark() ( D) (*p).bark() 20 执行下 列语句段后,输出字符 “*“的个数是 ( )。 for (int i=50; i1; -i) cout #include using namespace std; class

4、 Instrument public: Instrument(string t=“乐器 “,string n=“无名 “):type(t),name(n) virtual string GetType() const return “乐器 “; string GetName() const return “无名 “; protected: string type,name; ; class Piano:public Instrument public: Piano(string n,string t=“钢琴 “):Instrument(t,n) string GetType() const r

5、eturn “钢琴 “; string GetName() const return name; ; int main() Instrument *pi=new Piano(“星空 “); coutGetType()GetName(); delete pi; return 0; 运行时的输出结果是 ( A)乐器 -星空 ( B)乐器 -无名 ( C)钢琴 -星空 ( D)钢琴 -无名 25 下列语句或语句序列中有语法错误的是 ( A) inti,j;for(i=0,j=0;i using namespace std; class Shape /图形类 public: /图形绘制函数(用显示字母

6、模拟) virtual void draw()const coutdraw(); int main() Shape s; Triangle t; plot( plot( s=t; s.draw(); return 0; 运行这个程序的输出是 ( A) STT ( B) STS ( C) TSS ( D) TTT 30 为类 MyClass重载赋值运算符时,应将其重载为类的 ( A)静态函数 ( B)成员函数 ( C)友元函数 ( D)虚函数 31 若 Pay 是一个类名,则执行语句 Pay p1,p22,*p3; 时 Pay的构造函数被调用的次数是 ( A) 1 ( B) 2 ( C) 3 (

7、 D) 4 32 下列语句中,错误的是 ( )。 ( A) constintbuffer=256; ( B) constinttemp; ( C) constdouble*point; ( D) constdouble*rt=newdouble(5.5); 33 有如下程序: #include using namespace std; class MyClass public: MyClass() cout p2; MyTemp p33; 编译系统在处理上钢琴 -无名面的语句序列时,所生成的模板 MyTemp的实例的个数是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 39 在名为

8、BigNumber 的类的类体中对运算符函数 double进行了如下 声明: operator double(BigNumber); 函数声明中有一个明显的错误,这个错误就是 ( A)参数表中不应该有任何参数 ( B)缺少对函数返回类型的说明 ( C)参数声明中缺少参数变量 ( D)函数声明中缺少函数体 40 在 C+流的输入输出格式控制中,使用操作符 setw,可以控制 ( A)输出精度 ( B)输出宽度 ( C)对齐方式 ( D)填充字符 二、基本操作题 41 请使用 VC6或使用【答题】菜单打开考生文件夹 pmjl下的工程 pmjl,该工程中包含程序文件 main cpp,其中有关 TV

9、Set(“电视机 ”)和主函数 main的定义。程序中位于每个 “ ERROR*found*”之后的一行语句有错误,请加以改正。改正后程序的输出结果应该是: 规格: 29英寸,电源:开,频道: 5,音量: 18 规格: 29英寸,电源:关,频道: -1,音量: -1 注意:只修改每个 “ ERROR*found*”下的那一行,不要改动程序中的其他内容。 #include usingnamespacestd; classTVSet “电视机 ”类 constintSize; intchannel;频道 intvolume;音量 boolon;电源开关: true表示开, false表示关 pub

10、lic: ERROR*found* TVSet(intsize) thiS-Size(size); channel: 0; volume=15; on=false; intgetSize()constreturnsize; ) 返回电视机规格 boolisOn()constreturnon; 返回电源开关状态 返回当前音量,关机情况下返回 -1 intgetVolume()constreturnisOn ()?volume: -1; ) 返回当前频道,关机情况下返回 -1 intgetChannel()constreturnisOn ()?channel: -1; ERROR*found* v

11、oidturnOnOff()const将电源在 “开 ”和 “关 ”之间转换 on=!on; ) voidsetChannelTo(intchan)设置频 道 (关机情况下无效 ) if(isOn() chan=0 chan=0 &vol usingnamespacestd; classBook “书 ”类 char*title;书名 intnum_pages;页数 char*writer;作者姓名 public: Book(constchar*thetitle, int pages, constchar*thewriter): num pages(pages) title=newcharst

12、rlen(thetitle)+1; strcpy(title, the_title); *found* strcpy(writer, thewriter); *found* Book()_ intnumOfPages()constreturnnum_ pages; 返回书的页数 constchar*theTitle()constreturntitle; 返回书名 constchar*theWriter()constreturnwriter; 返回作者名 ; classTeachingMaterial: publicBook “教材 ”类 char*course; public: Teachin

13、gMaterial(constchar*the title, intpages, constchar*the writer, constchar*thecourse) *found* : _ course=newcharstrlen(thecourse)+1; strcpy(course, the_course); TeachingMaterial()deletecourse; constchar*theCourse()constreturncourse; 返回相关课程的名称 ; intmain() TeachingMateriala_book(“C+语言程序设计 ”, 299, “张三 “,

14、 “面向对象的程序设计“); cout usingnamespacestd; clasSPerson char*idcardno; 用动态空间存储的身份证号 char*name;用动态空间存储的姓名 boolismale;性别: true为男, false为女 public: Person(constchar*pid, constchar *pname, boolpmale); Person() *1*found* _; constchar*getIDCardNO()const returnidcardno; ) constchar*getName()constreturnname; ) vo

15、idrename(constchar*newname); boolisMale()constreturnismale; ) ; classStaff: publicPerson char*department; doublesalary; public: Staff(constchar*id_card_no, constchar*P_name, boolis_male, constchar*dept, doublesal); Staff()deletedepartment; constchar*getDepartment()const returndepartment; voidsetDepa

16、rtment(constchar*d); doublegetSalary()constreturnsalary; voidsetSalary(doubleS)salary=s; ; Person: Person(constchar*idcard_no, constchar*pname, boolis_male):ismale(iSmale) idcardno=newcharstrlen(idcardno)+1; strcpy(idcardno, id_card_no); name=newcharstrlen(p_name)+1; strcpy(name, p_name); voidPerson

17、: rename(constchar*new name) deletename; *2*found* _; strcpy(name, new_name); Staff: Staff(constchar*idcard no, constchar。 Pname, boolis male, *3*found* constchar*dept, doublesal): _ department=newcharstrlen(dept)+1; strcpy(department, dept); salary=sal; voidStaff: : setDepartment(constchar*dept) de

18、letedepartment; department=newcharstrlen(dept)+1; strcpy(department, dept); intmain() StaffZhangsan(“123456789012345“, “叫张三 “, false, “人事部 “, 1234 56); Zhangsan rename(“张小丽 “); coutbark()、 (*p).brak(),选项 A错误,答案为 A。 20 【正确答案】 B 【试题解析】 本题考查 for循环语句, -i表示用之前先减 1,那么这个 for循环语句只有 50到 2时才会输出 “*“,所以总共输出 49次

19、。 21 【正确答案】 B 【试题解析】 本题考查公用继承对基类成员的访问属性。公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有,本题中若要给派生类继承下来基类的私有成员赋值,那么只能调用基类的成员函数来对它赋值,所以本题答案为 B。 22 【正确答案】 B 【试题解析】 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0的叶子结点总是比度为 2的结点多一个。所以选择 B) 23 【正确答案】 D 【试题解析】 本题考查重载自减运算符 -,根据重载的规则,只有 D选项能够正确调用重载函数。 24 【正确答案】 D 【试题解析】 本题考查虚函数的运用,本

20、题中基类 Instrument,派生类 Piano,其中虚函数为 GetType,当定义 Instrument*pi=newPiano(“星空 “)时,调用派生类的 GetType函数,得到 type为钢琴,执行 GetName时只能执行基类的这个函数,输出无名,所以输出钢琴 -无名。选项 D正确。 25 【正确答案】 B 【试题解析】 本题考查 for循环和 while循环,其中 B选项 while里的判断语句10为真,会陷入死循环,所以 B选项错误。 26 【正确答案】 C 【试题解析】 本题考查友元函数,本题中定义的 show不能直接访问 Base里的私有成员。 27 【正确答案】 B

21、【试题解析】 A)错误,可行性分析阶段产生可行性分 析报告。 C)错误,概要设计说明书是总体设计阶段产生的文档。 D)错误,集成测试计划是在概要设计阶段编写的文档。 B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 28 【正确答案】 A 【试题解析】 操作符 “不能重载为成员函数,选项 B 错误;成员访问操作符 “.“、成员指针访问操作符 “.*“、域操作符 “:“、 sizeof和条件操作符 “?:“是不能重载的,选项 C错误;除了函数调用操作符 “()“外,重载操作符时使用默认参数是非法的,选项 D错误;重载操作符不能改变操作符的优 先级别,选项 A正确;答案为 A。

22、 29 【正确答案】 B 【试题解析】 main 函数中, plot函数的参数通过 Shape对象引用和 Triangle对象引用来调用虚函数 draw(),由于形参 s是基类引用,所以符合多态性调用,程序将在运行时期根据 s引用对象的类型决定调用哪个 draw(),这里实参 s是 Shape类类型,因而调用 Shape类的 draw()函数,实参 t是 Triangle 类类型,因而调用Triangle类的 draw()函数,输出: “ST“;程序接着将派生类对象 t赋给 s,由于基类 Shape没有显式 的定义赋值运算符和将派生类对象作为参数的基类构造函数,因而编译器自动产生基类 Shap

23、e的赋值运算符 operator=(Shape&a),语句 s=t将调用赋值运算符, a引用派生类对象 t,完成赋值,此时 s包含 t中基类的副本,而 t中剩下部分将被忽略,语句 s.draw()将调用 Shape类中的 draw()函数,输出“S“,程序输出结果为 “STS“。答案为 B 30 【正确答案】 B 【试题解析】 重载赋值运算符是为了操作类的对象,静态函数不满足,选项 A错误;如果类中没有重载赋值运算符,编译器将根据需求合成一 个赋值运算符,所以重载赋值运算符必须是类的成员函数,以便编译器可以知道是否需要合成,选项 C错误;赋值运算符不是虚函数,因为虚函数必须在基类和派生类中具有

24、同样的形参,基类的赋值运算符有一个形参是自身类类型的引用,如果该运算符是虚函数,则每个派生类都将有一个虚函数成员函数,该成员函数定义了其中一个参数为基类对象的 operator=,可能会令人混淆,选项 D错误;答案为 B。 31 【正确答案】 C 【试题解析】 程序定义了 Pay对象 p1, Pay 对象数组 p2和 Pay对象指针 p3,编译器自动生成默认构造函数初 始化 p1对象和 p2的两个对象元素; p3 没有初始化,没有调用构造函数,答案为 C。 32 【正确答案】 B 【试题解析】 const是一个 C+语言的关键字,它限定一个变量不允许被改变。使用 const在一定程度上可以提高

25、程序的安全性和可靠性。限定符声明变量只能被读,必须初始化。 B 选项中没有初始化, C选项为指向常量的指针,定义时初始化与否均可,如果是 const*doublepoint形式,则为常指针,必须在定义时进行初始化, A、 C、 D都正确。 33 【正确答案】 D 【试题解析】 构造函数和析 构函数的调用顺序为先构造的后析构,后构造的先析构。所以本题答案为 D。 34 【正确答案】 B 【试题解析】 一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 35 【正确答案】 A 【试题解析】 运算符重载为成员函数时,会省略一个参数,如

26、果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。 C+有 5个运算符不能重载,它们是: .(成 员访问运算符 )、 .*(成员指针访问运算符 )、: (域运算符 )、 sizeof(长度运算符 )和 ?: (条件运算符 )。故本题答案为 A。 36 【正确答案】 A 【试题解析】 本题考查文件流的一些操作, ios: in是以输入方式打开文件,如果没有则不会创建一个新文件,所以 A选项正确。 37 【正确答案】 B 【试题解析】 extern 可以置于变量或者函数前,以表示变量或者函数的定义在别的文

27、件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。在 c+语言中 auto被解释为一个自动存储变量的关键 字,也就是申明一块临时的变量内存。register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在 CPU的寄存器中,以加快其存储速度。在变量前,加上关键字 static,该变量就被定义成为一个静态变量 ,该变量在全局数据区分配内存,所以答案为 B。 38 【正确答案】 B 【试题解析】 编译时没有实例化,只是申明了一个 double型的类 p2,以及 long型的类 p3,并且 p3是一个数组类,含有 2个元素,即 2个 long类。 39 【正确答案】 A

28、 【试题解析】 本题考查类型转 换函数,其一般形式如下: operator 类型名 () 实现转换的语句 在函数名前面不能指定函数类型,函数没有参数,所以 A选项错误。 40 【正确答案】 B 【试题解析】 setw(n)用来设置输入输出数据字段的宽度为 n 位,答案为 B。 二、基本操作题 41 【正确答案】 (1)TVSet(intsize): size(size) (2)voidturnOnOff() (3)cout“规格: “getSize()“英寸 “ 【试题解析】 (1)主要考查考生对构造函数的掌握,因 为 size是常变量,所以只能用成员初始化列表来初始 size,即 TVSet

29、(intsize): size(size)。 (2)主要考查考生对 const函数的掌握,在 turnOnOff 函数中,有语句:on=!on;,使得 on 的值发生改变,因此该函数不能使用 const。 (3)主要考查考生对输出语句的掌握,下一条语句: “,电源: “(isOn()?“开“: “关 “),说明输出语句还没结束,因此不能用 “; ”。 三、简单应用题 42 【正确答案】 (1)writer=newcharstrlen(the_writer)+1; (2)deletetitle, writer; (3)Book(the_title, pages, the_writer) (4)a_book theCourse()end1 【试题解析】 (1)主要考查考生对动态分配空间的掌握,在填空前可以参考 rifle的初始化,即先分配空间,再使用 strcpy 函数复制字符串,因此这里使用writer=newcharstrlen(the_writer)+1语句给 writer分配空间,注意分配空间的大小应为字符串长度加 1。

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

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

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