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

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

1、国家二级( C+)机试模拟试卷 72及答案与解析 一、选择题 1 下面是重载为非成员函数的运算符的函数原型,其中错误的是 ( )。 ( A) Fractionoperator+(Fraction,Fraction); ( B) Fractionoperator-(Fraction); ( C) Fraction ( D) Fraction 2 有如下程序: #include using namespace std; class Instrument public: virtual void Display()=0; ; class Piano : public Instrument publi

2、c: void Display() /*函数体略 */ ; int main() Instrument s; Instrument *p=0; / ; return 0; 下列叙述中正确的是 ( )。 ( A)语句 “Insturment*p=0;“编译时出错 ( B)语句 “Instruments;“编译时出错 ( C)类 Piano中的 Display函数不是虚函数 ( D)类 Instrument是一个虚基类 3 在 E R图中,用来表示实体联系的图形是 ( )。 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 4 下列有关类成员的叙述中,正确的是 ( )。 ( A)友元函数

3、是类的成员函数 ( B)类成员的默认访问权限是私有的 ( C)类成员函数必须声明为公有的 ( D)类的静态数据成员不能是常成员 5 下列关于模板的叙述中,错误的是 ( A)调用模板函数时,在一定条件下可以省略模板实参 ( B)可以用 int、 double这样的类型修饰符来声明模板参数 ( C)模板声明中的关键字 class都可以用关键字 typename替代 ( D)模板的形参表中可以有多个参数 6 下列字符串中可以用作 C+标识符的是 ( A) 1481var ( B) test-1481 ( C) true ( D) _123 7 有如下两个类定义: class AA BB *v1; ;

4、 class BB AA *v2; BB *v3; int *v4; ; 其中有一个成员变量的定义是错误的,这个变量是 ( A) v1 ( B) v2 ( C) v3 ( D) v4 8 关于 C+流,下面的表述中正确的是 ( A)利用 C+流能够借助于流对象进行输入输出 ( B)利用 C+流只能进行格式化输入输出 ( C)利用 C+流只能借助于 cin和 cout进行输入输出 ( D)利用 C+流只能使用运算符 和 =b)n=0; ( C) if(a=b)n=0;elseif(b=c)n=1; ( D) if(a using namespace std; void fun(char c) c

5、out using namespace std; class AA char c; public: AA(char ch):c(ch) cout ( B) +-+- ( C) 1; i-=2) cout =b)n=0; ( C) if(a=b)n=0;elseif(b=c)n=1; ( D) if(a using namespace std; class Cup public: Cup(double val=5.8):price(val) void SetPrice(double val) price=val; double GetPrice() const return price; pri

6、vate: double price; ; int main() const Cup c1(4.5); Cup c2(29.8); c1.SetPrice(5.8); / c2.SetPrice(12.8); / c1.GetPrice(); / c2.GetPrice(); / return 0; 在标注号码的语句行中存在语法错误的是 ( A) ( B) ( C) ( D) 29 下面不属于软件需求分析阶段工作的是 ( A)需求获取 ( B)需求计划 ( C)需求分析 ( D)需 求评审 30 有如下类定义: class Base int m; int n; public: Base(int

7、 m1, int n1): n(n1),m(m1) ; class Derived: public Base int q; public: Derived(int m1, int n1, int q1): q(q1),Base(m1,n1); ; 在创建一个 Derived对象时,数据成员 m、 n和 q被初始化的顺序是 ( A) m、 n、 q ( B) n、 m、 q ( C) q、 m、 n ( D) q、 n、 m 31 设有栈 S和队列 Q,初始状态均为空。首先依次将 A,B,C,D,E,F入栈,然后从栈中退出三个元素依次入队,再将 X,Y,Z入栈后,将栈中所有元素退出并依次入队,最

8、后将队列中所有元素退出,则退队元素的顺序为 ( A) DEFXYZABC ( B) DEFXYZABC ( C) FEDXYZCBA ( D) DEFZYXABC 32 有如下程序: #include 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, cout using namespace std; class Base1 public: Base1(int d) cout using namespace std; class MyClass

9、public: MyClass(int x):val(x) void Print() const cout usingnamespacestd; classMyClass public: ERROR*found* MyClass(inti) value=i; cout usingnamespacestd; classIntStack整数栈类 public: virtualvoidpush(int)=0;入栈 virtualintpop()=0; 出栈并返回出栈元素 virtualinttopElement()const=0; 返回栈顶元素,但不出栈 virtualboolisEmpty()co

10、nst=0; 判断是否栈空 ; classSeqStack: publicIntStack intdata100;存放栈元素的 数组 inttop;栈顶元素的下标 public: *found* SeqStack(): _)把 top初始化为 -1表示栈空 voidpush(intn)data+top= n; *found* intpop()return_; ) inttopElement()constreturndata top; boolisEmpty()constreturntop=-1; ) ; structNode intdata; Node*next; ; classLinkSta

11、ck: publicIntStack Node*top; public: *found* LinkStack(): _()把 top初始化为 NULL表示栈空 voidpush(intn) Node*P=newNode; P-data=n; *found* _; top=P; intpop() intd=top-data; top=top-next; returnd; inttopElement()const(returntop-data; boolisEmpty()constreturntop。 NULL; ; voidpushData(IntStack“在编译时出错。 3 【正确答案】 C

12、 【试题解析】 在 E R图中实体 集用矩形,属性用椭圆,联系用菱形。 4 【正确答案】 B 【试题解析】 友元函数是指某些虽然不是类成员却能访问类的所有成员的函数,故友元函数不是类的成员函数。类成员的默认访问权限是私有的,类的成员函数可以是 3种权限中的一种,静态数据成员可以为常成员。故本题答案为 B。 5 【正确答案】 C 【试题解析】 本题考查类模板是是类的抽象,类是类模板的实例。模板的类型参数由关键字 class 或关键字 typename及其后的标识符构成,(在标准 C+之前关键字 typename没有被支持,把这个关键字加 入到 C+中的原因是因为有时必须要靠它来指导编译器解释模板

13、定义。)本题 C选项错误。 6 【正确答案】 D 【试题解析】 用来表示变量、符号常量、函数、数组类型等实体名字的有效字符序列称为标识符,标识符由字母、数字、和下划线 3种字符组成,且第一个字符必须为字母或者下划线。 C选项为 C+的特定标识符,只有 D选项正确。 7 【正确答案】 A 【试题解析】 本题考查类和对象的定义,本题中定义类 AA的时候,数据成员有BB类型的对象,而类 BB在在之前没有定义,所以 A选项错误。 8 【正确答案】 A 【试题解析】 输入输出流出了 cin和 cout还有 cerr、 clog等,所以 CD选项错误, C+流不只是进行格式化输入输出,所以 B 选项错误,

14、 A选项正确。 9 【正确答案】 D 【试题解析】 本题考查逗号表达式,题目中逗号表达式 (ac时, n为 0; ab时, n为 0;与该意思相同的就是 D选项,而 A选项 if 语句中的判断语句不正确。 10 【正确答案】 C 【试题解析】 派生类公用继承基类,那么基类中私有 不可访问,保护成员依旧是保护成员,公有成员依旧是公有成员;保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,私有成员不可访问;私有继承那么公有成员和保护成员变为私有,私有成员不可访问。本题中派生类继承基类的私有成员,不可直接访问但是可以通过基类的成员函数使用基类的私有数据成员,加上派生类的本身的数据成员

15、,共有 2个数据成员, C选项正确。 11 【正确答案】 D 【试题解析】 一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,称为线 性结构,在数据结构中习惯称为线性表, D选项正确。图是可能不包含根结点或叶子结点的数据结构, AB选项错误。数据结构中若有中间结点不满足只有一个前件或者后件条件,则不属于线性结构, C选项错误。 12 【正确答案】 A 【试题解析】 程序中有三个重载 fun函数,形参类型分别为: char类型, double类型和 char*类型, main 函数中,调用 fun 函数,实参为 0,编译器需要确定重载函数中的

16、最佳匹配,由于 0可以隐式转换为 char类型、 double类型、 char*类型,均不能精确匹配,所以该函数调用具有二 义性,编译出错;答案为 A。 13 【正确答案】 D 【试题解析】 构造函数初始化列表仅指定用于初始化成员的值,不指定这些初始化执行的次序,成员初始化的次序是类定义中声明成员的次序,成员初始化完成后执行构造函数的函数体;所以程序中在创建 BB对象时,首先初始化 m1,再初始化 m2,由于 m1、 m2 都是 AA对象,且有实参 q、 p,所以调用构造函数AA(charch),用 ch 初始化成员 c后输出成员 c的值,即输出 q、 p,再执行类BB的函数体,输出 B;程序

17、执行结束时,系统会自动调用类的析构函数清理自己的 成员,析构函数工作过程: 1、执行析构函数的函数体; 2、如果该类中拥有类对象成员,且类对象有析构函数,则以类对象成员声明次序的相反顺序调用其析构函数,销毁类对象成员; 3、按原来构造顺序的相反顺序向上依次调用基类的析构函数。 所以程序运行结束时,首先调用 BB的析构函数并执行函数体,输出 “b“;然后调用 m2 的析构函数,销毁 m2 成员,输出 a,再调用 m1 的析构函数,销毁 m1 成员,输出 a;综上所述,程序运行的输出是: “qpBbaa“;答案为 D。 14 【正确答案】 A 【试题解析】 对长度为 n 的 线性表排序,最坏情况下

18、时间复杂度,二分法查找为O( log2n);顺序查找法为 O( n);分块查找时间复杂度与分块规则有关;哈希查找时间复杂度为 O(1),因其通过计算 HashCode来定位元素位置,所以只需一次即可。故正确答案为 A选项。 15 【正确答案】 A 【试题解析】 关于运算符重载为友元函数有如下规定: 一般情况下,单目运算符最好重载为类的成员函数,双目运算符则最好重载为类的友元函数; 双目运算符 “=、()、 -“不能重载为类的友元函数。所以本题答案为 A。 16 【正确答案】 D 【试题解析】 C+中,多态性调用需要满足两个条件, 1、被调用成员函数必须是虚函数; 2、必须通过基类类型的引用或指

19、针进行函数调用。多态性使程序在运行时期根据指针或引用所指对象的类型来决定调用哪个函数。程序中,类 Shape定义了虚函数 draw(),在派生类 Circle中重写了函数 draw(); main 函数中,分别使用指针、对象、引用三种方式调用函数 draw(),指针 ps是基类指针,指向的是派生类的对象,所以这里根据多态性,将调用 Circle中的 draw 函数,输出 “C“;对象 t是 Circle对象,也调用 Circle中的 draw 函数,输出 “C“;函数 plot()执行时引用 s引用的是实参 t,引用对象是派生类 Circle对象,根据多态性,同样调用Circle中的 draw

20、 函数,输出 “C“;结果输出为 “CCC“;答案为 D。 17 【正确答案】 A 【试题解析】 C+的标识符由字母、数字和下划线组成,其中必须以字母或下划线开头。 A选项错误;答案为 A。 18 【正确答案】 D 【试题解析】 含有纯虚函数的类不能被实例化,选项 A错误;基类的保护成员就是为了派生类的访问而设计的,选项 B错误;派生类构造函数 的初始化列表通常都要显式调用基类的构造函数,选项 C错误;当基类中不能为虚函数给出一个有意义的实现时,将其声明为纯虚函数,所以纯虚函数没有定义函数体,选项 D正确;答案为 D。 19 【正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建

21、立联接关系,分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多对多联系( m:n)。医生可为多位患者看病,患者也可以找多位医生看病,实体医生与患者联系是多对多, A选项正确。 20 【正确答案】 C 【试题解析】 重载运算符的规则如下: C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载; C+不能重载的运算符只有 5个; 重载不能改变运算符运算对象的个数; 重载不能改变运算符的优先级和结合性; 重载运算符的函数不能有默认的参数; 重载的运算符必须和用户定义的自定义类型的对象一起使用,至少应有一个是类对象,即不允许参数全部是 C+的标准类型。故本题答案为 C。 21

22、【正确答案】 D 【试题解析】 本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被 “初始化 “为 0的函数,包含纯虚函数的类为抽象类,抽象类是不能 被实例化的,但是可以定义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为 D。 22 【正确答案】 B 【试题解析】 本题考查 for循环语句,题目中每执行完循环体后, i都会减 2,那么只有 50到 2之间的偶数才能输出 “*“,所以总共输出 25次。 23 【正确答案】 B 【试题解析】 本题考查构造函数和析构函数,题中定义了一个对象,以及对象数组,

23、那么构造函数需要执行 4次,而 *net2并不执行构造函数, 所以答案为 B。 24 【正确答案】 B 【试题解析】 1966年 Boehm和 Jacopini 证明了程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。 25 【正确答案】 C 【试题解析】 本题考查重载运算符, C+规定有的运算符(如赋值运算符、下标运算符、函数调用运算符)必须定义为类的成员函数。所以本题选 C。 26 【正确答案】 C 【试题解析】 本题考查模板相关知识,一个类中存在纯虚函数,这个类不一定就是类模板。函数模板需要形式参 数表,类模板中可以包含构造函数。所以 C选项

24、正确。 27 【正确答案】 D 【试题解析】 本题考查逗号表达式,题目中逗号表达式 (a这四个运算符只能被重载为类的非静态成员函数,其他的可以被友元重载,主要 是因为其他的运算符重载函数都会根据参数类型或数目进行精确匹配,这四个不具有这种检查的功能,用友元定义就会出错,所以本题选择 B。 40 【正确答案】 C 【试题解析】 有序是特指元素按非递减排列,即从小到大排列,但允许相邻元素相等, A选项错误。有序表可以顺序存储也可以链式存储, B 选项错。能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表, D选项错误。故 C选项正确。 二、基本操作题 41 【正确答案】 (1

25、)MyClass(inti=10) (2)MyClass(constMyClass&p) (3)MyClass() 【试题解析】 (1)考查构造函数参数默认值,题目要求输出语句: Thevalueis10,从主函数中可以看出, obj1并没有初始化,但是 objl调用 Print()函数时它的值为10,由此可知构造函数的形参有默认值,且值为 10,因此得出语句MyClass(inti=10)。 (2)主要考查考生对复制构造函数的掌握,复制构造函数的形参都为引用,同时为了不改变形参的值要加上 const,因此得出语句 MyClass(constMyClass&p)。 (3)主要考查 考生对析构函数的掌握,析构函数和构造函数一样,前面不能添加任何类型,要把 void 去掉。 三、简单应用题 42 【正确答案】 (1)top(一 1)

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

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

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