99网
您的当前位置:首页国家二级(C++)笔试模拟试卷173(题后含答案及解析)

国家二级(C++)笔试模拟试卷173(题后含答案及解析)

来源:99网


国家二级(C++)笔试模拟试卷173 (题后含答案及解析)

题型有:1. 选择题 2. 填空题

选择题(每小题2分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。

1. 按照“后进先出”原则组织数据的数据结构是( )。 A.队列 B.栈

C.双向链表 D.二叉树

正确答案:B

解析: 栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表;队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,队列具有先进先出(FIFO)的特点。双向链表可以在链表的头和尾进行添加删除操作,而二叉树是非线性结构。

2. 下列对于软件测试的描述中正确的是( )。 A.软件测试的目的是证明程序是否正确 B.软件测试的目的是使程序运行结果正确

C.软件测试的目的是尽可能多地发现程序中的错误 D.软件测试的目的是使程序符合结构化原则

正确答案:C

解析: 软件测试是保证软件质量的关键环节,直接影响着软件的质量评估。软件测试不仅要讲究策略,更要讲究时效性。软件测试的目的是尽可能多地发现程序中的错误。

3. 模块性是软件模块化所提出的要求,衡量模块性的度量标准是模块的( )。

A.抽象和信息隐蔽 B.局部化和封装化

C.内聚性和耦合性 D.激活机制和控制方法

正确答案:C

解析: 模块的程序是评价设计好坏的重要度量标准。衡量软件的模块性使用耦合性和内聚性两个定性的度量标准。

4. 下述关于数据库系统的叙述中,正确的是( )。

A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型一致 D.数据库系统比文件系统能管理更多的数据

正确答案:A

解析: 数据库系统会减少数据冗余,但不可能避免一切冗余。

5. 对如下二叉树 进行后序遍历的结果为( )。 A.ABCDEF B.DBEAFC

C.ABDECF D.DEBFCA

正确答案:D

解析: 二叉树的遍历有3种:前序、中序和后序。后序遍历首先遍历左子树或左子结点,然后遍历右子树或右子结点,最后访问根结点。分析本题二叉树,对其进行后序遍历的结果为DEBFCA。

6. 同一概念在一处为实体而在另一处为属性或联系的冲突在视图集成中叫( )。

A.命名冲突 B.概念冲突 C.域冲突 D.约束冲突

正确答案:B

解析: 同一概念在一处为实体,而在另一处为属性或联系称为概念冲突。

7. 面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是( )。

A.模拟现实世界中不同事物之间的联系 B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考

正确答案:B

解析: 所谓数据库是指长期存储在计算机内的、有组织的、可共事的数据集合。因此进行数据库设计的根本目标是为了解决数据共事问题。

8. 数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。

A.DB包含DBS和DBMS B.DBMS包含DB和DBS

C.DBS包含DB和DBMS D.没有任何关系

正确答案:C

解析: 数据库系统(DBS)是指在计算机系统中引入数据库后的系统,一般有数据库(DB)、数据库管理系统(DBMS)、应用系统、数据库管理员和用户构成。

9. 索引属于( )。 A.模式 B.内模式

C.外模式 D.概念模式

正确答案:B

解析: 建立索引是加快查询速度的有效手段,这与索引按什么方式组织有关,它建立在数据库表的基础上,属于内模式。

10. 下列关于关系运算的叙述中正确的是( )。 A.投影、选择、连接是从二维表的行的方向来进行运算 B.并、交、差是从二维表的列的方向来进行运算

C.投影、选择、连接是从二维表的列的方向来进行运算 D.以上三种说法都不对

正确答案:C

解析: 在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等。前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的,后者主要是从二维表的列的方向来进行运算。因此,选项A与选项B的说法都是错误的,而选项C的说法正确。

11. 下列选项中不全是C++语言关键字的是 A.const,break,default B.long,void,using

C.virtual,exterm,include D.try,throw,this

正确答案:C

12. 以下C++语言中用于单行注释的是 A.// B./*

C.*/ D.|

正确答案:A

13. 在32位的计算机中,一个char型数据所占的内存长度的字节是 A.4 B.1

C.2 D.8

正确答案:B

14. 若变量已正确定义并赋值,以下符合C++语言语法的表达式是 A.a:=b+1 B.a=b=c+2

C.int 18.5%3 D.a=a+7=c+b

正确答案:B 15. 有如下程序: #include”iostream.h” void main( ) { int x=1,a=0,b=0; swish(X){ case 0:b++; case 1:a++; case 2:a++;b++; } cout<<”a=”<<a<<”,”<<”b=”<<b; } 该程序的输出结果是

A.a=2,b=1 B.a=1,b=1

C.a=1,b=0 D.a=2,b=2

正确答案:A

16. 有以下程序: #include”iostream.h” void main( ) { int i=1,j=1,k=2; if((j++||k++)&&i++) cout<<i<<”,”<<j<<”,”<<k; cout<<endl; } 执行后输出结果是

A.1,1,2 B.2,2,1

C.2,2,2 D.2,2,3

正确答案:C

17. 若有说明int a[3][4];,则a数组元素的非法引用是 A.a[0][2*1] B.a[1][3]

C.a[4-2][10]

D.a[0][4]

正确答案:D

18. 若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是 A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a D.&a,&*point,point

正确答案:D

19. 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是 A.函数调用可以作为的语句存在 B.函数调用可以无返回值

C.函数调用可以出现在表达式中 D.函数调用可以作为一个函数的形参

正确答案:D

20. 若运行时给变量x输入12,则以下程序的运行结果是 #include<iostream.h> void main( ) { int x,y; cin>>x; y=X>12?x+10:x-12; cout<<y; cout<<endl; }

A.0 B.22

C.12 D.10

正确答案:A

21. 以下类定义中可能会引起错误的语句是 class A { public: ~A( {)} //1 int i; //2 private: int j; //3 A(int i){i++;} //4 };

A.1 B.2

C.3 D.4

正确答案:D

22. 以下关于C++语言类的说法中正确的是 A.C++语言的默认访问权限是private

B.C++语言中的类定义,用户一定要自己定义一个构造函数用于实例化类 C.C++语言中的成员函数的实现部分一定要写在类定义外

D.C++语言中的类不能够嵌套定义

正确答案:A

23. 下列描述中错误的是

A.派生类可以作为基类派生其他的子类 B.派生类继承基类的所有数据成员 C.派生类可以有多个基类 D.派生类不能继承一些函数成员

正确答案:B

24. 派生类对象对其基类中的什么成员是可访问的? A.公有继承的私有成员 B.私有继承的公有成员

C.私有继承的保护成员 D.保护继承的保护成员

正确答案:D

25. 下列运算符中哪些是不能够被重载的? A..,.*,->*,::,?:

B.++,--,new,delete,== C.sizeof,new,delete,++,-- D.sizeof,new,delete,+,-

正确答案:A

26. 下列关于运算符重载不正确的是 A.运算符重载不能改变运算符的操作数个数 B.运算符重载不能改变运算符的优先级 C.运算符重载不能改变运算符的结合性

D.运算符重载能改变对预定义类型数据的操作方式

正确答案:D

27. 下列关于函数模板实参不能省略的情况说明不正确的是 A.从模板函数实参表获得的信息有矛盾

B.需要获得特定类型的返回值,而不管参数的类型如何 C.虚拟类型参数没有出现在模板函数的形参表中 D.函数模板不含有常规形参

正确答案:D

28. 对于重载的运算符>>,它是一个 A.用于输入的友元函数 B.用于输入的成员函数

C.用于输出的友元函数 D.用于输出的成员函数

正确答案:A

29. 表达式10>5&&6%3的值是 A.-1 B.非零值 C.0 D.1

正确答案:C

30. 若调用一个函数,且此函数中没有return语句,则正确的说法是该函数

A.没有返回值

B.返回若干个系统默认值

C.有返回值,但返回一个不确定的值 D.能返回一个用户所希望的函数值

正确答案:C 31. 以下函数调用语句中含有参数的个数是 excc((V1,V2),(V2,V3,V4),V6);

A.3 B.4

C.5 D.6

正确答案:A

32. 以下能对二维数组a进行正确初始化的语句是 A.int a[2][]={{1,0,1},55,2,3}}; B.int a[][3]={{1,2,3},{4,5,6}}; C.int a[2][4]={{1,2,3},{4,5},{6}}; D.int a[][3]={{1,0,1},{},{1,1}};

正确答案:B

33. 下列程序段的输出结果是 #include<iostream.h> void fun(int*x,int*y) {cout<<*x<<*y; *X=3; *y=4; }

void main( ) {int x=1,y=2; fun(&y,&x); cout<<X<<y<<endl; }

A.2143 B.1212

C.1234 D.2112

正确答案:A

34. 有如下程序: #include<iostream.h> void main( ) { float x=2.0,y; if(x<0.0)y=0.0; else if(x<10.0)y=1.0/x; else y=1.0; cout<<y; } 该程序的输出结果是

A.0 B.0.25

C.0.5 D.1.0

正确答案:C

35. 下列程序的输出结果是 #include<iostream.h> void main( ) {char*str=”12123434”; int x1=0,x2=0,x3=0,x4=0,i; for(i=

0;str[i]!=’\\0’;i++) switch(str[i]) {case’1’:x4++; case’2’:X3++; case’3’:X2++; case’4’:X1++; } cout<<X1<<”,”<

A.8,6,4,1 B.8,6,3,2

C.8,8,4,1 D.8,6,4,2

正确答案:D

填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡上。注意:以命令关键字填空的必须拼写完整。

36. 栈和队列通赏采用的存储结构是______。

正确答案: 链式存储和顺序存储

37. 在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。

正确答案: 自顶而下

38. 软件结构是以______为基础而组成的一种控制层次结构。

正确答案: 模块

39. 数据库系统阶段的数据具有较高性,数据性包括物理性和______两个含义。

正确答案: 逻辑性

40. 数据库保护分为安全性控制、______、并发性控制和数据的恢复。

正确答案: 完整性控制

41. 如果表达式--X中的“--”是重载的类运算符,采用运算符函数调用格式,及表达式还可以表示为______。

正确答案:x.operator--( )

解析: 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.operator-(z)或者operator-(y,z);另一种是通过运算符构成表达式,即y-z。因为“--”运算符既可以作为前缀算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀“--”时必须多一个虚拟参数:int。

42. 虚函数必须是类的______。

正确答案:成员函数

解析: 虚函数是允许在派生类中重新定义与基类同名的函数,并且通过基类指针或引用来访问基类和派生类中的同名函数。在基类中用virtual声明成员函数为虚函数,所以虚函数是类的成员函数。

43. 多态性分为两类:编译时的多态性和______。

正确答案:运行时的多态性

解析: 多态性是指一个接口,多种方法。它分为编译时多态性和运行时的多态性。

44. 在下面的程序的横线处填上适当的语句,使该程序的输出结果为12。

#include<iostream> using namespace std; class TestClass { public: int a,b; TestClass(int i,int j){a=i;b=j;} }; class TestCla

正确答案:cout<<TestClass∷a

解析: 题目中程序TestClass为基类,TestClass1为派生类,在主函数中定义TestClass1对象d(1)。据题目要求“输出基类数据成员a的值”,基类为TestClass,利用∷域运算符取其成员a的值。

45. 在面向对象的程序设计中,将数据和处理数据的操作封装成一个整体就定义了一种事物的类型,称作“类”。类是一种抽象的概念,属于该类的一个实例叫做“______”。

正确答案:对象

解析: 此题考查的是对象的概念。类是将不同类型的数据与这些数据相关的操作封装在一起的集合体,对象是类的实例,一个对象必须属于一个已知的类。

46. 请在下列程序的横线处填写正确的语句。#include<iostream> using namespace std; class Base{ public:void fun( ){cout<<”Base fun”<<endl;} }; class Derivde:public Base{ public:void fun( ){______∥ 调用基类的函数

正确答案:Base∷fun( )

解析: 此题考查的是派生类对基类成员的访问。本题中派生类Derived覆盖了基类Base中的fun( ),如果需要调用基类中的fun( ),则需要使用域运算符“∷”。故应填写Base∷fun( )。

47. 己知类sample是一个抽象类,其成员函数display是无形参、无返回

类型的纯虚函数,请完成其声明:class sample{ public: sample( ){}; ______ };

正确答案:virtual viod display( )=0;

解析: 此题考查的是纯虚函数。纯虚函数定义格式是在虚函数的后面加上“=0”。与虚函数不同的是,纯虚函数允许没有函数体,故本题应填入的内容是virtual viod display( )=0;。

48. 请将下列程序的横线处补充完整,使得输出结果为bbaa#include<

iostream> using namespace std; class A{ public: ______{cout<<”aa”;} }; class B:public A{ public: ~B( ){cout<<”bb”;} }; int main( ){B*p=new

正确答案:~A( )

解析: 此题考查的是类的构造与析构。本题要求输出的结果中包含aa,所以基类A中横线处的函数一定要被执行。横线处应是定义基类的构造或者析构函数,如果定义的是构造,那么aa肯定在new操作时就输出,而下面的bb是在析构函数中,会在delete时被输出。故可以肯定应填入基类A的析构函数定义:~A( )。

49. 请将下列栈类Stack的横线处补充完整。 class Stack{ private: int pList[100]; ∥int数组,用于存放栈的元素 int top; ∥栈顶元素(数组下标) public:Stack( ):top(0){}void Push(const int &item); ∥新元素item

正确答案:pList[top]=item

解析: 此题考查的是堆栈数据结构。堆栈是一种先进后出的队列,每次入栈在栈顶,出栈也在栈顶。当栈顶指针所指位置是最后一个有效数据时,下次出栈直接取出栈顶指针所指数据,然后栈顶指针再减1;入栈时需要将栈顶指针先增1,然后将数据存入栈顶指针所指位置。本题中,从Pop( )数中可以看出,是先取数然后top才会减1,Push( )函数应先增1再取数。所以应填入pList[top]=item。

50. 若要访问指针变量p所指向的数据,应使用表达式______。

正确答案:*p 解析: 此题考查的是指针。指针使用两种特殊的运算符“:*”和“&”。“&”用于返回其操作对象内存地址;“*”用于返回其操作数所指对象的值。

因篇幅问题不能全部显示,请点此查看更多更全内容