国家二级C机试(选择题)模拟试卷20_第1页
国家二级C机试(选择题)模拟试卷20_第2页
国家二级C机试(选择题)模拟试卷20_第3页
国家二级C机试(选择题)模拟试卷20_第4页
国家二级C机试(选择题)模拟试卷20_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家二级C++机试(选择题)模拟试卷

第1套

一、选择题(本题共21题,每题1.0分,共21分。)

1、程序调试的任务是

A、设计测试用例

B、验证程序的正确性

C、发现程序中的错误

D、诊断和改正程序中的错误

标准答案:D

知识点解析:程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软

件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的

调试工具去执行并找出错误的具体位置v软件测试贯穿整个软件生命期,调试主要

在开发阶段。

2、有如下程序:usingnamespacestd;classCar{public:Car(inti):weight(i){)

friendintTotal(constCar&c,constBoat&b);||(T)private:classBoat{public:

Boat(inti):weight(i){)friendintTotal(constCar&c,constBoat&b);private:int

weight;intTotal(constCar&c,constBoat&b){||@returnc.weight+b.weight;)

intmain(){Carc(10);cout«"Thetotalweightis"<

A、程序编译正确.

B、程序编译时语句①出错

C、程序编译时语句②出错

D、程序编译时语句⑨出错

标准答案:A

知识点解析:程序中定义了类Car和类Boat,在两个类中分别定义他们的构造函

数和友元函数friend。程序在WC6.0中编译通过。

3、下列选项中,与实现运行时多态性无关的是()。

A、重载函数

B、虚函数

C、指针

D、引用

标准答案:A

知识点解析:在C++中,多态性可以分为两类:编译时的多态性和运行时的多态

性。编译时的多态性是通过函数重载和模版体现的,运行时的多态性是通过虚函数

体现的。

4、针对数组定义intdala。。];,下列表述中错误的是O。

A、用*(1混@可访问到数组的首元素

B、用data[9]可访问到数组的末元素

C、用dala|10]访问数组元素会超出数组边界

D、data共有10个元素,其首元素是data[l]

标准答案:D

知识点解析:此题考奄的是数组和指针的概念。题目中data"0]共有10个元素,

分别是data[O]、data[l]>data⑵、data[3]...data[9],首元素足data[O],所以选项D)

错误:其他选项均正确。

5、关于函数重载,下列叙述中错误的是()。

A、重载函数的函数名必须相同

B、重载函数必须在参数个数或类型上有所不同

C、重载函数的返回值类型必须相同

D、重载函数的函数体可以有所不同

标准答案:C

知识点解析:此题考查的是函数重载。在C++语言中,允许定义一系列函数名相

同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类

型不做要求,返回值类型也不参与区分函数的重载形式。

6、下列符号中可以用作C++标识符的是()。

A^_radius

B、foo-bar

C、else

D、3room

标准答案:A

知识点解析:此题考查的是C++语言中标识符的定义。标识符有字母、数字和下

划线构成,其第一个字母必须是字母或下划线:定义标识符时,不要采用系统的保

留字。

7、在下列字符中,不允许作为C++标识符的是()。

A^b

B、B

C、_

D、2

标准答案:D

知识点解析:C++的标识符是一个以字母或下划线开头的,由字母、数字、下划线

组成的字符串。

8、有如下程序:#inc1tide<iostream>#inc1ude<cslring>usingnamespacestd;

classXCD{char*a;intb;public:XCD(char*aa,intbb){a=new

char[strlen(aa)+I];strcpy(a,aa),b=bb;|char*Gcta(){returna;)intGetb(){return

b;));intmain(){char*pl=',abcd",*p2=,,weirong";intdl=6,d2=8;XCD

x(pl,dl),y(p2,d2);cout<<strlen(x.Geta())+y.Getb()<<endl;return0;}运行时

的输出结果是()。

A、12

B、16

C、14

D、11

标准答案:A

知识点解析:由类XCD的定义可知,成员函数Gela()返回的是字符串的长度,

Gelb()返回的是参数b的值。在主函数中slrlen(x.Gela。)的值等于4,y.Gelb()的

值等于8,所以输出两者的和为12。

9、若有如下类声明classMyclass{public:MyclassQ{cout<<l;)};执行卜列语

句Myclassa,b[2],*p[2]:以后,程序的输出结果是()。

A、11

B、111

C、1111

D、11111

标准答案:B

知识点解析:此题考查的是对象的构造。本题共声明了一个MyClass对象a,一个

包含2个MyQass对象的数组b和…个包含2个MyClass对象指针的数组p,所以

一共创建了3个MyClass类的对象,即调用了3次构造函数。

10、建立一个类对象时,系统自动调用()。

A、析构函数

B、构造函数

C、静态函数

D、友元函数

标准答案:B

知识点解析:建立一个类的对象时,编译程序需要为对象分配存储空间,进行必要

的初始化。在C++中,这项工作是由构造函数来完成。

11、已知有数组定义chara[3][4];下列表达式中错误的是()。

A、a[2]=''WIN''

B、strcpy(a[2],''WIN')

C、a[2][3]=,W,

D、a[0][l]=a[0][l]

标准答案:A

知识点解析:本题主要是对字符数组的考查。选项A中a[2]为一个地址,所以不

能用等号进行赋值操作。

12、下列有关内联函数的叙述中,正确的是()。

A、内联函数在调用时发生控制转移

B、内联函数必须通过关键字inline来定义

C、内联函数是通过编译器来实现的

D、内联函数函数体的最后一条语句必须是return语句

标准答案:C

知识点解析:此题考查的是内联函数的概念。在调用时,内联函数会像宏函数一样

的展开,将调用表达式用内联函数体来替换所以它没有一般函数的参数压栈和和退

栈操作,所以选项A错误;即使没有使用inline说明,编译器也会将在类的说明部

分定义的函数认定为内联函数,所以选项B错误;内联函数只是比普通函数有更

高的执行效率,所以选预D错误。

13、有如下程序:#include<iostream>usingnamespacestd;classBase{public:

voidfun(){cout<<"Base::fun"<<endl;});classDerived:publicBase

{public:voidfun(){cout<<"Derived::fun"<<endl;}};int

main(){Derivedd:d.fun();return0;)已知其执行后的输出结果为:Base::

funDerived::fun则程序中下划线处应填入的语句是()。

A、Base.fun();

Base::fun();

C、Base->fun();

D、fun();

标准答案:B

知识点解析:此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员

函数fun()的调用语句,此处只能使用作用域运算符“::”才能调用到基类的同名

函数.故选项RiF确.

14、有如下程序#includeusingnamespacestd;classBase{protected:

Base(){cout«'A';}Base(charc){cout<

A、B

B、BA

C、AB

D、BB

标准答案:C

知识点3析:此题考查的是派生类对象的构造。建立派生类对象时,构造函数的执

行顺序是:执行基类的沟造函数,调用顺序按照各个基类被被继承时声明的顺序;

执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序;执行派

生类的构造函数。此题中,在建立派生类Derived的对象dl时会先调用基类Base

的构造,调用的是默认沟造函数,输出字符,A,;然后调用自身的构造函数,输出

4B\故程序的输出结果是:ABo

15、有如下程序:#include<iostream>usingnamespacestd;classBasel{public:

Basel(intd){cout<<d;}~Basel(){}}:classBase2{public:Base2(intd){cout<

<d;}~Base2(){}};classDerived:publicBaseLBase2[public:Derived(int

a,intb,intc,intd);Basel(b),Base2(a),bl(d),b2(c){}Private:intbl;int

b2;}:intmain(){Derivedd(l,2,3,4);return0;}运行时的输出结果是0。

A、1234

B、2134

C、12

D、21

标准答案:D

知识点解析:程序在创建派生类对象d时,分别调用基类Basel和Basel的构迨函

数。

16、为类Malrix重载下列运算符时,只能作为Mairix类成员函数重载的运算符是

()。

A、+

B、=

C、<<

D、十十

标准答案:B

知识点解析:在C++中,=、口、()、一>以及所有的类型转换运算符只能作为成员

函数重载。

17、下列关于函数模板的描述中,正确的是()。

A、函数模板是一个实例函数

B、使用函数模板定义的函数没有返回类型

C、函数模板的类型参数与函数的参数相同

D、通过使用不同的类型参数,可以从函数模板得到不同的实例函数

标准答案:D

知识点解析:函数模板是一系列相关函数的模型或样板,这些函数的源代码相同,

只是所针对的数据类型不同。数据类型成了函数模板的参数,所以函数模板是一种

参数化类型的函数。

18、有如下程序:#include<iostrearn>usingnamespacestd;intmain()

{cout.cout.width(6);cout.cout<<123<<endl;return

0;}执行后的输出结果是()。

A、###123

B、123###

C、***123

D、123***

标准答案:A

知识点解析:此题考查的是I/O格式化输出。函数widlh(inln)设盘输入输出宽

度,当实际数据宽度小于制定的宽度时,多余的位置用填充字符填满;当实际数据

宽度大于设置的宽度时,仍按实际宽度输出;函数fill(charc)用来设置填充字符。

19、下列关于函数模板的描述中,错误的是()。

A、从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为淮

B、对于常规参数所对应的模板实参,任何情况下都不能省略

C、虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

D、模板参数表不能为空

标准答案:D

知识点解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或

全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,则

模板实参表中的那几个参数可以省略。

20、已知主函数中通过如下语句序列实现对函数模板swap的调用:inta[IO],

b[10];swap(a,b,10):下列对函数模板sw叩的声明中,会导致上述语句序列发

生编译错误的是()。

A、templatevoidswap(Ta[],Tb[],intsize);

B、templatevoidswap(intsize,Ta[],Tb[]);

C、templatevoidswap(TIa|bT2b|],intsize);

D、templatevoidswap(Tla[],T2b[]»intsize);

标准答案:B

知识点解析:由题目中函数sw叩(a,b,10)调用语句可知,在对函数模板swap的

声明语句中,应将第一、一二个参数设为数组变量,第三个参数为整型变量。

21、如需要向一个二进制文件尾部添加数据,则该文件的打开方式为()。

A、ios_base::app

B、ios_base::binaryIlos_base::out

C>ios_base::out

D、ios_base::binaryIios_base::app

标准答案:D

知识点解析:ios_base::binary模式是作为二进制文件打开,ios_base::app模

式是作为添加数据而打开(总是在尾部写)。

家二级C++机试(选择题)模拟试卷

第2套

一、选择题(本题共34题,每题1.0分,共34分。)

1、下列字符串中,不瓦以用作C++标识符的是()。

A、y_2006

B、TEST_H

C、Return

D^switch

标准答案:D

知识点解析:此题考查的是标识符。标识符是由数字、字母以及下划线构成,其第

一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于

编译系统的限制一般不超过31个字符;标识符中的大小写字母是不同的;定义标

识符时不能采用系统的保留字。

2、下列描述中正确的是()。

A、一个逻辑数据结构只能有一种存储结构

B、数据的逻辑结构属于线性结构,存储结构属于非线性结构

C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效

D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

标准答案:D

知识点解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;

数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据

的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种

存储结构;而采用不同的存储结构,其数据处理的效率是不同的。

3、下列关于栈的描述中错误的是()。

A、栈是先进后出的线性表

B、栈只能顺序存储

C、栈具有记忆作用

D、对栈的插入与删除操作中,不需要改变栈底指针

标准答案:B

知识点解析:栈是限定垄一端进行插入与删除的线性表。栈顶(top):插入数据

(即入栈)的一端:栈底(bottom):不能入栈也不能出栈的…端。栈存储数据的

原则:“先进后出”或“后进先出”。栈的特性是具有记忆作用。

4、下列叙述中正确的是()。

A、栈是一种先进先出的线性表

B、队列是一种后进先出的线性表

C、栈与队列都是非线性结构

D、栈与队列都是线性结构

标准答案:D

知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线

性结构。

5、下列与队列结构有关联的是()。

A、函数的递归调用

B、数组元素的引用

C、多重循环的执行

D、先到先服务的作业调度

标准答案:D

知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删

除。

#include<iostream>

usingnamespacestd;

intmainO{

9hera;

cin»a;

if(a-#,)cout•”《endl;

elsecout«H###w«endl;

return0;

6、有如下程序}输入字符+时,程序的运行

结果是()。

、***

B、###

C^***###

D、无输出

标准答案:A

知识点解析:本题的考点是双分支选择语句的执行流程,答题的关键点在于选择条

件的判定。双分支选择语句的执行流程是首先计算if后表达式的值,如果表达式

的值为非零,则执行if后面的分支,否则执行与其匹配的eke后面的分支。本题

执行时虽然输入变量a的值为,十,,但是在执行if后拈号内表达式(a=,2)的时,由

于此表达式为赋值表达式,因此表达式的值为赋值号右边的值其ASCII码的

值非零,执行if后面的输出语句“***''后回车。

回由回X囱

7、对下列二叉树团囱进行前序遍历的结果是

A、DYBEAFCZX

B、YDEBFZXCA

C、ABDYECFXZ

D、ABCDEFXYZ

标准答案:C

知识点露析•:二叉树前序遍历的简单描述:若二叉树为空,则结束返回;否则:

①防问根结点:②前序遍历左子树;③前序遍历石子树。可见,前序遍历二叉树

的过程是一个递归的过程。根据题目中给出的二叉树的结构可知前序遍历的结果是

ABDYECFXZo

8、若有以下程序:#includc<iostrcam>usingnamespacestd;classTestClass

{public:voidwho(){tout<<"TestClass11<<endl;}};classTestClass1:public

TestClass{public:voidwho(){cout<<"TestClass1"<<endl:));intmain()

{lestClass*p;lestClasslobjl;p=&obj1;p->who();rcturnO:}则该程序运行

后的输出结果是()。

A^TestClass1

B、TestClass

C、0

D、无输出

标准答案:B

知识点解析:程序中的TestClasl为TestClass的派生类,主函数main中定义

TestClass对象*p,TestClass1对象objl,然后p引用objl,执行p->who()则是调

用基类中的who函数,输出TesiClass。

9、下列选项中不符合良好程序设计风格的是()。

A、源程序要文档化

B、数据说明的次序要规范化

C、避免滥用goto语句

D、模块设计要保证高耦合、高内聚

标准答案:D

知识点解析:一般来讲,程序设计风格是指编写程序时所表现出的特点、习惯和逻

辑思路C程序设计风格总体而言应该强调简单和清晰,程序必须是可以理解的C可

以认为,著名的“清晰第一、效率第二”的论点已成为当今主导的程序设计风格。良

好的程序设计风格主要应注重和考虑下列几个因素:①源程序文档化,包括下列

三个方面:A符号的命名应具有一定的含义;B正确的注释能够帮助读者理解程

序;C视觉组织,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。

②数据说明的方法,包括下列三个方面:A数据说明的次序规范化;B说明语句中

变量安排有序化;C使用注释来说明复杂数据的结构。③语句的结构应该简单直

接,不应该为提高效率而把语句复杂化。④输入和输出方式和风格应尽可能方便

用户的使用。

10、下列选项中属于面向对象设计方法主要特征的是()。

A、继承

B、自项向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:面向对象设计方法的主要特征有封装性、继承性和多态性。而结构化

程序设计方法的主要原则有自顶向下,逐步求精,模块化,限制使用got。语句。

11、软件是指()。

A、程序

B、程序和文档

C、算法加数据结构

D、程序、数据与相关文档的完整集合

标准答案:D

知识点解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程

序、数据与相关文档的完整集合。软件由两部分组成:一是机器可执行的程序和数

据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。

12、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属

于系统软件的是()。

A、编辑软件

B、操作系统

C、教务管理系统

D、浏览器

标准答案:B

知识点解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应

用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用而

开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用

户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开发

软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅助

管理人员控制开发进程和项目管理的工具软件。

13、软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面

属于系统软件的是()。

A、编辑软件

B、操作系统

C、教务管理系统

D、浏览器

标准答案:B

知识点解析:软件根据应用目标的不同,是多种多样的。软件按功能可以分为:应

用软件、系统软件、支撑软件(或工具软件)。应用软件是为解决特定领域的应用

而开发的软件。系统软件是计算机管理自身资源,提高计算机使用效率并为计算机

用户提供各种服务的软件。支撑软件是介于系统软件和应用软件之间,协助用户开

发软件的工具性软件,包括辅助和支持开发和维护应用软件的工具软件,还包括辅

助管理人员控制开发进程和项目管理的工具软件。

14、软件生命周期是指()。

A、软件产品从提出、实现、使用维护到停止使用退役的过程

B、软件从需求分析、设计、实现到测试完成的过程

C、软件的开发过程

D、软件的运行维护过程

标准答案:A

知识点诵析:软件生命周期是指软件产品从提出、实现、使用、维护到停止使用、

退役的过程。

15、有如下类定义:classlest{public:l'est(){a=O;C=0;}II(J)intf(int

a)const{this.>a:a;)||@staticintg(){returna;)||(3)voidh(intb){Test::

b=b;};||©private:inta;staticintb;constintc;);intTest::b=0:在标

注号码的行中,能被正确编译的是()。

A、①

B、②

C、③

D、@

标准答案:D

知识点解析:此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初

始化列表中进行,故选项A错误;常成员函数不能更新对象的数据成员,故选项

B错误;静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说

明的非静态成员,故选顼C错误。

16、结构化程序设计中,下面对got。语句使用描述正确的是

A、禁止使用goto语句

B、使用goto语句程序效率高

C、应避免滥用goto语句

D、goto语句确实一无是处

标准答案:C

知识点解析:滥用got。语句确实有害,应尽量避免:完全避免使用got。语句并非

是明智的方法,有些地方使用got。语句会使程序流程更清楚、效率更高:争论的

焦点不应该放在是否取消goto语句,而应该放在用在什么程序结构上。

17、下列关于运算符重载的描述中,正确的是()。

A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

B、一元运算符只能作为成员函数重载

C、二元运算符重载为非成员函数时,参数表中有一个参数

D、C++中可以重载所有的运算符

标准答案:A

知识点解析:运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一

元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二

元运算符如果作为非成员函数,则参数表中必须有两个参数。C++有5个运算符不

能重载,它们是:(成员访问运算符)、*(成员指针访问运算符)、::(域运算符)、

sizeof(长度运算符)和?:(条件运算符)。故本题答案为A。

18、软件生命周期是指()。

A、软件产品从提出、实现、使用维护到停止使用退役的过程

B、软件从需求分析、设计、实现到测试完成的过程

C、软件的开发过程

D、软件的运行维护过程

标准答案:A

知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称

为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用

为止的整个时期都属于软件生命周期。

的操作是()。

A、自然连接

B、交

C、投影

D、并

标准答案:A

知识点解析•:选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表

中选出满足条件的行形成一个新表作为运算结果。投影也是单目运算,该运算从表

中选出指定的属性值组成一个新表。自然连接是一种特殊的等价连接,它将表中有

相同名称的列自动进行史录匹配。自然连接不必指定任何同等连接条件。

20、下列关于虚基类的猫述中,错误的是()。

A、使用虚基类可以消除由多继承产生的二义性

B、构造派生类对象时,虚基类的构造函数只被调用一次

C、声明"classB:virtualpublicA”说明类B为虚基类

D、建立派生类对象时,首先调用虚基类的构造函数

标准答案:C

知识点解析:虚基类是为了消除由多重继承产生的一义性而提出的。虚基类的说明

格式是:Class〈类名〉:vir【ual<继承方式><基类名>,其中关键字virtual与继承方

式的位置无关,但必须位于基类名之前,且virtual只对紧随其后基类名起作用。

对于本题来说,声明“classB:virtualpublicA”说明类A为虚基类。

21、已知枚举类型声明语句为:enumCOLOR{WHITE,YELLOW,GREEN=5,

RED,BLACK=10):则下列说法中错误的是()。

A、枚举常量YELLOW的值为1

B、枚举常量RED的值为6

C、枚举常量BLACK的值为10

D、枚举常量WHITE的值为1

标准答案:D

知识点解析:此题考查的是枚举类型的声明。声明枚举类型的语法形式为:enum

类型名{枚举值表}。需注意的是:当n个枚举值全部未赋常量值时,它们自左至右

分别与整数0、1、2、对应:若第i个枚举值赋常量值为m,则其未赋常量

值的后续枚举值分别与整数m+1、m+2…对应,直到下一个赋了值的枚举值或结

束。

22、有如下程序:#includeusingnamespacestd;classA{public:virtualvoid

fo{cout«l:)voidgo{cout«2;}};classB:publicA{public:virtualvoid

f0{cout«3;)voidgO{cout«4;)};voidshow(A&a){a.fO;a.gO;)int

main(){Bb:show(b);return0:}运行时的输出结果是()。

A、12

B、34

C、14

D、32

标准答案:D

知识点解析:在派生类classB中对基类中的虚拟成员函数virlualvoidf()和实函数

voidgO进行了重新定义,在主函数中通过语句show(b);调用派生类中的虚函数

virtualvoidf(){cout«3;)输出3,调用基类的实函数voidg(){cout«2;)输出2。

所以选项D为正确答案。

23、由关系R1和R2得到关系R3的操作是

R2R3

ra

HABcEM

2rdPIA1XM1

J。1YMI

LULdL£JIcJ0yNJ

B、并

C、笛卡尔积

D、交

标准答案:A

知识点解析:等值连接是关系运算.连接运算的一种常用的连接方式。是条件连接

(或称0连接)在连接运算符为“=”号时,即8=0时的一个特例。

24、下列叙述中,错误的是()。

A、false是一个逻辑型常量

B、b是一个字符型常量

C、365是一个int常量

D、3.1415926是一个double常量

标准答案:B

知识点解析:字符常量简称字符,它以单引号作为起止符号,中问有一个或若干个

字符。或者以开头的包括多个字符的字符序列也符合规定的字符常量。

25、下列关于模板的叙述中,正确的是()。

A、如果一个类中存在纯虚函数,这个类就是类模板

B、函数模板不能有形式参数表

C、类模板是一种参数化类型的类,是类的生成器

D、类模板中不能包含构造函数

标准答案:C

知识点解析:对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函

数。对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类

的生成器。

26、下列情况中,不会调用拷贝构造函数的是()。

A、用一个对象去初始化同一类的另一个新对象时

B、将类的一个对象赋值给该类的另一个对象时

C、函数的形参是类的对象,调用函数进行形参和实参结合时

D、函数的返回值是类的对象,函数执行返回调用时

标准答案:B

知识点解析:此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正

在创建的同类对象时,就会发生复制构造函数。因此,选项A、C、D均会调用复

制构造函数.而只有选项B没有创建的动作.不调用复:制构造函数.

27、要利用C++流进行文件操作,必须在程序中包含的头文件是()。

A、iostream

fstream

C、strstream

D、iomanip

标准答案:B

知识点解析:要使用文件流对象进行针对磁盘文件的I/O操作,必须包含

fstrem.头文件。

28>有如下类定义:classXX[intxx;public:XX():xx(0)(cout«'A";}

XX(intn):xx(n){coul<<'B';});classYY:publicXX{intyy;public:

YY():yy(0){coul<

A、YYyl(0,0);

B、YYy2(l);

C>YYy3(0);

D、YYy4;

标准答案:D

知识点解析:考查的是类的继承。选项A的执行结果为B0,建立YY的对象yl,

首先调用其构造函数,YY继承于XX所以先调用的为XX的构造函数,根据输入

的参数可知输出B,然后执行YY的构造函数输出0;同理,选项B的执行结果为

B1,选项C的执行结果为B0。

29、有如卜程序:#inc1ude<lostream>usingnamespacestd;classA{public:A(int

i){x=i;)voiddispa(){cout<<x<<,/;}private:intx;);classB:publicA

{public:B(inti):A(i+10){x=i;)voiddispb(){dispa();cout<<x<<endl;}privateint

x;);intmain(){Bb(2);b.dispb();return0;}运行时输出的结果是()。

A、10,2

B、12,10

C、12,2

D、2,2

标准答案:C

知识点解析:此题考查的是派生类的构造。主函数中,首先声明B类的对象b,执

行进入B的构造函数B(in【i)再接着执行A的构造函数A(in【i),形参i为12,x被

赋值12;通过对象b调用其成员函数dispb(),输出结果12;接着执行函数dispbO的第

2条语句输出2,然后主函数结束。

30、有如下类定义:classSample{public;Sampleiintx):ref(x){)//①

private:Sample():ref(O){}//②staticintval=5;//(3)constintref;//

④};上述程序段中,错误的语句是()。

A、①

R、②

C、@

D、©

标准答案:C

知识点解析:静态整型数据不能定义为类的数据成员。

31、下列运算符不能重载为友元函数的是()。

A、=()[]->

B、+-++--

C、><>=<=

D^+=-=*=/=

标准答案:A

知识点解析:此题考查的是运算符重载的概念。C++语言规定,=、口、()、->以

及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重

我为非成员函数。

32、有如下类定义classMyClasspublic:Private:intdata;};若要为

MyQass类重载流输入运算符>>,使得程序中可以“cin>>objr形式输入

MyClass类的对象obj,则横线处的声明语句应为()。

A、friendistream&operator>>(istream&is*MyClass&a);

B、friendistream&operator>>(istream&is,MyClassa);

C、istrcam&operator>>(istrcam&is,MyClass&a);

D、istream&operator>>(istream&is,MyClassa);

标准答案:A

知识点浦析:C++的输入运算符>>作为非类成员函数重载。在一个类中,可将输

入运,符>>声明为友元函数,在类MyClass重载输入运算符>>的形式如选项

A)所示。

33、关于关键字class和typcriame,下列表述中正确的是()。

A、程序中的typename都可以替换为class

B、程序中的class都可以替换为typename

C、在模板形参表中只能用typename来声明参数的类型

D、在模板形参表中只能用class或lypename来声明参数的类型

标准答案:A

知识点解析:此题考查的是class和typename两个关键字。关键字class除了能用

来定义类以外还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时

typename与class可以互换,但不能使用typename来定义类;在模板形参表中除了

可以用typename和class声明虚拟类型参数外,还可以使用普通类型声明常规函

数,故选项C错误。

34、运算符重载时不需要保持的性质是()。

A、操作数个数

B、操作数类型

C、优先级

D、结合性

标准答案:B

知识点解析:运算符重载应该体现为原有运算符的功能在新的数据类型上的延伸。

重载的运算符保持原有运算符的操作个数、优先级和结合性三个最基本的特征。

国家二级C++机试(选择题)模拟试卷

第3套

一、选择题(本题共33题,每题1.0分,共33分。)

1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入

栈,然后再依次出栈,则元素出栈的顺序是

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

标准答案:B

知识点解析:栈是按照“先进后出”或“后进先出''的原则组织数据的。所以出栈顺序

是EDCBA54321。

2、对于循环队列,下列叙述中正确的是

A、队头指针是固定不变的

B、队头指针一定大于队尾指针

C、队头指针一定小于队尾指针

D、队头指针可以大于队尾指针,也可以小于队尾指针

标准答案:D

知识点解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位

置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear

指向队列中的队尾元素,用队头指制from指向队头元素的前一个位置。循环队列

的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每

进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就

把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可

以小于队尾指针。

3、下列运算符不能重载为友元函数的是()。

A、=()[]->

B、+-++--

C、><>=<=

D、+=-=*=/=

标准答案:A

知识点解析:此题考查的是运算符重载的概念。C++语言规定,=、口、()、->以

及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重

载为非成员函数。

4、定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。

A、-369

B、369

C、0.369

D、整数集合{1,2,3,4,5)

标准答案:B

知识点解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整

数,所以排除选项A)和选项C),选项D)是整数集合,所以也排除。

5、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有

若干个键,它们称为该表的()。

A、连接码

B、关系码

C、外码

D、候选码

标准答案:D

知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表

中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选

取一个作为用户使用的键称为主键或主码。

6、以下关键字不能用来声明类的访问权限的是()。

A、public

B、static

C、protected

D、private

标准答案:B

知识点解析:类的成员访问权限有3种:public(公用)、protected(保护)、private私

有)。

7、有如下程序:#include#includeusingnamespacestd;classXCD{chara;ini

*

b;public:XCD(charaa,intbb){a=newchar[strlen(aa)+1];strcpy(a,aa):b=

bb;}charGeta(){returna;)intGetb(){returnb;});intmain(){charpT'abcd",

*p2="weirongH;intdl=6,d2=8;XCDx(pl,dl),y(p2,d2);cout<

A、12

B、16

C、14

D、11

标准答案:A

知识点解析:由类XCD的定义可知,成员函数Gela()返回的是字符串的长度,

Getb()返回的是参数b的值。在主函数中stHen(x.Geta())的值等于4,y.Getb()的

值等于8,所以输出两者的和为12。

8、已知函数print。没有返回值,如果在类中将之声明为常成员函数,正确的是

()。

A、voidprint()const;

B、constvoidprint();

C^voidconstprint();

D、voidprint(const);

标准答案:A

知识点解析:consi成员函数表示该成员函数只能读类数据成员,而不能修改类成

员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之

问。

9、数据库管理系统中负责数据模式定义的语言是()。

A、数据定义语言

B、数据管理语言

C、数据操纵语言

D、数据控制语言

标准答案:A

知识点解析:数据库管理系统一般提供相应的数据语言,它们分别是:数据定义语

言,负责数据的模式定义与数据的物理存取构建;数据操纵语言,负责数据的操

纵,包括查询及增、删、改等操作;数据控制语言,负责数据完整性、安全性的定

义与检查以及并发控制、故障恢复等功能。

10、下列程序用来判断数组中特定元素的位置所在,则输出结果为()。#inckide<

conio.h>#includc<iostrcam.h>intfun(int*p>intn,int*j){inti;*j=0;

for(i=0;i<n;i++)if(p|*j]<p[i])*j=i;returnp[*j];)voidmain(){inta[10]={1»

3,9,O,8,7,6,5,4,2};intj;fun(a,10,&j);cout<<j<<\<<

ag}

A、2,9

B、3

C、9

D、3,9

标准答案:A

知识点解析:由程序中的主函数main入手,调用fun函数。其中第一个实参为数

组a的名字,数组名作为实参,传递的是数组的起始地址。所以在fun函数中指针

p指向了数组的第一个元素a[0]”另外实参整型j隹递的是引用,也就是j的地

址。在fun函数中在for循环中,依次将当前元莪p[i]与j指针值为标识的p[*j]进

行比较,取较大的。最后循环后的结果就是p[叩存放数组中的最大值,并且指针j

为该值的标识位。可以看出数组的最大值是9标识位为2。

11、有如卜程序:#include<iostream>usingnamespacestd;classTestClassl

{public:TestClass1{cout<<"TestClass1";)〜TeslClassl(){coutVV"~

TestClassl";}}:classTestClass2:publicTestClassl{TestClassl*p;public;

TestClass2(){cout<<"TestClass2n;p=newTestClass1();}~TestClass2(){cout<<

"~TestClass2";deletep;)};intmain(){TestClass2obj;returnO:}执行这个程

序的输出结果是()。

A、TestClass2TestClasslTestClass1〜TestClass1〜TeslClass2〜TestClass1

B、TestClassiTestClass2TestClass1〜TestClass2~TestClass1^TestClass1

C>TestClass2TcstClass1TestClass1~TestClass2TestClass1〜TestClass1

D、TestClass1TestClasslTestClas1~TestClass1〜TestClass2〜TeslClass1

标准答案:B

知识点解析:派生类中阂造函数的执行顺序是:先调用基类构造函数,对基类数据

成员初始化,然后调用子对象构造函数,对子对象数据成员初始化;最后执行派生

类构造函数本身,对派生类数据成员初始化。由主函数main入手,首先定义了一

个TestClass2对象objo其中TestClass2公共继承TestClassl,对象obj可以访问

TestClassl中的公有成员函数。TestClass2中定义了一个TestClassl的指针p,给p

分配新空间,即指向类TestClassl,输出“TestClassl“。在TestClass2的构造函数中

首先输出“TestClassT',并在TestClassl构造函数中输出“TestClassl”。TestClass2析

构函数中输出“〜TcstClassT',删除指针p,输出“〜TestClassl”。析构TestClassl

输出“〜TestClassl”。

12、有三个关系R、S和T如下:则由关系

R和S得到关系T的操作是()。

A、自然连接

B、交

C、除

D、并

标准答案:C

知识点解析:从关系R、S和T的结构可以得出关系T是由关系R、S经过除运算

后得到的。

13、有如下程序:#includeusingnamespacestd:classVAC{public:int

f()const{return3;)intf(){return5;}};intmain(){VACvl;constVACv2;

cout<

A、53

B、35

C、55

D、33

标准答案:A

知识点解析:本题考查常对象及常成员函数及构造函数,常对象只能调用常成员函

数,所以本题中,对象VI为普通对象,执行vl.f()后,会执行默认构造函数,输

出5,对象v2为常对象,执行v2.f()后,会执行常构造函数,输出3。

14、下面不属于结构化程序设计风格的是

A、程序结构良好

B、程序的易读性

C、不滥用Got。语句

D、程序的执行效率

标准答案:D

知识点解析:结构化程序设计(structuredprogramming)是进行以模块功能和处理过

程设计为主的详细设计的基本原则。结构化程序设计是过程式程序设计的一个子

集,它对写入的程序使用逻辑结构,使得理解和修改更有效更容易。

15、下列叙述中,错误的是()。

A、false是一个逻辑型常量

B、b是一个字符型常量

C、365是一个血常量

D、3.1415926是一个double常量

标准答案:B

知识点解析:字符常量简称字符,它以单引号作为起止符号,中间有一个或若干个

字符。或者以开头的包括多个字符的字符序列也符合规定的字符常量。

16、假定MyQass为一个类,则该类的拷贝初始化构造函数的声明语句为()。

A^MyClass&(MyClassx):

B、MyClass(MyClassx)

C^MyClass(MyClass&x):

D、MyCIass(MyClass*x)

标准答案:C

知识点解析:拷贝构造函数是一个特殊的构造函数,它用一个己知的对象初始化一

个正在创建的同类对象,它的一般格式是:类名::类名(const类名&引用对象

名)。

17、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有

多名职员。则实体部门和职员间的联系是

A、1:1联系

B、m:I联系

C、1:m联系

D、m:n联系

标准答案:C

知识点解析:一个部门可以有多名员工,所以实体部门和职员间的联系是1:m联

系。

18、有如下程序:#includeusingnamespacestd;classA{public:

A(){cout«nA":}~A(){cout<<"—A";});classB:publicA{A*p;public:

B(){cout«"B";P=ncwA();}—B(){cout«"〜B";deletep;));intmain(){B

obj;return0;}执行这个程序的输出结果是()。

A、BAA〜A~B〜A

B、ABA〜B〜A〜A

C^BAA〜B~A〜A

D、ABA〜A~B〜A

标准答案:B

知识点解析:此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函

数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的

顺序(自左向右)一,执行成员对象的构造函数,调用顺序按照各个成员对象在类中

声明的顺序.>执行派生类的构造函数。所以本题在建立派生类B的对象Obj是会

先调用基类A的构造函数,然后调用自身的构造函数。注意:B类中定义的成员p

是A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在B类

构造函数中使用new操作符动态地构造了一个A类的对象,所以整个构造结果是

输出:ABAo派生类对象的析构与构造严格相反,即先析构自身,然后析构自身

所包含的成员对象,最后调用基类的析构函数。故本题中当main。函数返回时,析

构B类的对象obj:首先调用〜B(),接着再调用〜A()因为在〜B()函数中释放了动

态创建的A类对象,故整个析构所输出的结果是〜B〜A〜A。所以这个程序输出

结果为ABA〜B〜A〜A。

19、在对函数进行原型声明时,下列语法成分中,不需要的是()。

A、函数返回类型

B、函数参数列表

C、函数名

D、函数体

标准答案:D

知识点》析:在C++中函数在使用之前要预先声明,这种声明在标准C++中称为

函数原型。函数给出了函数名、返回类型以及在调用函数时必须指明参数个数和类

型。

20、下面是重载为非成员函数的运算符函数原型,其中错误的是()。

A、Fractionopcrator+(Fraction,Fraction);

B、Fractionoperator-(Fraction);

C、Fraction^operator=(Fraction<^.Fraction):

D、Fraction&opcrator+=(Fraction&,Fraction);

标准答案:C

知识点常析:此题考查的是运算符重载。C++语言规定,“=”运算符只能作为成员

函数重载。

21、为类Malrix重载下列运算符时,只能作为Malrix类成员函数重载的运算符是

()。

A、+

B、=

C、«

D、++

标准答案:B

知识点解析:在C++中,=、口、()、->以及所有的类型转换运算符只能作为成员函

数重机

22、若要重载+、=、<<、=和|]运算符,则必须作为类成员重载的运算符是()。

A^+和=

B、=和<<

C、二和《

D、=和口

标准答案:D

知识点解析:=、[|、()、->以及所有的类型转换运算符只能作为成员函数重载,而

且不能是针地枚举类型操作数的重载。

23、关键字unsigned不能修饰的类型是()。

A、char

B、int

C、float

D、longint

标准答案:C

知识点解析:实型常量指的是float和double两种数据类型,而signed和unsigned

只对整型数起作用,用于确定它们的数据范围(例如16位系统中,一个signedint

是-32768〜32767,而unsignedint是0〜65535)。unsigned对浮点数是无意义的。

24、有如下程序:#include<iostream>usingnamespacestd;classXA{inta;

public:staticintb:XA(intaa):a(aa){b++;)^XA(){)intget(){returna;));int

XA::b=0;intmain(){XAdl(2),d2(3);cout<<dl.get()+d2.get()+XA::b

<<endl;return0;)运行时的输出结果是()。

A、5

B、6

C、7

D、8

标准答案:C

知识点解析:执行XA类的实例变量dl(2)时,成员函数dl.get()的返回值等于

2,XA.b的值等于1,执行XA类的实例变量d2(3)时,成员函数dl.ge【()的返回

值等于3,XA.b的值等于2,所以输出结果为2+3+2=7。

25、若Myclass为一个类,执行“Myclassa[4],*p[5];”语句时会自动调用该类构

造函数的次数是()。

A、2

B、5

C、4

D、9

标准答案:C

知识点解析:语句MyClassa[4],*p⑸不仅定义了4个MyClass对象,分别为

a[0],a[l],a[2],a[3],而且定义了5个指向MyOass对象的指针变量,分别为

*P⑼,,"⑵,*p[3],*p|4],所以共调用MyClass的构造函数4次。

ss

;cla

estd

espac

gnam

usin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论