国家二级C++机试(选择题)模拟试卷317附答案解析

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

选择题

1.算法的空间复杂度是指( )。(A)

A. 算法在执行过程中所需要的计算机存储空间

B. 算法所处理的数据量

C. 算法程序中的语句或指令条数

D. 算法在执行过程中所需要的临时工作单元数

解析:算法的空间复杂度是指执行这个算法所需耍的内存空间。这个内存空间包括算法程序所占的空问,输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。

2.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是(B)

A. 12345ABCDE

B. EDCBA54321

C. ABCDEl2345

D. 54321EDCBA

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

3.以下( )不属于对象的基本特征。(A)

A. 继承性

B. 封装性

C. 分类性

D. 多态性

解析:对象具有特征:标识惟一性,指对象是可区分的;分类性,指可以将具有相同属性和操作的对象抽象成类;多态性,指同一个操作可以是不同对象的行为;封装性,从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法;模块独立性好,对象是面向对象的软件的基本模块,对象内部各种元素彼此结合得很紧密,内聚性强。

4.有以下程序,输出结果( )。

#include<iostream.h>

void main()

{static int b[][3]={{1,2,3},{4},{5,6}};

b[0][2]=12,b[1][2]=18;

cout<<**b<<’’\t’’<<**(b+1)

<<’’\t’’<<**(b+1)<<’’\t’’<<*(*(b+1)+2)<<’’\n’’;

cout<<b[0][2]+b[1][2]+b[2][2]<<end1;

}(A)

A. 1 4 4 18 30

B. 1 1 4 4 18

C. 4 4 18 1 1

D. 4 4 4 30 1

解析:本题b是一个3×3的二维数组:利用指针表示数组:*(*(数组名+i)+j)。**b表示b[0][0]元素,值是1,**(b+1)表示是b[0][1]的元素,值是4。*(*(b+1)+2)表示b[1][2]的元素,值是18,b[0][2]+b[1][2]+b[2][2]之和是30。

5.下列程序的输出结果是( )。

#include<iostream>

using namespace std;

template<typename T>

T fun(T a,T b){return(a<=b)?a:b;}

int main()

{

cout<<fun(3,6)<<’,’<<fun(3.14F,6.28F)<<end1;

return 0;

}(B)

A. 0,3.14

B. 3,3.14

C. 3,3

D. 3.14,3.14

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

6.下面不属于软件设计阶段任务的是( )。(C)

A. 软件总体设计

B. 算法设计

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

D. 数据库设计

解析:软件设计阶段总体分为两部分:概要设计和详细设计,此阶段的主要任务就是将需求规格说明文档转换为软件设计文档,将需求阶段提出的问题,一一解释,形成详细设计文档,并根据功能要求,定制相应数据结构、各种流程图等,为下一步编码做准备。

7.下面对对象概念描述正确的是(A)

A. 对象问的通信靠消息传递

B. 对象是名字和方法的封装体

C. 任何对象必须有继承性

D. 对象的多态性是指一个对象有多个操作

解析:对象是面向对象方法中最基本的概念。操作描述了对象执行的功能,通过消息传递,还可以为其他对象使用。操作过程是被封装在对象中,用户看不到,称之为对象的封装性。对象的多态性是指同一个操作可以是不同对象的行为。不是所有的对象都必须有继承性。

8.下面叙述中错误的是( )。(A)

A. 软件测试的目的是发现错误并改正错误

B. 对被调试的程序进行“错误定位”是程序调试的必要步骤

C. 程序调试通常也称为Debug

D. 软件测试应严格执行测试计划,排除测试的随意性

解析:软件测试是为了发现错误而执行程序的过程。软件测试要严格执行测试计划,排除测试的随意性。程序调试通常也称Debug,对被调试的程序进行“错误”定位是程序调试的必要步骤。

9.下列描述中正确的是( )。(A)

A. 软件测试的主要目的是发现程序中的错误

B. 软件测试的主要目的是确定程序中错误的位置

C. 为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作

D. 软件测试是证明软件没有错误

解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。为了达到好的测试效果,应该由独立的第三方来构造测试,程序员应尽量避免检查自己的程序。

10.有如下程序:

#include

using namespace std;

class Base{

public:

Base(int x=0){cout<<x;)

};

class Derived:public Base{

public:

Derived(int x=0){cout<<x;)

private:

Base val;

);

int main(){

Derived d(1);

return 0:

}

程序的输出结果是( )。(D)

A. 0

B. 1

C. 01

D. 001

解析:此题考查的是类的构造。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右).>执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序.>执行自身的构造函数。本题中,首先会构造基类Base,调用Base类的构造函数,输出0;然后还定义了一个Base类的对象,再次调用Base类的默认构造函数输出0;最后构造自身,因主函数中传入了构造参数l,所以输出1。故最后输出结果是:001。

11.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下面图符名标识的图符不属于数据流图合法图符的是(A)

A. 控制流

B. 加工

C. 数据存储

D. 源和潭

解析:数据流图中的主要图形元素有加工(转换)、数据流、存储文件(数据源)、源和潭等。

12.数据库设计的根本目标是要解决( )。(A)

A. 数据共享问题

B. 数据安全问题

C. 大量数据存储问题

D. 简化数据维护

解析:数据库应用系统中的一个核心问题就是设计一个能满足用户要求、性能良好的数据库,这就是数据库设计。数据库设计是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式。数据库设计的根本目标是要解决数据共享的问题。

13.有如下类定义:

class MyClass{

Int value;

public;

MyClass(int n):value(n){}

int gerValue()const{return value;}

};

则类MyClass的构造函数的个数是( )。(A)

A. 1个

B. 2个

C. 3个

D. 4个

解析:此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。

14.有两个关系R和S如下:

(B)

A. 选择

B. 投影

C. 插入

D. 连接

解析:一个关系R通过投影运算后仍为一个关系R’,R’是由R中投影运算所指出的那些域的列所组成的关系。所以题目中关系S是由关系R经过投影运算所得(选择运算主要是对关系R中选择由满足逻辑条件的元组所组成的一个新关系)。

15.通过派生类的对象可直接访问其( )。(A)

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

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

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

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

解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类中进行访问,而通过派生类的对象不能访问,所以选项c也是错误的。基类的公有成员通过公有继承后,在派生类种是公有成员,所以町以通过派生对象来访问。

16.下列定义语句中,错误的是( )。(A)

A. int px*;

B. char*acp[10];

C. char(*pac)[10];

D. int(*p)();

解析:指针变量声明的一般形式为:*,在选项A中,*放在变量名的后面,所以是错误的。

17.有如下程序:

#include<iostream>

void fun(int&x,int y){int t=x;x=y;y=t;}

int main()

{

int a[21={23,42};

fun(a[1],a[0]);

std::cout<<a[0]<<\(B)

A. 42,42

B. 23,23

C. 23,42

D. 42,23

解析:此题考查是是函数的调用以及参数值的传递。函数fun中的第一个参数是引用传值方式,是双向的;第二个参数是按值传递,是单向的。

18.学院的每名教师只能属于一个系,则实体系和实体教师间的联系是(A)

A. 一对多

B. 多对多

C. 多对一

D. 一对一

解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。本题中一个是体系有多个老师,但老师只能属于一个系,因此是一对多关系。

19.有如下程序:

#include<iostream>

using namespace std;

class XA{

int a;

public:

static int b;

XA(int aa):a(aa){b++;}

int getA(){return a;}

};

int XA::b=0;

int main(){

XA d1(4),d2(5);

cout<<d1.getA()+d2.getA()+XA::b+d1.b<<endl;

return O;

}

运行这个程序的输出结果是( )。(C)

A. 9

B. 11

C. 13

D. 15

解析:在类XA的构造函数中,定义了用成员变量a的值初始化变量髓,同时静态成员变量b值加1。所以当在主main函数中定义类XA的对象d1(4)后,变量b的等于1,定义对象d2(5)后,变量b的值等于2,所以表达式d1.getA()+d.2.getA()+XA::b+d1.b等于4+5+1+2+1=13。

20.有如下程序:

#include<iostream>

using namespace std;

class Base

{

public:

void fun(){cout<<\(B)

A. Base.fun();

B. Base::fun();

C. Base->fun();

D. fun();

解析:此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员函数fun()的调用语句,此处只能使用作用域运算符“::”才能调用到基类的同名函数,故选项B正确。

21.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为( )。(C)

A. 派生类、成员对象类、基类

B. 成员对象类、基类、派生类

C. 基类、成员对象类、派生类

D. 基类、派生类、成员对象类

解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函数,调用的顺序按照基类被继承时候的顺序(自左向右)。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而下),最后是执行派生类的构造函数。

22.有如下程序:

#inc1ude<iostream>

using namespace std;

class Media{

public:

void Name();

void Show();

protected:

int page;

};

class Book: private Media{

public:

void Print() {cout<<page<<endl;}

void Show(){Media::Show();) //①

};

int main(){

Book Bible;

Bible.Name(); //②

Bible.Print(); //③

Bible.Show(); //④

return 0:

}

编译时有错误的是( )。(B)

A. 语句①

B. 语句②

C. 语句③

D. 语句④

解析:类Book私有继承自类Media,所以类Media中的公有成员函数Name()在继承类Book中变成了私有成员函数,因而类Book的对象Bible不能访问私有成员函数Name( )。

23.下列关于虚函数的说明中,正确的是( )。(B)

A. 从虚基类继承的函数都是虚函数

B. 虚函数不得是静态成员函数

C. 只能通过指针或引用调用虚函数

D. 抽象类中的成员函数都是虚函数

解析:此题考查的是虚函数的概念。在成员函数的声明前面加上virual关键字,即可把函数声明为虚函数。虚函数可以是另一个函数的友元函数而不能是静态成员函数。

24.已知Value是一个类,Value是Value的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是( )。(B)

A. Value operator+(Value v,int i);

B. Value operator+(Value v=value;int i);

C. Value operator+(Value vint i=0);

D. Value operator+(Value v=value,int i=0);

解析:此题考查的是重载加法运算符“+”。“+”是二元运算符,其第一操作数是对象本身,i为第二操作数,由此可知选项B正确。

25.在类中重载赋值运算符时,应将其声明为类的( )。(C)

A. 静态函数

B. 友元函数

C. 成员函数

D. 构造函数

解析:赋值运算符只能作为类的成员函数重载。

资源下载《国家二级C++机试(选择题)模拟试卷317附答案解析.doc》 文档仅限注册用户下载,请先
将本套试题Word文档或文章下载到电脑,方便收藏和打印
资源下载
《国家二级C++机试(选择题)模拟试卷317附答案解析.doc》
试题含答案和解析word文档下载价格:免费
将本套试题Word文档或文章下载到电脑,方便收藏和打印
0

评论0

没有账号? 注册  忘记密码?