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

下载本文档

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

文档简介

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

第1套

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

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

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

A、12345ABCDE

B、EDCBA54321

C、ABCDE12345

D、54321EDCBA

标准答案:B

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

是EDCBA5432R

2、对如下二叉树进行后序遍历的结果为()。

A、ABCDEF

B、DBEAFC

C、ABDECF

D、DEBFCA

标准答案:D

知识点解析:所谓后序遍历是指在访问根据结点、遍历左子树与遍历右予树这三者

中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子

树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。因此,后序遍历二叉

树的过程也是一个递归过程。其简单描述为:若二叉树为空,则结束返回;否则,

先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于后序遍历,第一

个访问的结点一定是最左下的结点,最后一个访问的结点一定是根结点,所以选项

D为正确答案。

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

A、public

static

C>protected

D、private

标准答案:B

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

旬。

4、若己定义inta[]={0,。2,3,4,5,6,7,8,9),*p=a,i;其中叱达9,则

对a数组元素不正确的引用是()。

A、a|p-a]

B、*(&a[i])

C、pLiJ

D、a[10]

标准答案:D

知识点解析:数组有N个元素,则数组元素引用为a(0)〜a(N.1),共计N个,没

有a(10)这个元素,最后的元素是a(9)。

5、结构化程序所要求的基本结构不包括()。

A、顺序结构

B、GOTO跳转

C、选择(分支)结构

D、重复(循环)结构

标准答案:B

知识点解析:结构化程序的基本结构有;顺序结构、选择结构和循环结构,没有

GOTO跳转结构。

6、下面的描述中,正确的是()。

A、virtual可以用来声明虚函数

B、含有纯虚函数的类是不可以用来创建对象的,因为它是虚基类

C、即使基类的构造函数没有参数,派生类也必须建立构造函数

D、静态数据成员可以通过成员初始化列表来初始化

标准答案:A

知识点解析:在基类中用viilual声明成员函数为虚函数,所以A是正确的。纯虚

函数是在声明虚函数时被“初始化”为0的虚函数。纯虚函数是一种特殊的虚函数,

它没有具体的实现。静态数据成员函数只能在类外进行初始化。

7、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。

A、MyClass(MyClassx);

B、MyClass(MyClass&x);

C^MyClass(&x);

D、MyClass(x);

标准答案:B

知识点解析:拷贝构造函数也是构造函数,所以函数名字为MyClass,但它只有一

个参数,这个参数是本类的对象,即x;而且采用对象的引用的形式,也就是

&xo所以本题答案是B。

8、下列枚举类型的定义中,包含枚举值3的是()。

A、enumtest{RED,YELLOW,BLUE,BLACK);

B、enumtest(RED,YELLOW=4,BLUE,BLACK);

C、enumtesl{RED=l,YELLOW,BLUE,BLACK};

D、enumtest{RED,YELLOW=6,BLUE,BLACK);

标准答案:A

知识点常析:声明枚举类型的语法格式为:enum<类型名>{〈枚举值表>};<

枚举值表>包含多个枚举值,它们用逗号隔开,每个枚举值就是一个枚举常量。枚

举值有两种定义形式:一是〈值名>;二是〈值名>=〈整型常量关于枚举类

型有以下4点说明:①一个enum类型实际上是im类型的一个子集,其每一个枚

举值代表一个整数。②n个枚举值全部未赋常量值时,它们自左至右分别与整数

0,I,…n-1对应。③若第i个枚举值赋常量值为n则其未赋常量值的后续枚举

值分别与整数m+1,m+2…对应,直到下一个赋了值的枚举值或结束。因此,为枚

举值赋的整型常量值应从左到右递增。④枚举类型的声明也可作为组声明若干整

型符号常星的方法。也就是说,把每个要声明的符号常星作为一个枚举值,符各个

枚举值合在一起定义成一个枚举类型。对于本题来说,在选项A)中,对4个枚举

值没有赋常量值,所以它们从左到右与整数0,1,2,3相对应。因而选项A)为正

确选项。

9、计算斐波那契数列第n项的函数定义如下:intfib(intn){if(n==O)relurn1;else

if(n=l)return2:elsereturnfib(n一l)+fib(n-2):}若执行函数调用表达式

fib(2),函数fib被调用的次数是()。

A、1

R、2

C、3

D、4

标准答案:B

知识点解析:斐波那契数列是递归函数,所以fib(2)=fib(1)+fib(0)

=2+1=3。因而执行函数调用表达式fib(2)时,函数fib被调用的次是2次。

10、若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成

员函数时,下列原型声明正确的是()。

A、XVoperator*(XV,XV);

B、XV*(XV);

C、operator*(XV);

D、XVoperator*(XV);

标准答案:D

标准答案:B

知识点解析:此题考查的是派生类对基类成员的访问。基类的成员有公有、保护和

私有三种访问属性;类的继承方式也有公有继承、保护继承和私有继承三种。无论

那种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中

的公有成员和保护成员,

15>有如下类声明:classBase(protected;intamount;public;Base(intn=0):

amount(n){}intgetAmounl()const{returnamount;)};classDerived:public

Base{protected;intvalue;public;Derived(intm,intn):value(m).Base(n){)Int

gctData()const{returnvaluc+amount;));已知x是一个Dcnvcd对象,则下列表达

式中正确的是()。

A^x.value+x.getAmount。

B、x.gctData()—x.getAmount。

C、x.getData()—x.amount

D^x.vabled一x.aount

标准答案:B

知识点解析:此题考查的是派生类对基类成员的访问权限。派生类中的成员不能访

问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有

继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生

类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派

生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成

员在派生类中仍然是保批成员。

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

A(){coutVV"A";}-A(){coutVV"~A":)};classB:publicA(A*p;

public:B(){cout<<"B";p=newA();)~B(){coutVV"〜B";deletep;}};int

main().{Bobj;return0;}执行这个程序的输出结果是()。

A、RAA〜A〜R〜A

B、ABA〜B〜A〜A

C、BAA~B~A〜A

D、ABA~A~B〜A

标准答案:B

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

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

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

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

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

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

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

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

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

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

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

序输出结果为ABA〜B〜A〜A

17、下列运算符中,不能被重载的是()。

A、&&

B、!=

C、.

D、++

标准答案:C

知识点解析:此题考查的是运算符重载。在C++中,只有.、.*、一>小、

::、?:这五个运算符不能重载。

18、有如下类定义classMyClasspublic:Private:intdata;);若要为

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

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

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

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

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

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

标准答案:A

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

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

A)所示。

19^在语句cin>>data;中,cin是()。

A、C++的关键字

B、类名

C、对象名

D、函数名

标准答案:c

知识点解析:此题考查的是预定义流对象。C++有4个预定义的流对象:cin—标准

输入:cout—标准输出:cerr—标准出错信息输出:clog一带缓冲的标准出错信息输

出。

20、下面是类shape的定义:classShape{public:VirtualvoidDraw()=0;};下

列关于Shape类的描述中,正确的是()。

A、类Shape是虚基类

类Shape是抽象类

C、类Shape中的Draw函数声明有误

D、语句"Shapes;”能够建立Shape的一个对象s

标准答案:B

知识点解析:因为类Shape中包含纯虚函数Draw(),所以类Shape是抽象类。

21、若磁盘上已存在某个文本文件,其全路径文件名为d:\ncre\test.ixt,下列语句

中不能打开该文件的是()。

A^ifstreamflle("d:\ncre\test.txt");

B>ifstreamfile("d:\\ncre\\tesl.txt");

C、ifstreamfile;file.open("d:\\ncre\\test.txt'*);ifstream("d:WncreWtest.txt");

D^ifstream*pFile=new

标准答案:A

知识点解析:此题考查的是转义字符。在字符常量或字符串中,以开头的一系

列字符被看做是一个转义字符。要表示字符,必须使用转义字符

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

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

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

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

D、模板参数表不能为空

标准答案:D

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

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

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

23、在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是()。

A、ios_base::cur

B、ios_base::beg

C、ios_base::out

D、ios_base::end

标准答案:A

知识点解析:C++流的定位方式(也就是指针移动方式)有三种,被定义为

ios_base::seekdir中的一组枚举符号:iosbase::beg相当于文件首:ios

base::cur相当于当前位置(负数表示当前位力之前);iosbase::end相对于文

件尾。

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

第2套

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

1、在软件开发中,需求分析阶段产生的主要文档是()。

A、数据字典

B、详细设计说明书

C、数据流图说明书

D、软件需求规格说明书

标准答案:D

知识点解析:需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析

人员和设计人员之间的交流提供方便。

2、有如下程序:#include<ioslream>usingnamespacestd;voidfunction2(intn);

voidfunctionl(intn){if(n<=O)return;function2(n-2);)voidfunction2(intn){if(n

<=O)return;tunctionl(n—1);)intmain(){fimctionl(5);return0:)下列关于程序

运行情况的描述手,正确的是()。__

A、functionl运行1次,function2运行2次

B、functionl运行2次,function2运行1次

C、functionl运行2次,function2运行3次

D^functionl运行2次,function2运行2次

标准答案:D

知识点解析:在主函数中执行主nctionl(5)时,会调用解nction2(3),function2(3)X

会调用functionl(2),function]。)又会调用function2(0),到此相互调用结束。所以

func【ionl()和function2()各执行了2次。

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

fiincl(){cout«,,Ar,;}voidfunc2(){cout«,,A2,,;)};classB:publicA{public:

voidfuncl(){cout«vBr,;)voidfunc2(){cout«^^B2^^;));intmain(){A*P=ncw

B:P—>funcl();P—〉func2();deletep;return0;}执行这个程序的输出结果

是()。

A、B182

B、A1A2

「、R1A2

D、A1B2

标准答案:C

知识点解析:本题考查虚函数。虚函数指在基类中声明为virtual并在一个或多个

派生类中被重新定义的成员函数。题中定义了一个派生类对象B,并使用类A的

时象指针指向B,由于基类A中的fund为虚函数,所以会执行派生类的fund,输

出B1,而基类中的func2不是虚函数,所以p->func2()会执行基类的func2,输出

A2o故答案为C。

4、下列选项中不属于结构化程序设计方法的是()。

A^自顶向下

B、逐步求精

C、模块化

D、可复用

标准答案:D

知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,

模块化,限制使用got。语句。自顶向下是指程序设计时应先考虑总体,后考虑细

节;先考虑全局目标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目

标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进一步分

解成具体的小目标,把每个小目标称为一个模块。可复用性是指软件元素不加修改

成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工

程追求的目标之一,是提高软件生产效率的最主要方法,不属于结构化程序设计方

法。

5、设循环队列的存储空间为Q(l:m),初始状态为front二rear=m。经过一系列正

常的操作后,front=l,rear=mo为了在该队列中寻找值最大的元素,在最坏情况

下需要的比较次数为

A、m

B、m-1

C、m-2

D、1

标准答案:C

知识点解析:经过一系列正常的操作后,fronts,rear=m,那么最坏情况下需要的

比较次数为rear-front-1=m-1-1=m-2。

6、下列关于类定义的说法中,正确的是()。

A、类定义中包括数据成员和函数成员的声明

B、类成员的缺省访问权限是保护的

C、数据成员必须被声明为私有的

D、成员函数只能在类体外进行定义

标准答案:A

知识点解析:此题考查的是类的定义。类中缺省的访问权限是私有的,所以选项B

错误:类的数据成员和成员函数的访问捽制权限均可被声明为公有、私有和保护中

的一种,所以选项c错误:成员函数的实现可以在类体内定义,也可以在类体外定

义,所以选项D错误。

7、下面叙述错误的是

A、对基类成员的访问能力在private派生类中和public派生类中是相同的

B、基类的private成员在public派生类中不可访问

C、基类中的public成员随protected派生类中是protected的

D^基类中的public成员在protected派生类中仍然是public的

标准答案:D

知识点解析:基类的公有成员和保护成员在保护派生类中都成了保护成员,其私有

成员仍为基类私有。

8、以下程序的执行结果是()。#include<iostream.h>#include<iomanip.h>void

fun(intn){if(n!=O){fun(n-l);for(inti=l:i<=n;i++)cout<<setw(3)<<i;cout

<<endl;))voidmain(){fun(3);

A、001012

B、112123

C、122333

D、123

标准答案:B

知识点解析:首先由程序中的主函数main入手,调用fun函数,参数为3。fun(n)

函数在其内部,当n不等于0时,递归调用fun(n・l)。当参数为3时,fun(3)调用

fun(2)…,然后利用for循环输出i值,当n=l时,只输出I,输出回车后,就跳入

fun(2),输出1,2,最后输出是1,2,3o

T

rnrzi

FJLIJ

LZJLIJ0J

PJ

LZJLIJLLJ

则由关系R得到关系T的操作是()。

A、选择

B、投影

C、交

D、并

标准答案:A

知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到

关系To

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

A、y_2006

B、_TEST_H

CNReturn

D、switch

标准答案:D

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

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

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

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

11、有如下程序:intx=3;do{x―=2;cout<<x,)while(!(------x));执行这个程序

的输出结果是()。

A、1

B、30

C、1—2

D、死循环

标准答案:C

知识点解析:此题考查的是do—while循环语句。do—while循环首先执行do语句

中的循环体,再判断是否需要继续执行循环。题目中do语句“x-=2",while语句

中,,—x唧x为0,取反为非0,循环继续执行:执行“x-2”和“——x”取反后,

循环结束程序退出。

12、如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只

能访问从基类继承的成员。有如下程序,没有使用多态机制。includeusing

namespacestd:classBase{inta,b:public:Base(intX,intY){a=x:b=y:)void

show(){cout<

A、10,20

B、30,40

C、20,30

D、50,50

标准答案:A

知识点解析:此题考查的是多态性。在C++中,一个基类指针可以用于指向它的

派生类对象,而且通过这样的指针调用虚函数时,被调用的是该指针实际所指向的

府象类的那个重定义版本。在实函数的情况下。通过基类指针所调用的只能是基类

的那个函数版本,无法调用到派生类中重定义函数。此题中,通过指针pb所调用

的是基类的版本,即输出a和b的值10,20。

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

A、Fractionoperator+(Fraction,Fraction);

B>Fractionoperator一(Fraction);

C、Fraction&operator=(Fraction&,Fraction);

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

标准答案:C

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

函数重载。

14、有如下程序:#includeusingnamespacestd;classPoint]intx,y;public:

Point(intxl=0,intyl=0):x(xl),y(yl){}intget(){returnx+y;}};class

Circle{Pointcenter;intradius;public:Circle(intex,intcy,intr):center(cx,

cy),radius(r){)intget(){returncenter.get()+radius;}};intmain(){Circlec(3.

4,5);couK

A、5

B、7

C、9

D、12

标准答案:D

知识点解析:根据类Point和类Circle的定义可知,类Circle的实例c(3,4,5)的成员

函数c.get()返回值为3+4+5=12。

15、下列各组类型声明符中,含义相同的一组是(),

A、unsignedlongint和long

B>signedshortint和short

C、unsignedshort和short

D、shortint和int

标准答案:B

知识点解析:此题考查的是基本类型和派生型。C++语言中,基本类型的字长及其

取值范围可以放大和缩小,改变后的类型就叫做基本类型和派生类型。本题A选

项中,unsignedlongint的省略形式为unsignedlong;选项B中,signedshortint的

省略形式是short;选项C中,unsignedshort的省略形式是unsignedshort;选项D

中,shortint的省略形式是shorto

16、有如下程序:#include<iostrcarn>usingnamespacestd;classtest{private:

inta;public:,testO{cout+,,constructor"+endl;)test(inta){cout+a+endl;}

test(consttest&test){a=test.a:cout+"copyconstmctor"+endl;}

test(){Cout+"destructor"+endl;}};intmain()(testA(3);return0;}运行时输出

的结果是()。

A、3

B、constructordestmetor

C、copyconstructordestiuctor

D、3destructor

标准答案:D

知识点解析:此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但

只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一

个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象A是会

隐含调用lesl(inla)这个构造函数,输出3:接着主函数结束,对象A销毁又隐含调

用〜test。析构函数输出destructoro

17>有如下说明inta[10]={l,2,3,4,5,6,7,8,9,10),*p=a;则数值为9

的表达式是()。

A^*p+9

B、*(p+8)

C、*p+=9

D、p+8

标准答案:B

知识点解析:此题考查的是指针的运用。选项A中,*p返回的是数组元素a[0]的

值,所以最后结果是1+9=10;选项B是指针p后移8个单位位置处的值,即a[8]

其值为9;选项C中表达式的值和选项A相同;选项D的值是一个地址值,该值

无法确定。

18、为了提高函数调用的实际运行速度,可以将较简单的函数定义为()。

A、内联函数

B、重载函数

C、递归函数

D、函数模板

标准答案:A

知识点解析:C++引入内联函数的原因是用它来取代C中盼预处理宏函数。两者的

区别在于,宏函数是由预处理器对宏进行替换,而内联函数是通过编译器来实现

的。内联函数在调用时像宏函数一样展开,所以它没有一般函数的参数压栈和退栈

操作,减少了调用开销,因此,内联函数比普通函数有更高的执行效率。

19、若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个指向MyQass对象的指针变量,分别为

*p[0],*p[l],*p[2],*p[3],*p[4],所以共调用MyClass的构造函数4次。

20、已知类Myclass的定义如下classMyClass{public:void

functionl(MyClass&c){tout<

A、function1

B、function?

C、functions

D、function4

标准答案:D

知识点解析:funcyion4()函数作为类的静态成员函数,不能直接访问类中说明的非

静态成员,即coutv

21、卜列有关C十十流的叙述中,错误的是()。

A、C++操作符setw设置的输出宽度永久有效

B、C++操作符endl可以实现输出的回车换行

C、处理文件I/O时,要包含头文件fstream

D、进行输入操作时,eof()函数用于检测是否到达文件尾

标准答案:A

知识点解析:此题考查的是C++流。C++操作符seiwO的作用是设置输入输出宽

度,且只对当前一次有效,并非永久有效,故选项A叙述错误。

22、下面程序中对一维坐标点类Point进行运算符重载#includeusingnamespace

std;classPoint{public:Point(intval){x=val;)Point&operator++(){x++;

return*this;)Pointopcrator++(int){Pointold=*this;++(*this);returnold:}Int

GetX()const{returnx;}private:intx;};intmain(){Pointa(10);

cout«(++a).GetX();cout<

A、运行时输出1011

B、运行时输出1111

C、运行时输出1112

D、编译有错

标准答案:B

知识点解析:此题考查的是重载增1运算符此题中,Point&operator++Ofi®

的是前缀形式,而Poinlopcrator++(int)重载的是后缀形式。所以主函数中第1条输

出语句输出11,此时a.x的值为11;第2条输出语句,首先创建了一个Point对

象。Id保存自身,然后通过语句++(*this);调用前缀++的重载函数,因为返回值是

改变前保存的old对象,故仍输出11。

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

第3套

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

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

A、有一个以上根结点的数据结构不一定是非线性结构

B、只有一个根结点的数据结构不一定是线性结构

C、循环链表是非线性结构

D、双向链表是非线性结构

标准答案:B

知识点解析:在数据结沟中,树这类的数据结构只有一个根结点,但它不是线性结

构。

2、栈的初始状态为空。现将元素1,2,3,A,B,C依次入栈,再依次出栈,则

元素出栈的顺序是

A、1,2,3,A,B,C

B、C,B,A,1,2,3

C、C,B,A,3,2,1

D、1,2,3,C,B,A

标准答案:C

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

是CBA321。

3、已知枚举类型定义语句为:enumToken(NAME,NUMBER,PLUS=5,

MINUS,PRINT=10);则下列叙述中错误的是(),

A、枚举常量NAME的值为1

B、枚举常量NUMBER的值为1

C、枚举常量MINUS的值为6

D、枚举常量PRINT的值为10

标准答案:A

知识点解析:此题考查的是C++语言的数据类型,第一个枚举常量的值为0:允

许程序显示的定义中指定部分或全部枚举常量的值,枚举常量默认时,在前一枚举

常量值的基础上以此增lo

4、下列程序的输出结果是()。#include<iostream>usingnamespacestd;template

<typenameT>Tfun(Ta,Tb){return(a<=b)?a:b:}intmain(){cout<<fun(3,6)

VV','VVfun(3.14F,6.28F)<<endl;return0;}

A、0,3.14

B、3,3.14

C>3,3

D、3.14,3.14

标准答案:B

知识点解析:此函数模板的功能是输出a、b两数中较小的那个数。(3,6)输出3,

(3.14F,6.28F)输出3.14。

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

A、函数重载就是用相同的函数名定义多个函数

B、重载函数的参数列表必须不同

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

D、重载函数的参数可以带有默认值

标准答案:C

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

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

回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项C)错误。

6、下列描述中错误的是()。

A、在数据库系统中,数据的物理结构必须与逻辑结构一致

B、数据库技术的根本目标是要解决数据的共享问题

C、数据库设计是指在己有数据库管理系统的基础上建立数据库

D、数据库系统需要操作系统的支持

标准答案:A

知识点解析:在数据库系统中,物理独立性是指数据的物理结构(包括存储结构、

存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不

影响数据库的逻辑结构,从而不致引起应用程序的变化。

7、有如下程序:#include#includeusingnamespacestd:classMyString{public:

charstr|80];MyString(constchar*s){strcpy(str,s);}

MyString&operator+=(MyStringa){strcat(str,a.str);return*this;));

ostream&operator«(osiream&s,constMyString&z){returns<

A、abc

B、cde

C^abcde

D、abccde

标准答案:D

知识点解析:在类Mystring中,定义了带参数的构造函数Mystrjng(constchads),

其作用是把s指向的字符串拷贝到字符组str中。在类中还对运算十=进行重裁定

义,其作用是把字符串str和a相连接并赋给str,所以在主函数中执行x+=v归,

结果为abccdeo

8、下列符号中不属于C++关键字的是()。

A、friend

namespace

C、continue

D、byte

标准答案:D

知识点解析:此题考查的是C++语言的关键字。Friend是声明友元函数或友元类时

用到的关键字:namespace是定义或使用名字空间时用到的关键字;continue是终

止本次循环直接开始下一次循环所用到的关键字:byte是字节的意思,它不是C++

语言中的关键字。

9、有如下类声明:classBase{protected;intmount;public:Base(intn=0):

amount(n){)intgctAmount()const{returnamount;)};classDerived:public

Base{protected;intvalue;public;Derived(intm,intn):value(m).Base(n)()Int

getData()const{returnvalue+amount;}):已知x是一个Derived对象,则下歹J表

达式中正确的是()。

A、x.value+x.getAmount()

B、x.getData()—x.getAmount。

C^x.gctData()—x.amount

D、x.value+x.amount

标准答案:B

知识点解析:此题考查的是派生类对基类成员的访问权限。派生类中的成员不能访

问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有

继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员:派生

类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员:派

生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成

员在派生类中仍然是保尹成员。

10、下列关于C++函数的叙述中,正确的是()。

A、每个函数至少要具有一个参数

B、每个函数都必须返回一个值

C、函数在被调用之前必须先声明

D、函数不能自己调用自己

标准答案:C

知识点解析:此题考查的是函数的性质。当调用无参函数时主函数并不将数据传送

给被调函数,且可以带回或不带回函数值。函数的递归调用就是直接或间接的调用

自己。

11、在下面的类定义中,错误的语句是()。classSample{public:

Sample(intval);||①〜Sample。;||@private:inta=2.5:||③Sample。;II④}:

A、①②③④

B、®

C、③

D、①②③

标准答案:c

知识点谒析:③是错误的,因为在类体内,不允许对所定义的数据成员进行初始

化;其他语句构造和析沟函数的定义都是正确的。

12、为了取代C中带参数的宏,在C++中使用()。

A、重载函数

B、内联函数

C、递归函数

D、友元函数

标准答案:B

知识点解析:此题考查的是内联函数。C++语言引入内联函数的原因是用它来取代

C语言的预处理宏函数。

13、规范化主要为克服数据库逻辑结构中的插入异常,删除异常以及

A、数据丢失的问题

B、冗余度大的问题

C、数据不一致的问题

D、结构不合理的问题

标准答案:B

知识点解析:规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不

合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。

14、若MyClass为一个类,执行“MyClassa[4],徇[5];”语句时会自动调用该类构

造函数的次数是()。

A、2

B、5

C、4

D、9

标准答案:C

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

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

*p[0],*p[l],*p[2],*p[3],*p[4],所以共调用MyClass的构造函数4次。

15、下列运算符函数中,肯定不属于类Value的成员函数的是()。

A^Valueoperator+(Value);

B、Valueopcrator-(Value,Value);

C、Valueoperator*(int);

D、Valueoperator/(Value);

标准答案:B

知识点解析:运算符作为非成员函数时,由于没有隐含ihis指针,因此所有的操作

数必须出现在参数表中。对于第二个选项,出现了两个操作数,必然是非成员函

数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。

16、通过派生类的对象可直接访问其()。

A、公有继承基类的公有成员

B、公有继承基类的私有成员

C、私有继承基类的公有成员

D、私有继承基类的私有成员

标准答案:A

知识点解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误

的,基类的公有成员通这私有继承后,在派生类中变为了私有成员,只能在派生类

中进行访问,而通过派生类的对象不能访问,所以选项C也是错误的。基类的公

有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。

17^有如下程序:#inc1ude<iostream>usingnamespacestd;classMusic{public:

voidsetTitle(char*slr){strcpy(title,str);}protected:chartype|10];private:char

title[20];};classJazz:publicMusic{public:voidset(char*str){strcpy(type,Jazz);

//①slrcpy(title,str);//②}};下列叙述中正确的是()。

A、程序编译正确

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

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

D、程序编译时语句①云口②都出错

标准答案:C

知识点解析:派生类Jazz不能访问基类Music中的私有成员titlco

18、已知基类Employee只有一个构造函数,其定义如下:Employee::

Employee(intn):id(n){jManager是Employee的派生类,则下列对Manager的构造

函数的定义中,正确的是()。

A、Manager::Manager(inln):id(n){}

B、Manager::Manager(intn){id=n;}

C、Manager::Managcr(intn):Employee(n){)

D、Manager::Manager(intn){Employee(n);}

标准答案:C

知识点解析:基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生

类的构造函数名后面显示的调用基类的构造函数。

19^有如下类定义classMyClasspublic:Private:inidata:);若要为MyClass

类重载流输入运算符>>,使得程序中可以“cin»obj;”形式输入MyClass类的对象

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

A、friendistream&operator»(istream&is,MyClass&a);

B、friendistrcam&opcrator»(istrcam&is,MyClassa);

C、istream&operator»(istream&is,MyClass&a);

D^istream&operator»(istream&is,MyClassa);

标准答案:A

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

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

示。

20、有如下4个语句:①

A、①和③

B、①和④

C、②和③

D、②和④

标准答案:c

知识点。析:此题考查C++流的使用。selfino作用是设置填充字符:left是使输出

数据在指定宽度内左对齐:right是使输出数据在指定宽度内右对齐。

21、有如下语句序列:ifstreaminfile(nDATA.DAT");

iffinfile.good())cout«,'A";else{cout«"B";ofstreamoutfile("DATA.DAT");

if(outfile.fail())cout«"C";elsecout«"Dn;}若执行这个语句序列显示的是

BD,则说明文件DATA.DAT()0

A、以读方式打开成功

B、以读方式打开失败,但以写方式打开成功

C、以读方式打开失败,以写方式打开也失败

D、以读方式打开成功,以写方式打开也成功

标准答案:B

知识点解析:由这个语句序列显示的结果是BD,说明执行了和

cout«”D”语句。

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

第4套

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

1、有如下程序:#include<iostream>usingnamespacestd;intmain(){int*p:

*p=9;cout<<"Thevalueatp:"<<*p;rcturnO:}编译运行程序将出现的情况

是()。

A、编译时出现语法错误,不能生成可执行文件

B、运行时一定输出:Thevalueatp:9

C、运行时一定输出:Thevalueatp:*9

D、运行时有可能出错

标准答案:D

知识点解析:题目程序中“int,*p;”是定义了一个指针变量p,“*p=9;”是将p当

前指向的指针赋为9。指针p在执行这个赋值操作前并没有初始化这个变量p,所

以会有p未初始化的警告错误。

2、Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是()。

A、epp

B、exe

C、obj

D、lik

标准答案:C

知识点解析:在VC6.0集成开发环境下,用户可以使用编译(compile)命令将一

个.epp为扩展名的C++源程序文件转换成一个以.obj为扩展名的目标文件。

3、在一个容量为15的循环队列中,若头指针fronl=6,尾指针rear=9,则循环队

列中的元素个数为

A、2

B、3

C、4

D、5

标准答案:B

知识点解析:循环队列中,rear表示尾指针,front表示头指针,当有元素入队时,

rear=rear+1,而元素出队的时候,front=front+1,当rear值大于front值时,队列中

的元素个数为rear-front»当rear的值小于front时,列队中的元素个数为rear-

front+m(m表示队列的容量)。

4、在软件开发中,需求分析阶段可以使用的工具是()。

A、N—S图

B、DFD图

C、PAD图

D、程序流程图

标准答案:B

知识点解析:在需求分析阶段可以使用的工具有数据流图DFD图,数据字典

DD,判定树与判定表,所以选择B。

5、有如下程序:#include<iostream>usingnamespacestd;classsample

{private:intx,y;public:sample(inti,intj){x=i:y=j;)voiddisp(){cout<

<"dispr,<<endl;)voiddispoconst{cout<<"disp2,,<<endl;});intmain()

{constsamplea(l,2);a.disp():returnO:)该程序运行后的输出结果是()▽

ANdispl

B、disp2

C^displdisp2

D、程序编译时出错

标准答案:B

知识点解析:因为对象a被定义为常对象,所以a.disp()语句调用的是类的常成员

函数voiddisp()const»输出的结果是disp2<>

6、下列程序的输出结果为2,横线处应添加语句()。#include<iostream>using

namespacestd;classTestClassl{public:voidfun(){cout<<1:}};class

TestClass2:publicTestClassl{public:voidfun(){cout<<2;}};intmain()

{TestClassl*p=newTestClass2;p->fun();deletep;return0:}

A^public

B、private

C、virtual

D、protected

标准答案:C

知识点解析:由主函数main入手,定义TestClassl类的指针对象p指向派生类

TestClass2o因为基类和派生类中都有fun函数,题目要求输出为2,就是基类对象

访问派生类中fun函数。通过虚函数与指向基类对象的指针变量的配合使用,就能

方便调用同名函数。所以这里将基类中的fun函数声明为virtual。并且当一个成员

函数被声明为虚函数后,其派生类中的同名函数自动成为虚函数。

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

A、源程序要文档化

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

C、避免滥用goto语句

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

标准答案:D

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

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

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

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

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

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

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

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

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

用户的使用。

8、下列选项中不属于结构化程序设计方法的是()。

A、自顶向下

B、逐步求精

C、模块化

D、可复用

标准答案:D

知识点解析•:结构化程序设计方法的主要原则可以概括为:自项向下,逐步求精,

模块化,限制使用got。语句。自顶向下是指程序设计时应先考虑总体,后考虑细

节;先考虑全局目标,后考虑局部目标。逐步求精是指对复杂问题应设计一些子目

标过渡,逐步细化。模块化是把程序要解决的总目标先分解成分目标,再进•步分

解成具体的小目标,把号个小目标称为一个模块。可.复用性是指软件元素不加修改

成稍加修改便可在不同的软件开发过程中重复使用的性质。软件可复用性是软件工

程追求的目标之一,是提高软件生产效率的最主要力法,不属于结构化程序设计方

法。

9、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任

务的是()。

A、测试

B、设计

C、可行性研究

D、实现

标准答案:C

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

役的过程。其中,定义阶段包括可行性研究与计划制定和需求分析。测试、概要设

计、详细设计和实现属于开发阶段。

10、有如下程序:#includeusingnamespacestd;classBook{public:

Book(char*t=uv){strcpy(title,t);)private:chartitle[40];}:classNovel:public

Book|public:Novel(char*t-o,):Book(t){}char*Category()const{returni4^

学”;));inlmain(){Book*pb;pb二newNovel。;cout<Category();deletepb;

return0;}若程序运行时输出结果是“文学”,则横线处缺失的语句是()。

A、char*Category();

B、char*Caiegory()const;

C^virtualchar*Category()const:

D、virtualchar*Catcgory()const=0;

标准答案:D'

知识点解析:本题考查纯虚函数和抽象类,纯虚函数是在声明虚函数时被“初始化”

为0的函数,包含纯虚函数的类为抽象类,抽象类是不能被实例化的,但是可以定

义指向抽象类数据的指针变量,当派生类成为具体类后,就可以用这种指针指向派

生类的对象,然后通过该指针调用虚函数,实现多态性的操作。所以本题答案为

Do

11、下列关于this指针的叙述中,正确的是()。

A、this指针是一个隐含指针,它隐含于类的成员函数中

B、只有在使用this时,系统才会将对象的地址赋值给this

C、类的友元函数也有this指针

D、this指针表示了成员函数当前操作的数据所属的对象

标准答案:D

知识点解析:this指针是成员函数所属对象的指针,它指向类对象的地址:它隐含

于每个类的非静态成员函数中;this指针只能在类的成员函数中使用,它指向该成

员函数被调用的对象;静态成员函数没有this指针,因为类中只有一个静态成员函

数实例,使用ihis指针无意义。

12、数据结构主要研究的是数据的逻辑结构、数据的运算和()。

A、数据的方法

B、数据的存储结构

C、数据的对象

D、数据的逻辑存储

标准答案:B

知识点解析:数据结构是研究数据元素及其之间的相互关系和数据运算的一门学

科,它包含3个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

13、下面不属于软件设计阶段任务的是()。

A、软件总体设计

B、算法设计

C、制定软件确认测试计划

D、数据库设计

标准答案:C

知识点解析:软件设计阶段总体分为两部分:概要设计和详细设计,此阶段的主要

任务就是将需求规格说明文档转换为软件设计文档,将需求阶段提出的问题,

解释,形成详细设计文档,并根据功能要求,定制相应数据结构、各种流程图等,

为下一步编码做准备。

14、有如下程序:#include<iostream.h>voidmain(){charstr[2][5]={H1234".

"5678"),*p⑵;inti,j,s=0;for(i=0;i<2;i++)p[i]=str[i];for(i=0;i<2;

i++)for(j=0;p[i][j]>>\j+=2)s=10*s+p[i][j]-,0,;cout<<s;}该程序的输出

结果是()。

A、1357

B、2468

C、3556

D、23678

标准答案:A

知识点解析:程序中的“for(i=0;i<2;i++)p[i]=str[i]:”语句将str中的值赋值给指

针数组p。在接下来的二重for循环中,跳取“i+=2”,p指针指向的值即力“,"3",

“5”,“7”。在分别对字符到整型的转换,即减去字符,(T,然后依次转换为千位,百

位,.十

温馨提示

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

评论

0/150

提交评论