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

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

1、国家二级( C+)机试模拟试卷 109及答案与解析 一、选择题 1 有如下程序: #include using namespace std; class Base public: void fun1() cout double 由此可知 ( )。 ( A)这可能是一个函数模板的声明 ( B)这 可能是一个类模板的声明 ( C)这既可能是一个函数模板的声明,也可能是一个类模板的声明 ( D)这肯定是一个错误的模板声明 5 有如下程序段: int i=2;int j=3; int main() int i=9, j=i; coutdata;“中, cin是 ( A) C+的关键字 ( B)类名 (

2、 C)对象名 ( D)函数名 8 有如下程序: #include using namespace std; int main() int a10; for(int* p=a;p using namespace std; class Point int x,y; public: Point(int x1=0, int y1=0):x(x1),y(y1) int get() return x+y; ; class Circle Point center; int radius; public: Circle(int cx, int cy, int r):center(cx,cy),radius(r

3、) int get() return center.get()+radius; ; int main() Circle c(3,4,5); cout using namespace std; class AA public: virtual void disp() cout using namespace std; class Base private: void fun1() const cout using namespace std; void fun(int a,_) int c; c=a; a=*b; *b=c; int main() int x,y; x=1; y=2; fun(x

4、, cout using namespace std; class A public: virtual void func1() coutfunc1(); p-func2(); delete p; return 0; 执行这个程序的输出结果是 ( )。 ( A) B1B2 ( B) A1A2 ( C) B1A2 ( D) A1B2 21 必须用一对大括号括起来的程序段是 ( )。 ( A) switch语句中的 case标号语句 ( B) if语句的分支 ( C)循环语句的循环体 ( D)函数的函数体 22 有如下两个类定义: class XX private: double x1; prot

5、ected: double x2; public: double x3; ; class YY: protected XX private: double y1; protected: double y2; public: double y3; ; 在类 YY中保护成员变量的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 23 在满足实体完整性约束的条件下 ( )。 ( A)一个关系中应该有一个或多个候选关键字 ( B)一个关系中只能有一个候选关键字 ( C)一个关系中必须有多关键字个候选 ( D)一个关系中可以没有候选关键字 24 下列关于运算符重载的叙述中,错误的

6、是 ( A)不能通过 运算符重载在 C+中创建新的运算符 ( B)赋值运算符只能重载为成员函数 ( C)运算符函数重载为类的成员函数时,第一操作数是该类对象 ( D)重载类型转换运算符时,应声明返回类型为 void 25 有如下程序: #include #include using namespace std; class Instrument public: Instrument(string t=“乐器 “,string n=“无名 “):type(t),name(n) string GetType() const return “乐器 “; string GetName() const

7、return “无名 “; protected: string type,name; ; class Piano:public Instrument public: Piano(string n,string t=“钢琴 “):Instrument(t,n) string GetType() const return “钢琴 “; string GetName() const return name; ; int main() Instrument *pi=new Piano(“星空 “); coutGetType()GetName(); delete pi; return 0; 运行时的输出

8、结果是 ( A)乐器 -星空 ( B)乐器 -无名 ( C)钢琴 -星空 ( D)钢琴 -无名 26 有如下程序: #include using namespace std; int main() int f,f1=1,f2=1; for(int i=0;i using namespace std; class Point int x,y; public: Point(int x1=0, int y1=0):x(x1),y(y1) int get() return x+y; ; class Circle Point center; int radius; public: Circle(int

9、cx, int cy, int r):center(cx,cy),radius(r) int get() return center.get()+radius; ; int main() Circle c(3,4,5); cout using namespace std; void fun(int c=a; a=b; b=c; int main() int x,y; x=1; y=2; fun(x,y); coutbark() ( D) (*p).bark() 33 有如下说明: int a 10 =1,2,3,4,5,6,7,8,9,10,*p=a; 则数值为 9的表达式是 ( )。 ( A

10、) *p+9 ( B) *(p+8) ( C) *p+=9 ( D) p+8 34 若有如下类声明: class MyClass public: MyClass() cout using namespace std; class Sample public: Sample() Sample() cout usingnamespacestd; 狗的颜色:黑、白、黄、褐、花、其他 enLlmDOGCOLORBLACK, WHTTE, YELLOW, BRONN, PIEBALD, OTHER); classDog 狗类 DOGCOLORcolor; charname20; staticintcou

11、nt; public: Dog(char lame, DOGCOLORcolor) strcpy(this-flame, Flame); EERR*found* strcpy(this-color, color); DOGCOLORget: Color()constreturn color; ERROR*found* constchar*get; Name()constreturn*name; constchar*getColorString() const switch(color) caseBLACK: return“black“; caseWHITE: return“white“; ca

12、seYELLOW: return“yellow“; caseBROWN: return“brown“; casePrEBALD: return“piebald“; return”motley”; voidshow()const tout usingnamespacestd; classCPolygon public: *found* _纯虚函数 area声明 voidprintarea(void) *found* coutprintarea(); ppoly2-printarea(); return0; 四、综合应用题 43 请使用 VC6或使用【答题】菜单打开考生文件夹 proj3下的工程

13、proj3,其中声明了 SortedList类,是一个用于表示有序数据表的类。其成员函数 insert的 功能是将一个数据插入到一个有序表中,使得该数据表仍然保持有序。请编写这个 insert函数。程序的正确输出应为: 插入前: 1, 2, 4, 5, 7, 8, 10 插入 6和 3后: 1, 2, 3, 4, 5, 6, 7, 8, 10 要求: 补充编制的内容写在 “ *333*”与 “*666*”之间。不得修改程序的其他部分。 注意:程序最后将结果输出到文件 out dat中。输出函数 writeToFile已经编译为0bj文件,并且在本程序中调用。 SortedList h #inc

14、lude USingnamespacestd; classSortedList有序数据表类 intlen; double*d; public: SortedList(intlen, doubledata =NULL); SortedList()deleted; intlength()constreturnlen; 有序数据表长度 (即元素的个数 ) doublegetElement(inti)constreturndi; voidinsert(doubledata); voidshow()const;显示有序数据表 , voidwriteToFile(char*, constSortedLis

15、t ); main cpp #include“SortedList h“ SortedList: SortedList(intlen, doubledata): len(len) d=newdoublelen; for(intk=0; ki) doublet=dm; dm=di; di=t; voidSortedList: insert(doubledata) *333* *666* voidSortedList: show()const 显示有序数据表 for(inti=0; idouble 这里就可以看出这是一个函数模板的声明。 5 【正确答案】 C 【试题解析】 全局变量也称为外部变量,

16、它是在函数外部定 义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明,本题中定义了两个全局变量 i, j,所以主函数中对全局变量重新赋值输出后为 99,所以答案为 C。 6 【正确答案】 D 【试题解析】 本题考查派生类的构造函数和析构函数的调用顺序,在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数,所以 D选项错误。 7 【正确答案】 C 【试题解析】 本题考查提取运算符 , cin为对象名,所以 C选项正确。 8 【正确答案】 C 【试题解析】 本题考查使用指针对一维数组赋值,可以看出一维数组的元素值为下标

17、*2+1,所以 a2=2*2+1=5,a8=8*2+1=17,那么 a2+a8=22。 C选项错误。 9 【正确答案】 C 【试题解析】 本题考查构造函数,题目中定义了 Circle类,在类体中又定义了Point的对象,执行 Circlec(3,4,5);后输出三个数之和,所以是 12, C选项正确。 10 【正确答案】 A 【试题解析】 在树结构中,定义一棵树的根结点所在的层次为,其他结点所在的层 次等于它的父结点所在的层次加,树的最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。深度为 5的二叉树,结点个数最多为 25-1=31

18、,最少为 24=16,不可能是 15,故正确答案为 A选项。 11 【正确答案】 D 【试题解析】 函数声明由函数返回类型、函数名和形参列表组成,形参列表中必须包含形参类型,不必对形参命名。答案为 D。 12 【正确答案】 C 【试题解析】 程序定义了类 AA,成员函数 disp()为虚函数;类 BB 公有继承AA,重新定义了 disp()函数;类 CC公有继承 BB,同样重新定义了 disp()函数;类 BB中,虽然 disp()未用 virtual 修饰,但是由虚函数性质可知, BB中的 disp()函数仍然是虚函数; main()函数中,创建 BB对象 bb, CC对象 cc,使用 cc

19、初始化 BB类引用 rb,然后调用 plot函数; plot函数的形参是 AA 类的引用,通过 AA类引用调用 disp 函数,满足多态性条件,将根据引用所指对象的类型来决定调用哪个 disp 函数;所以 plot(bb)调用类 BB中的 disp 函数, plot(cc)调用 CC中的disp 函数;输出分别为: “B“、 “C“;另外由于 rb 为 BB类引用,所指对象是cc,所以运行 rb.disp()时调用的是 CC中的 disp()函数,输出 “C“,综上,程序输出为: “BCC“;答案为 C。 13 【正确答案】 D 【试题解析】 需求分析阶段的工作可以分为个方面:需求获取、需求分

20、析、编写需求规格说明书和需求评审,包括确定软件系统的功能, D选项正确。 A、 B、C选项均为开发阶段工作。 14 【正确答案】 D 【试题解析】 C+规定,赋值运算符 “=“、下标运算符 “、调用运算符 “()“和成员访问箭头运算符 “-“必须作为成员函数,将这些运算符重载为非成员函数将在编译时标记为错误;选项 A中,运算符 “+“可以作为友元函数重载;选项 B、 C中的流运算符 “func2()会执行基类的func2,输出 A2。故答案为 C。 21 【正确答案】 D 【试题解析】 本题考查 C+基本控制结构, A、 B、 C三个选项中的大括号不是必须的,而 D选项中的函数体必须使用大括号

21、。 22 【正确答案】 C 【试题解析】 本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,所以基类的成员 x2、 x3变成了保护成员,派生类中的 y2也是保护成员,所以共有 3个保护成员。本题答案为 C。 23 【正确答案】 A 【试题解析】 实体完整性约束要求关系的主键中属性值不能为空值,所以选择A)。 24 【正确答案】 D 【试题解析】 本题考查运算符重载,重载不能定义新的运算符,且赋值运算符只能重载为成员函数,重载类型转换运算符时,声明返回类型不一定是 void,所以D选项错误。 25 【正确答案】 B 【试题解析】 本题考查派

22、生类的应用,本题中基类 Instrument,派生类 Piano,当定义 Instrument*pi=newPiano(“星空 “)时, pi为指向基类的指针,那么执行 pi-GetType()时调用基类的 GetType函数,得到 type为乐器, name 为无名,所以输出乐器 -无名。选项 B 正确。 26 【正确答案】 D 【试题解析】 本题考查 for循环,当 i 为 0时, f1变为 1, f2变为 3;当 i为 2时, f1变为 3, f2变为 5;当 i为 4时, f1变为 5, f2变为 11,即 f为 11,所以答案为 D。 27 【正确答案】 C 【试题解析】 本题考查构

23、造函数,题目中定义了 Circle类,在类体中又定义了Point的对象,执行 Circlec(3,4,5);后输出三个数之和,所以是 12, C选项正确。 28 【正确答案】 D 【试题解析】 软件具有以下特点:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题;对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素,如知识产权等 。故选项 D正确。 29 【正确答案】 C 【试题解析】 main 函数中定义两个整型变量 x=1, y=2,由输出 x, y的结果为21,可知函数 fun的功能是交换两个实参的值,由于函数 fun中未使用

24、指针类型的变量,所以若想通过函数 fun 交换实参的值,形参类型必然为引用类型,横线处语句为 int&b,答案为 C。 30 【正确答案】 C 【试题解析】 cin 是 C+预定义的标准输入流对象,答案为 C。 31 【正确答案】 A 【试题解析】 重载运算符必须具有一个类类型的操作数,这条规则强制重载 运算符不能重新定义用于内置类型对象的运算符。选项 B、 C、 D正确, A错误,答案为 A。 32 【正确答案】 A 【试题解析】 Pet类指针 p指向 my_dog 对象,通过指针访问类对象的成员函数,与通过指针访问内置类型对象一样,有两种方法: p-bark()、 (*p).brak(),

25、选项 A错误,答案为 A。 33 【正确答案】 B 【试题解析】 本题考查指向数组的指针,本题中指针变量 p 指向数组 a,那么 *p的值就是 1,即表示数组的第一个元素,那么数值为 9的表达式就是将指针向后移动 8个地址,即 p+8指 向的是数组元素值为 9,所以数值为 9的表达式是 *(p+8)。 34 【正确答案】 B 【试题解析】 本题考查默认构造函数和带参数的构造函数,题目中定义一个对象a以及对象数组 b 2 ,共执行 3次构造函数,对象指针不调用构造函数。所以本题答案为 B。 35 【正确答案】 D 【试题解析】 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立

26、新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 36 【正 确答案】 B 【试题解析】 本题考查构造函数和析构函数,题中定义了对象数组,那么析构时就析构两次,输出两个 *。答案为 B。 37 【正确答案】 C 【试题解析】 栈是先进后出的数据结构,在整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来操作,所以选择 C)。 38 【正确答案】 C 【试题解析】 本题考查重载运算符, C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选 C。 39 【正确答案】 B

27、 【试题解析】 本题考查 输入输出格式的控制,先是定义宽度为 10个字符,然后填充字符, 1234只有四个字符,所以要在左侧填充 6个 *,即输出 *1234, B选项正确。 40 【正确答案】 C 【试题解析】 继承的访问标识有: public、 protected、 private,答案为 C。 二、基本操作题 41 【正确答案】 (1)this-color=color; (2)constchargetName()constreturn*name; (3)Dogdog1(“Hoho“, WHITE), dog2(“Haha“, BLACK), dog; 3(“Hihi“,OTHER); 【试题解析】 (1)主要考查考生对 strcpy 函数的掌握,如果看到上一条语句strcpy(this-name, name);,就以为本条语句也要用 strcpy函数来赋值,这是错误的。 Strcpy函数只能复制字符串,根据类的私有成员声明可知, color是DOGCOLOR型的,这里直接使用赋值语句 “=”即可。

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

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

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