ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:75KB ,
资源ID:1332001      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1332001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】国家二级C++机试(选择题)-试卷31及答案解析.doc)为本站会员(周芸)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】国家二级C++机试(选择题)-试卷31及答案解析.doc

1、国家二级 C+机试(选择题)-试卷 31 及答案解析(总分:80.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.程序流程图中带有箭头的线段表示的是( )。(分数:2.00)A.图元关系B.数据流C.控制流D.调用关系2.结构化程序设计的基本原则不包括( )。(分数:2.00)A.多态性B.自顶向下C.模块化D.逐步求精3.软件设计中模块划分应遵循的准则是( )。(分数:2.00)A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦合4.在软件开发中,需求分析阶段产生的主要文档是( )。(分数:2.00)A.可行性分析报告B.软件需求规格说明书C.概要设计

2、说明书D.集成测试计划5.算法的有穷性是指( )。(分数:2.00)A.算法程序的运行时间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用6.对长度为 n 的线性表排序,在最坏情况下,比较次数不是 n(n1)/2 的排序方法是( )。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序7.下列关于栈的叙述正确的是( )。(分数:2.00)A.栈按“先进先出“组织数据B.栈按“先进后出“组织数据C.只能在栈底插入数据D.不能删除数据8.在数据库设计中,将 ER 图转换成关系数据模型的过程属于( )。(分数:2.00)A.需求分析阶段

3、B.概念设计阶段C.逻辑设计阶段D.物理设计阶段9.有三个关系 R、S 和 T 如下: (分数:2.00)A.并B.自然连接C.笛卡尔积D.交10.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为( )。(分数:2.00)A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩11.下列符号中能够作为 C+ 标识符的是(分数:2.00)A.ClassB.gpa4.0C.1481quanzhanD.-score12.已知枚举类型声明语句为: enum COLOR WHITE, Y

4、ELLOW, GREEN=6, RED, BLACK=10 ;则枚举常量RED 的值为(分数:2.00)A.2B.3C.7D.813.执行语句序列 int n=0; for (int i=60; i0; i-=3) n+;之后,变量 n 的值是(分数:2.00)A.20B.21C.60D.6114.常量 4.2、4.2f、4L 的数据类型分别是(分数:2.00)A.float、float、doubleB.double、float、longC.double、double、floatD.float、float、long15.下列语句或语句序列中错误的是(分数:2.00)A.int a;const

5、int *point = B.const int a = 10;C.const int *point = 10;D.const int *point = new int(10);16.在一个有参函数的原型声明中可有可无的语法成分是(分数:2.00)A.形参类型B.形参变量C.函数名D.函数返回类型17.在名为 BigNumber 的类的类体中对运算符函数 double 进行了如下声明: operator double(BigNumber);函数声明中有一个明显的错误,这个错误就是(分数:2.00)A.参数表中不应该有任何参数B.缺少对函数返回类型的说明C.参数声明中缺少参数变量D.函数声明中缺

6、少函数体18.已知在一程序中已定义函数 double Mak(int m, double n);则下列函数中不可在同一程序中重载的是(分数:2.00)A.int Mak(int m, double n);B.double Mak(int m, int n);C.double Mak(double m, int n);D.double Mak(int n);19.关于赋值运算符 = 的重载,下列表述中错误的是(分数:2.00)A.= 的重载函数必须且只能有一个参数B.一个类即使没有重载 =,也可以用 = 为该类的对象赋值C.为了实现像“x=y=z;“这样的连续赋值,= 的重载函数的返回值必须声明

7、为引用D.= 可以重载为一个类的友元函数20.下面是重载为非成员函数的运算符函数原型,其中错误的是(分数:2.00)A.MyClass operator * (MyClass);B.MyClass operator + (MyClass,int);C.MyClassD.MyClass21.有如下函数定义: void swap(int a, int a=b; b=c; 若执行语句序列 int x = 0, y = 1; swap(x, y);则变量 x 和 y 的值分别是(分数:2.00)A.0 和 0B.0 和 1C.1 和 0D.1 和 122.下列运算符中,不能被重载的是(分数:2.00)

8、A.:B.=C.D.+23.用于定义类的必不可少的 C+ 关键字是(分数:2.00)A.autoB.returnC.classD.public24.有如下类声明: class Wd int a; public: int b; int c; private: int d; protected: int e; ;其中访问权限为私有的成员变量有(分数:2.00)A.a 和 bB.b 和 cC.a 和 dD.d 和 e25.有如下类声明: class Te public: Te(); / Te te; / Te *pte; / void f(Te / ;在标注号码的的四个语句中,错误的是(分数:2.0

9、0)A.B.C.D.26.当一个派生类对象结束其生命周期时,自动做的事情是(分数:2.00)A.先调用派生类的析构函数后调用基类的析构函数B.先调用基类的析构函数后调用派生类的析构函数C.如果派生类没有定义析构函数,则只调用基类的析构函数D.如果基类没有定义析构函数,则只调用派生类的析构函数27.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是(分数:2.00)A.任何B.私有C.保护或私有D.公有或保护28.有如下类定义: class XX int xdata; public: XX(int n=0) : xdata(n) ; class

10、 YY : public XX int ydata; public: YY(int m=0, int n=0) : XX(m), ydata(n) ;其中 YY 类的对象所包含的数据成员的个数是(分数:2.00)A.4B.3C.2D.129.有如下程序: #include using namespace std; class Cup public: Cup(double val=5.8):price(val) void SetPrice(double val) price=val; double GetPrice() const return price; private: double pr

11、ice; ; 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; 在标注号码的语句行中存在语法错误的是(分数:2.00)A.B.C.D.30.有如下类定义: class Bag public: Bag(string s=“Small“,string cr=“Black“):size(s),color(cr) Bag() private: string size,color; ; 若执行语句

12、Bag *ptr,my,colleage2,则 Bag 类的构造函数被调用的次数是(分数:2.00)A.2 次B.3 次C.4 次D.5 次31.N610060099) 有如下程序: #include #include using namespace std; class MyBag public: MyBag(string br,string cr):brand(br),color(cr) cout0; i-=3) n+;之后,变量 n 的值是(分数:2.00)A.20 B.21C.60D.61解析:解析:本题考查 for 循环语句,i 每次减 1,所以 for 循环执行 20 次。选项 A

13、 正确。14.常量 4.2、4.2f、4L 的数据类型分别是(分数:2.00)A.float、float、doubleB.double、float、long C.double、double、floatD.float、float、long解析:解析:本题考查实型变量,4.2 默认为 double,4.2f 为 float 型的、4L 为 long 型的。所以 B 选项正确。15.下列语句或语句序列中错误的是(分数:2.00)A.int a;const int *point = B.const int a = 10;C.const int *point = 10; D.const int *poi

14、nt = new int(10);解析:解析:本题考查常指针,C 选项中不能直接将整型变量赋值给常指针,所以 C 选项错误。16.在一个有参函数的原型声明中可有可无的语法成分是(分数:2.00)A.形参类型B.形参变量 C.函数名D.函数返回类型解析:解析:函数原型,包含返回值,函数名,参数类型,而形参变量可有可无,所以答案为 B 选项。17.在名为 BigNumber 的类的类体中对运算符函数 double 进行了如下声明: operator double(BigNumber);函数声明中有一个明显的错误,这个错误就是(分数:2.00)A.参数表中不应该有任何参数 B.缺少对函数返回类型的说

15、明C.参数声明中缺少参数变量D.函数声明中缺少函数体解析:解析:本题考查类型转换函数,其一般形式如下: operator 类型名() 实现转换的语句 在函数名前面不能指定函数类型,函数没有参数,所以 A 选项错误。18.已知在一程序中已定义函数 double Mak(int m, double n);则下列函数中不可在同一程序中重载的是(分数:2.00)A.int Mak(int m, double n); B.double Mak(int m, int n);C.double Mak(double m, int n);D.double Mak(int n);解析:解析:本题考查函数重载相关知

16、识,C+允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。返回值类型对区别重载函数没有意义。所以答案为 A 选项。19.关于赋值运算符 = 的重载,下列表述中错误的是(分数:2.00)A.= 的重载函数必须且只能有一个参数B.一个类即使没有重载 =,也可以用 = 为该类的对象赋值C.为了实现像“x=y=z;“这样的连续赋值,= 的重载函数的返回值必须声明为引用D.= 可以重载为一个类的友元函数 解析:解析:本题考查赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以 D 选项错误。20.下

17、面是重载为非成员函数的运算符函数原型,其中错误的是(分数:2.00)A.MyClass operator * (MyClass);B.MyClass operator + (MyClass,int);C.MyClassD.MyClass 解析:解析:本题考查赋值运算符重载,赋值运算符只能作为类的成员函数重载,所以 D 选项错误。21.有如下函数定义: void swap(int a, int a=b; b=c; 若执行语句序列 int x = 0, y = 1; swap(x, y);则变量 x 和 y 的值分别是(分数:2.00)A.0 和 0 B.0 和 1C.1 和 0D.1 和 1解析

18、:解析:参数传递有三种: 传值(value),传址(address),和传引用(reference) 传值时子函数(被调用者)复制父函数(调用者)传递的值,这样子函数无法改变父函数变量的值。函数 swap 的第一个参数就是传值调用,所以它的值不会改变 传址时父函数将变量的地址传递给子函数,这样子函数可以能过改写地址里的内容改变父函数中的变量 传引用则是一种看起来像传值调用,而实际上功能同传址一样的传递方式。子函数可以改写父函数的变量值。函数 swap 的第二个参数就是传引用调用,可以改变其值,所以执行完函数后,b 值与 a 值相同,即都是 0,A 选项正确。22.下列运算符中,不能被重载的是(

19、分数:2.00)A.: B.=C.D.+解析:解析:本题考查运算符重载,不能重载的运算符只有 5 个:.、.*、:、sizeof、?:。所以选择 A选项。23.用于定义类的必不可少的 C+ 关键字是(分数:2.00)A.autoB.returnC.class D.public解析:解析:本题定义类的基础知识,定义类时使用的关键字为 class,所以 C 选项正确。24.有如下类声明: class Wd int a; public: int b; int c; private: int d; protected: int e; ;其中访问权限为私有的成员变量有(分数:2.00)A.a 和 bB.

20、b 和 cC.a 和 d D.d 和 e解析:解析:本题考查类成员的访问控制,如果没有显式声明成员访问性质,则默认为私有,所以本题中a 和 d 都为类的私有成员。25.有如下类声明: class Te public: Te(); / Te te; / Te *pte; / void f(Te / ;在标注号码的的四个语句中,错误的是(分数:2.00)A.B. C.D.解析:解析:本题考查类的定义和对象的定义,题目中定义类 Te 中又定义了 Te 类型的对象 te,这样陷入循环中,所以是错误的,答案为 B 选项。26.当一个派生类对象结束其生命周期时,自动做的事情是(分数:2.00)A.先调用派

21、生类的析构函数后调用基类的析构函数 B.先调用基类的析构函数后调用派生类的析构函数C.如果派生类没有定义析构函数,则只调用基类的析构函数D.如果基类没有定义析构函数,则只调用派生类的析构函数解析:解析:执行派生类析构函数的顺序是:先执行派生类析构函数,再执行基类的析构函数,所以 A 选项正确。27.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是(分数:2.00)A.任何B.私有C.保护或私有D.公有或保护 解析:解析:派生类保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,私有成员不可访问,所以 D 选项正确。28.有如下

22、类定义: class XX int xdata; public: XX(int n=0) : xdata(n) ; class YY : public XX int ydata; public: YY(int m=0, int n=0) : XX(m), ydata(n) ;其中 YY 类的对象所包含的数据成员的个数是(分数:2.00)A.4B.3C.2 D.1解析:解析:派生类公用继承基类,那么基类中私有不可访问,保护成员依旧是保护成员,公有成员依旧是公有成员;保护继承基类,那么基类的公用成员和保护成员在派生类中成为保护成员,私有成员不可访问;私有继承那么公有成员和保护成员变为私有,私有成员

23、不可访问。本题中派生类继承基类的私有成员,不可直接访问但是可以通过基类的成员函数使用基类的私有数据成员,加上派生类的本身的数据成员,共有 2 个数据成员,C 选项正确。29.有如下程序: #include using namespace std; class Cup public: Cup(double val=5.8):price(val) void SetPrice(double val) price=val; double GetPrice() const return price; private: double price; ; int main() const Cup c1(4.5

24、); Cup c2(29.8); c1.SetPrice(5.8); / c2.SetPrice(12.8); / c1.GetPrice(); / c2.GetPrice(); / return 0; 在标注号码的语句行中存在语法错误的是(分数:2.00)A. B.C.D.解析:解析:本题考查常对象,常对象只能引用常成员函数,不能引用非常成员函数,所以是错误的。答案为 A 选项。30.有如下类定义: class Bag public: Bag(string s=“Small“,string cr=“Black“):size(s),color(cr) Bag() private: string

25、 size,color; ; 若执行语句 Bag *ptr,my,colleage2,则 Bag 类的构造函数被调用的次数是(分数:2.00)A.2 次B.3 次 C.4 次D.5 次解析:解析:本题考查默认析构函数,题中定义了一个对象和包含 2 个元素的一维对象数组,而对象指针不占用空间,对象引用也不会占用内存空间,所以不调用构造函数,那么析构函数就执行 3 次,答案为B。31.N610060099) 有如下程序: #include #include using namespace std; class MyBag public: MyBag(string br,string cr):bra

26、nd(br),color(cr) coutMyBag:GetCount()A.2B.3C.1232 D.1233解析:解析:本题考查静态数据成员和构造函数和析构函数,题目中定义了三个对象,那么一次输出count 值,即 123,销毁 ptr 后,执行析构函数,count 减 1 ,count 为 2,所以选项 C 正确。32.有如下程序: #include using namespace std; class TV public: TV(int s=41):size(s) void Print() cout/N/C/SA./N41/C54B./N41/S54C./C41/C54D./C41/N

27、54 解析:解析:本题考查了常对象和常成员函数,本题中定义了常对象 room1,执行 room1.Print();时,引用常成员函数 Print,输出/C41,执行 TV room2(54)时输出/N54,所以答案为 D。33.有如下类定义: class Shape public: _ /虚函数 Draw 的声明 ;横线处缺失的虚函数 Draw 的声明是(分数:2.00)A.virtual void Draw(); B.void virtual Draw();C.void Draw() virtual;D.void Draw(virtual);解析:解析:本题考查虚函数的定义,在成员函数前面加

28、上 virtual 时成为虚函数。A 选项正确。34.有如下类定义: class Point public: void SetX(int xx) x=xx; void SetY(int yy) y=yy; private: int x,y; ; class Circle:public Point public: int GetRadius() return radius; private: void SetRadius(int r) radius=r; int radius; friend void show(); ;在派生类 Circle 中函数 show()可访问的成员的个数为(分数:2.

29、00)A.1B.3C.5 D.7解析:解析:本题考查派生类对基类成员的访问属性,派生类公用继承基类,基类的私有成员不可访问,派生类的友元函数可以访问本类的所以成员以及基类的公用成员,所以可以访问的成员为 5 个,其中基类2 个,本类中 3 个,所以 C 选项正确。35.有如下程序: #include #include using namespace std; class Father public: Father(string s):name(s) coutF; Father() private: string name; ; class Mother public: Mother(strin

30、g s):name(s) coutM; Mother() private: string name; ; class Child:public Mother,public Father public: Child(string s1,string s2,string s3,int a):Father(s1),Mother(s2),name(s3),age(a) coutC; Child() private: string name; int age; ; int main() Child son(“Zhang“,“Li“,“Ming“,20); return 0; 运行时的输出结果是(分数:2

31、.00)A.CB.FMCC.MFC D.FMC20解析:解析:执行派生类构造函数的顺序是: 1、调用基类构造函数,2、调用子对象构造函数,3、再执行派生类析构函数,4、执行基类的析构函数。所以本题中执行构造函数为先执行基类 Mother 的构造函数、然后执行基类 Father 的构造函数,再执行派生类的构造函数函数,所以输出 MFC,答案 C 正确。36.有如下程序: #include #include using namespace std; class Animal public: virtual string GetType() const return “Animal“; virtua

32、l string GetVoice() const return “Voice“; ; class Dog:public Animal public: string GetType() const return “Dog“; string GetVoice() const return “Woof“; ; class Cat:public Animal public: string GetType() const return “Cat“; string GetVoice() const return “Miaow“; ; void Type(Animal a) cout“ speak “;

33、Speak(d); cout“ - “; Cat c; Type(c); cout“ speak “; Speak(c); coutA.Dog speak Voice - Cat speak VoiceB.Dog speak Woof - Cat speak MiaowC.Animal speak Voice - Animal speak VoiceD.Animal speak Woof - Animal speak Miaow 解析:解析:本题考查虚函数的运用,本题中定义 Dog d; Type(d)时,执行基类的 Type 函数,输出Animal,然后输出 speak,然后执行派生类的 S

34、peak 函数输出 Woof,最后输出-,同理 cat 输出类似,所以结果为 D 选项正确。37.有如下函数模板: template T square(T x) return x * x; 其中的 T 是(分数:2.00)A.函数形参B.函数实参C.模板形参 D.模板实参解析:解析:本题考查模板的相关知识,属于基础知识,可知 T 为模板形参,所以 C 选项正确。38.下列函数模板的定义中,合法的是(分数:2.00)A.template T abs(T x) return x 0? -x : x; B.template class T abs(T x) return x 0? -x : x; C

35、.template T abs(T x) return x 0? -x : x; D.template T abs(T x) return x 0? -x : x; 解析:解析:本题考查模板的定义,一般形式为:template T 通用函数定义,所以只有 A 选项正确。39.在下列表述中,用来正确表示“相对于当前位置“文件定位方式的是(分数:2.00)A.ios_base:cur B.ios_base:begC.ios_base:outD.ios_base:end解析:解析:本题考查文件流的定位操作,属于基础知识,A 选项正确。40.下列 C+ 流的操作符中,能够设置浮点数精度的是(分数:2.00)A.setprecision B.setwC.setfillD.showpoint解析:解析:本题考查浮点型数据输出精度,setprecision 用来设置浮点精度,A 选项正确。

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