国家二级(C++)笔试模拟试卷13_第1页
国家二级(C++)笔试模拟试卷13_第2页
国家二级(C++)笔试模拟试卷13_第3页
国家二级(C++)笔试模拟试卷13_第4页
国家二级(C++)笔试模拟试卷13_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

眼家二级(C++)笔试模拟试卷第1套

一、公共基础选择题(本题共70题,每题7.0分,共

10分。)

1、有如下函数模板声明:template<typenameT>TMax(Ta,TB)

{return(a>=B)?a:b;}下列对函数模板Max的调用中错误的是A)Max(3.5,4.5)

B)Max(3.5,4);C)Max<double>(3.5,4.5)D)Max<double>(3.5,4)

A、

B、

C、

D、

标准答案:B

知识点解析:暂无解析

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

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

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

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

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

标准答案:D

知识点解析:数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形

式,一种数据结构可以艰据需要采用不同的存储结构,常用的存储结构有顺序和链

式结构。采用不同的存储结构,其处理的效率是不同的。

3、对建立良好的程序设计风格,下面描述正确的是

A、程序应简单、清晰、可读性好

B、符号名的命名只要符合语法

C、充分考虑程序的执行效率

D、程序的注释可有可无

标准答案:A

知识点解析:程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率

而把语句复杂化。

4、下面关于指针的说法中错误的是()。

A、在指针定义的同时可以对其进行初始化

B、指针根据其所指向变量的类型的不同,所占用内存大小也不同

C、指针中存放的是内存单元的地址

D、相同类型的指针之间可以相互赋值

标准答案:B

知识点解析:指针是一种用来存放其他变量地址的数据类型,它的声明形式为:

〈类型〉+〈变量名〉,可以在声明的时候对其进行初始化。由于其存放的是内存

单元的地址,所以大小一般都是4个字节

5、函数定义如下:voidfun(intx,int&y){x++;y++;)如果执行代码段:inta=0,b=l;

fun(a,b);则变量a和b的值分别是()。

A、U和1

B、0和2

C、1和1

D、1和2

标准答案:B

知识点解析:本题中定义了一个fun函数,当调用fun(a,b);函数时,形参x和y

被初始化为实参a和b的引用,参数x为非引用类型,参数y为引用类型,在执行

该函数时,对形参x的改变不会影响到实参,形参y的改变将会影响到实参,因此

调用fun函数后,形参变量x=l,y=2,实参变量a=0,b=2o

6、对虚函数的调用()。

A、一定使用动态联编

B、必须使用动态联编

C、一定使用静态联编

D、不一定使用动态联编

标准答案:D

知识点解析:虚函数在运行阶段和类的对象绑定在一起,这样成为动态联编。虚函

数声明只能出现在类声明中虚函数原型中,而不能在成员的函数体实现的时候。必

须由成员函数来调用或者通过指针、引用来访问虚函数°如果通过对象名来访问虚

函数,则联编在编译过程中认为足静态联编。

7、人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和()。

A、数据依赖

B、多值依赖

C、单值依赖

D、数值依赖

标准答案:2

知识点3析:人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖和

多值依赖。

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

A、在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统

B、在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关

C、在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关

D、在数据库设计的过程中,物理结构设计依赖于具体的计算机系统

标准答案:2

知识点解析:暂无解析

9、设栈S的初始状态为空。元素a,b,c,d,e,f依次通过栈S,若出栈的顺序

为b,d,c,f,e,a,则栈S的容量至少应该为

A、3

B、4

C、5

D、6

标准答案:1

知识点解析:根据题中给定的条件,可以作如下的模拟操作:①元素a,b进栈,

栈中有2个元素,分别为a,b;②元素b出栈后,元素c,d进栈,栈中有3个元

素,分别为a,c,d:③元素d,c出栈后,元素e,f进栈,栈中有3个元素,分

别为a,e,f;④最后,元素f,e,a出栈,栈为空,可以看出,进栈的顺序为a,

b,c,d,e,f,出栈的顺序为b,d,c,f,e,a,满足题目要求。每次进栈操作

后,栈中最多有3个元素,所以,为了顺利完成这些操作,栈的容量应至少为3。

本题的正确答案为A。

10、在结构化方法中,软件功能分解属于下列软件开发中的阶段是

A、概要设计

B、需求分析

C、详细设计

D、编程调试

标准答案:1

知识点解析:概要设计的任务是划分出构成系统的各物理元素以及设计出软件的结

构(如确定模块及模块间的关系).设计过程通常分为以下几步:提出可选择方案:

选择合理方案;推荐最佳方案;功能分解;设计软件结构;制定测试计划:最后提

交概要设计文档。软件功能分解属于概要设计阶段。本题的正确答案为A。

二、选择题(本题共25题,每题1.0分,共25分。)

11、设有以下程序段:inta[5]={0},*p,*q;p=a;q=a;则下列选项中,合法的运算

A、p*q

B、p-q

C^p*q

D、p%q

标准答案:B

15、下面程序的输出结果是#include<iostream.h>classexample{inta;public:

example(intb){a=b++;}voidpnnt(){a=a+l;cout<<a<<"voidprint()

const{cout<<a<<"";)};voidmain(){examplex(3);constexampley(2);

x.print();y.print();}

A、22

B、43

C、42

D、32

标准答案:C

知识点解析:“++”是右结合的,所以先赋值为3,最后输出3+1;常成员函数只

有常对象才能调用,所以输出2。

16、若有以下程序:#includeusingnamespacestd:classA{public:A(inti,intj)

{a=i:b=j;}voidmove(intx,inty){a+=x;b+=y;)voidshow(){cout(

A、3,4

B、6,8

C、6,9

D、4,3

标准答案;C

知识点解析:此题的执行过程如下:首先Bd(3,4);语句调用B类的构造函数:

B(inti,intj),B的构造函数中调用基类A的构造函数,使得a=3,b=4;d.fun()会

调用函数move(3,5),使得(3,4)和(3,51的对应部分分别相加,最后输出6,

90

17、如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个

参数都必须使用()关键字来修饰。

A、const

B、static

C^void

D、class

标准答案:D

知识点解析:如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔

开,每个参数都必须使用class关键字来修饰。

18、C++语言规定,函数返回值的类型是由()。

A、return语句中的表达式类型所决定

B、调用该函数时的主调函数类型所决定

C、调用该函数时系统临时决定

D、在定义该函数时所指定的函数类型所决定

标准答案:8

知识点解析:函数返回值的类型是由在定义该函数时所指定的函数类型所决定。

19、下列有关构造函数的描述错误的是()。

A、构造函数在说明类变量时自动执行

B、构造函数可以重载

C、构造函数可以设置默认参数

D、构造函数可以对静态数据成员进行初始化

标准答案:8

知识点解析:选项A、选项B和选项C都是构造函数的特征,类中的静态数据成

员是类的所有对象共享的,所以它必须有单独的初始化,不能由类的构造函数进行

初始化。

20、决定C++语言中函数的返回值类型的是()。

A、return语句中的表达式类型

B、调用该函数时系统隆机产生的类型

C、调用该函数时的主调用函数类型

D、在定义该函数时所指定的数据类型

标准答案:8

知识点解析:C++中函数的返回值类型是由定义函数时所指定的函数类型决定的,

而不是其他内容决定的。

21、有如下程序:#includc<iostrcam>usingnamespacestd;classBase{public:void

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

{cout<<nDerived::fun"<<end1;));intmain()

{Derivedd;D.fun();returnO;}已知其执行后的输出结果为:Base::funDcrivcd::fun

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

A^Base,fun():

B、Base::fun();

C、Base->fun();

D、fnn()

标准答案:2

知识点解析:暂无解析

22、若有char*x[2]={”xyzw","XYZW");则下面的表述正确的是。

A、x数组元素酌值分别是“xyzw”和“XYZW”

B、x是指针变量,它指向含有两个数组元素的字符型一维数组

C、x数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D、x数组的两个元素中各自存放了字符X,和,X,的地址

标准答案:8

知识点解析:暂无解析

23、在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继

承的规则()。

A、完全相同

B、完全不同

C^部分相同,部分不同

D、以上都不对

标准答案:1

知识点解析:暂无解析

24、流程控制语句的基本控制结构有三种,不属于这一种结构的是()。

A、顺序结构

B、选择结构

C、循环结构

D、计算结构

标准答案:8

知识点解析:暂无解析

25、对虚函数的调用(),

A、一定使用动态联编

B、必须使用动态联编

C、一定使用静态联编

D、不一定使用动态联编

标准答案:8

知识点解析:暂无解析

26、关于continue语句叙述不正确的是

A、continue语句用于循环体中,结束循环

B、continue语句用于循环体中,它使执行流跳出循环体中尚未执行的语句,并进

行下一循环判断

C>continue可以用于if语句中

D、continue语句不能代替break语句

标准答案:1

知识点解析:continue是跳出了本次循环中尚未执行的语句,重新执行循环,但没

有终止循环。注意:注意break,continue和goto语句的用法和区别。

27、下面程序的结果是#includeViostream.h>classA{public:A(){cout<<

"construtA"<<endl;)virtual-A(){cout<<"destructA"<<endl;));classB:

publicA{};classC:publicA{};classD:publicB,publicC{};voidmain()

{Dd;)

A、constructAdestructA

constructAconstructAdestructAdestructA

C>constructAconstructAconstructAdestructAdestructAdestructA

D、constructAonstructAconstructAconstructAdestructAdestructAdestructA

destructA

标准答案:2

知识点解析:类D继承了类C和类B,所以在构造的时候分别构造类B和类C。

28、下列类的定义中,有()处语法错误。classBase{public:Base(){)Base(inti)

{data=i;)private:intdata;};classDerive:publicBase{public:Derive():Base(O){)

Derive(intx)(d=x;}voidsetvalue(inti){data=i;)private:intd;};

A、I

B、2

C>3

D、4

标准答案:2

知识点解析:本题考核派生类的定义和成员的访问权限。第①处错误:在派生类

的构造函数Derive(intx)中没有调用基类的构造函数对基类对象初始化。第②处错

误:数据da【a是基类Base的私有成员,派生类Derive不能访问,所以在函数

setvalue中对data的赋值是错误的。

29、下列类的定义中,有()处语法错误。classBase{public:Base(){}Base(inti)

{data=i;}private:intdata;};classDerive:publicBase{public:Derive():Base(O){)

Derive(intx){d=x;}voidselvalue(inti){data=i;}private:d;);

A、1

B、2

C、3

D、4

标准答案:2

知识点解析:本题考核派生类的定义和成员的访问权限。第1处错误:在派生类

的构造函数Derive(imx)中没有调用基类的构造函数对基类对象初始化。第2处错

误:数据data是基类Base的私有成员,派生类Derive不能访问,所以在函数

setvalue中对data的赋值是错误的。

30、」知:inla,b;下列switch语句中,()是正确的。

A、switdh(a){casea:a++;break;caseb:b++;break;)

B、switch(a+b){case1:a+b;break;case1:a-b|

C^switch(a*a)|case1♦2:++a;case3,4:++b:}

D、switch(a/10+b){cases5:a/5:break:default:a+b;}

标准答案:8

知识点解析:暂无解析

31、下列运算符中哪些是不能够被重载的?

A、

++,一,new,delete»==

C、sizeof,new,delete,++,—

D^sizeof,new,delete,+,-

标准答案:1

知识点解析:C++语言中的不能重载的操作符是:和?:。

32、一个函数为voidf(int,charch='a)另一个函数为voidf(int),则它们

()。

A、不能在同一程序中定义

B、可以在同一程序中定义并可重载

C、可以在同一程序中定义,但不可以重载

D、以上三种说法均不正确

标准答案:B

知识点解析:题目中的两个函数参数个数不同,因此可以在同一程序中定义为重载

函数。所以,选项B)叙述正确。

33、下列叙述中正确的是

A、全局变量的作用域一定比局部变量的作用域范围大

B、静态类别变量的生存期贯穿于整个程序的运行期间

C、函数的形参都属于全局变量

D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值

标准答案:B

知识点解析:本题考察的是变量的作用域及其生存期,需要掌握变量类别及其特

点。

34>有如下程序段inti=0,j=l;int&r=i;〃①尸j;

〃②inl*p二&i;〃③*p二&r;〃④其中会产生编译错误的语句是

A、④

B、③

C、@

D、①

标准答案:A

知识点解析:本题考查的知识点是:指针和引用。指针声明的一般形式为:V数

据类型>*V声明的指针变量名〉:引用声明的一般形式为:V数据类型》&V声

明的引用变量名>=<被引用的变量名,;引用声明时必须初始化,而指针则可有

可无。通过引用来改变其所引用的对象,直接赋值即可,而通过指针改变其所指对

象则须使用一元运算符“*在本题中,语句①就是一条合法的引用声明语句,使

变量i被r所引用。语句②通过引用r将变量j的值赋给变量i。语句③声明了指针

变量P,并初始化指向变量i。而语句④中的*p代表了变量i,欲将&r(变量1•的地

址值)赋给*p(变量i),这会引起VC6编译器产生一条类型不匹配的错误”无法将类

型int*转换为int”。故本题应该选择A。

35、下面是一个模板声明的开始部分:Template<typenameT>double...

由此可知

A、这可能是一个函数模板的声明

B、这可能是一个类模板的声明

C、这既可能是一个函数模板的声明,也可能是一个类模板的声明

D、这肯定是一个错误的模板声明

标准答案:A

知识点解析:类模板说明的一般形式是:template<类型形参表〉classV类名〉

(〃类说明体??1:函数模板的一般说明形式如下templateV模板形参表〉V返回值

类型〉〈函数名〉(模板函数形参表)〃函数定义体

三、公共基础填空题(本题共5题,每题7.0分,共5

分。)

36、数据库系统中实现各种数据管理功能的核心软件是o

标准答案:数据库管理系统

知识点解析:数据库管理系统是数据库的管理机构,它是一种系统软件,负责数

据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

37、在关系数据库中,石数据表示成二维表,每一个二维表称为。

标准答案:关系

知识点解析:暂无解析

38、已知一个函数的原型足:intfn((toubiex);若要以5.27为实参调用该函数,

应使用表达式。

标准答案:fn(5.27)

知识点解析:函数调用,注意形参的个数和类型的匹配问题。

39、[]是数据库设计的核心。

标准答案:数据模型

知识点解析:数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体

与实体之间的联系。因此,数据模型是数据库设计的核心。

40、顺序存储方法是把逻辑上相邻的结点存储在物理位置【】的存储单元中。

标准答案:相邻

知识点解析:常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列

勺储。其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置咀相邻的存储单

元中。

四、填空题(本题共10题,每题1.0分,共10分。)

41>有如下程序:#include<iostream>usingnamespacestd;classCon{charID;

public:Con():ID(,A,){cout<<1;)Con(charID):ID(ID){cout<<2;)Con(Con&

c):ID(c.getID()){cout<<3;}charget1D()const{returnID;}};voidshow(Conc){coul

<<c.getID();}intmain(){Concl;show(cl);Conc2(B);show(c2);return0;}执行

上面程序的输出是。

标准答案:13A23B

知识点解析:Concl定义cl对象,调用Con的无参数构造函数,输出1,ID值变

为A,执行show(cl)时会调用拷贝构造函数,将cl对象的值拷贝给show。函数的

形参,此时输出3,然后在show。中输出cl的ID值A,Conc2(,B,)定义c2对象,

调用Con(charlD)构造函数,输出2,c2的ID值为B,show(c2)执行时先调用拷贝

构造函数输出3,然后输出B。因此程序输出结果为“13A23B”。

42、多态性分为两类:编译时的多态性和。

标准答案:运行时的多杰性

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

多念性。

43、在下面的程序的横线处填上适当的语句,使该程序的输出为12。include<

iostream>usingnamespacestd;classBase{public:inta,b;Base(inti){a=i;});class

Derived:publicBase{inta;public:Derived(intx):Base(x),b(x+1){)voidshow()

{[];〃输出基煌数据成员a的值。cout<<b<<endl;));intmain(){Derived

d(l);D.show();return0;}

标准答案:cout<<Base::a

知识点解析:暂无解析

44、C++目标程序经【】后生成扩展名为exe的可执行程序文件。

标准答案:连接

知识点解析:在过程中首先编译为.obj文件,然后连接为可执行文件。

45、若有以下程序:#include<ioslream>usingnamespacestd;classBase{public:

voidwho(){cout<<"classBase"<<endl;});classDerivedI:publicBase{public:

voidwho(){cout<<"classDerivedl"<<end1;));classDerived?:publicBase

{public:voidwho(){cout<<,,classDerived2'1<<end1;}};intmain(){Base*p;

Derivedlobj1;Derived2obi2;p=&objI;p=&obj2;p->who();return0;}则该程序运

行后的输出结果是【】。

标准答案:classDerived2

知识点解析:本题考核对象指针的应用。主函数中定义了一个Base类对象指针

P,然后逐步被赋值为。bjl和。bj2,最后通过对象指针p调用函数who。,也即调

用Derived2中的函数who。,输出classDerived2<>

46、空字符串的长度是o

标准答案:0

知识点解析:暂无解析

47、排序是计算机程序没计中的一种重要操作,常见的排序方法有插入排序、

和选择排序等。

标准答案:交换排序

知识点解析:暂无解析

48、以F程序输出的结果是[】°#include<ioslream.h>voidmain(){inla=5,

b=4,c=3,d;d=(a>b>C);cout<<d;)

标准答案:0

知识点解析:本题的关键在于对变量c的赋值运算:

49、在C++语言中,访问一个对象的成员所用的运算符是[】,访问一个指针所

指向的对象的成员所用的运算符是【】。

标准答案:成员选择运算符(或成员访问运算符(或“・>”)

知识点解析:本题考查的是使用对象和对象指针访问成员所使用的符号的不同,考

生请注意它们的区别。

50、多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但

运算符只能作为类的【】函数重载。

标准答案:成员

知识点解析:运算符重我。

国家二级(C++)笔试模拟试卷第2套

一、公共基础选择题(本题共70题,每题7.0分,共

70分。)

1、在深度为5的满二叉树中,叶子节点的个数为

A、32

B、31

C、16

D、15

标准答案:B

知识点解析:所谓满二义树是指这样的一种二叉树:除最后一层外,每一层上的所

有节点都有两个叶子节点。这就是说,在满二叉树中,层上的节点数都达到最大

值,即在满二叉树的第k层上有个节点,且深度为m的满二叉树有2n1一1个

节点。

2、若某二义树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,

则其后序遍历的节点访问顺序是

A、bdgcefha

B、gdbecfha

C、bdgaechf

D、gdbehfca

标准答案:D

知识点解析:前序遍历的第一个节点a为树的根节点;中序遍历中a的左边的节点

为a的左子树,a右边的节点为a的右子树;再分别对a的左右子树进行上述两步处

理,直到每个节点都找到正确的位置。

3、一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递

归调用中的存储分配通常用

A、栈

B、堆

C、数组

D、链表

标准答案:A

知识点解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用

本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程

中。这样各调用点之间形成一种后进先出的关系,而栈结构正适合来存储这些调用

点。

4、软件工程的理论和技术性研究的内容主要包括软件开发技术和

A、消除软件危机

B、软件工程管理

C、程序设计自动化

D、实现软件可重用

标准答案:B

知识点解析:软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效

性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和

可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究

的内容主要包括:软件开发技术和软件工程管理。

5、开发软件时对提高开发人员工作效率至关重要的是

A、操作系统的资源管理功能

B、先进的软件开发工具和环境

C、程序人员的数量

D、计算机的并行处理能力

标准答案:B

知识点解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工

具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。

6、在软件测试设计中,软件测试的主要目的是

A、实验性运行软件

B、证明软件正确

C、找出软件中的全部错误

D、发现软件错误而执行程序

标准答案:D

知识点解析:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验

它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了

发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正

确功能。

7、数据处理的最小单位是

A、数据

B、数据元素

C、数据项

D、数据结构

标准答案:C

知识点露析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是

指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互

关系和数据运算。故正确答案为选项C)。

8、索引属于

A、模式

B、内模式

C、外模式

D、概念模式

标准答案:B

知识点解析:内模式(ImernalSchema)又称物理模式(PhysicalSchema),它给出了

数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及

hash等存取方式与存取路径。

9、下述关于数据库系统的叙述中正确的是

A、数据库系统减少了数据冗余

B、数据库系统避免了一切冗余

C、数据库系统中数据的一致性是指数据类型一致

D、数据库系统比文件系统能管理更多的数据

标准答案:A

知识点解析:数据库系统的数据具有高共享性和低冗余性,但不能完全避免数据冗

余;数据的一致性是指在系统中同一数据的不同出现应保持相同的值。

10、数据库系统的核心是

A、数据库

B、数据库管理系统

C、模拟模型

D、软件工程

标准答案:B

知识点解析:数据库管理系统(DataBaseManagementSystem,简称DBMS)是数据

库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、

控制及保护和数据服务等,数据库管理系统是数据库系统的核心。

二、选择题(本题共25题,每题1.0分,共25分。)

11、下面关于C++语言的描述错误的是

A、C++语言支持数据封装

B、C++语言中引入友元,没有破坏封装性

C、C++语言允许函数名和运算符重载

D、C++语言支持动态联编

标准答案:B

知识点解析:数据封装就是数据抽象;友元可以访问类中的所有成员,是面向对象

的一个重要特征,但是破坏了封装性;重载和动态联编都是面向对象的另一个特点

——多态性。

I2^设有定义inta=l;floatf=1.2;charc='a,;,则下列表示错误的是

A、++a;

B、f-;

C、c++;

D、8++;

标准答案:D

知识点解析:++、一一运算符不能用于常量表达式。

13、下列程序的运行结果为#include<iostream.h>voidmain(){inta=2;inib=a

+1;cout<<a/b<<endl;)

A、0.66667

B、0

C、0.7

D、0.66666666...

标准答案:B

知识点解析:表达式值的类型是由操作数的类型决定的,因为本题的两个数都是

int型的,所以得出的结果也为int型,即去掉小数点后的部分,只取商的整数部

分。

14、设inta=l,b=2;,则(a++)+b和a+++b这两个表达式的值分别为

A、3,3

B、3,4

C、4,3

D、4,4

标准答案:A

知识点解析:单目的什运算优先级高于双目的+运算,不过抖的结合性是自右向

左的,而十是自左向右的,所以上面的两个表达式都是先计算a+b的值之后,a

再自加lo

15、卜,面程序的运行结果为#include<iostreain.h>voidmain(){chara='3';

switch(a){case'3':cout<<"3";case'2':coul<<"2";break;default:cout<<

」”;}}

A、3

B、321

C、31

D、32

标准答案:D

知识点解析:本题主要考查的是switch语句的使用,在第一个case处,因为满足

条件所以输出字符3,但这个分支没有break语句终止,所以会继续执行下面的分

支语句,即输出字符2,这时出现break语句,结束整个语句,即输出32。

16、有如下数组声明:ininum[10];,下标值引用错误的是

A、num|10]

R、nnrn[5]

C、num[3]

D、num|0|

标准答案:A

知识点解析:数组定义中的数字指的是数组的大小,而下标是从。开始的,所以题

中数组的最后一个元素是num[9]。

17、存在定义inta[10],x,*pa;,若pa=&a[0],下列的哪个选项和其他3个选项不

是等价的?

A、x=*pa;

B、x=*(a+1);

C、x=*(pa+1);

D、x=*[1];

标准答案:A

知识点解析:本题考查的是数组和指向数组的指针之间的关系,选项A)中x是被

数组a的第一个元素赋值,其余的都是被数组a的第二个元素赋值。

18、下面程序的运行结果为#inciude<iostream.h>voidswap(int&a,intb){int

temp;temp=a++;a=b;b=temp;}voidmain()inta=2,b=3;swap(a,b);cout<

<a<<";'<<b<<endl;)

A、2,3

B、3,2

C、2,2

D、3,3

标准答案:D

知识点解析:本题考查的是引用调用,因为函数swap引用调用参数a,所以在

swap函数中a的变化会改变主函数中a的值,即a自加1,但b的值并未改变。

19、一个函数功能不太复杂但要求被频繁调用,应选用

A、内联函数

B、重载函数

C、递归函数

D、嵌套函数

标准答案:A

知识点解析:本题考查的是内联函数的使用,它的引入是为了解决程序中函数调用

的效率问题,在编译时,编译器将程序中出现的内联函数的调用表达式用内联函数

的函数体来替换。

20、下面关于C++语言变量的叙述错误的是

A、C++语言中变量分为auto、static>exten】和register4种存储类型

B、自动变量和外部变量的作用域为整个程序

C、内部静态变量的作用域是定义它的函数

D、外部静态变量的作用域是定义它的文件

标准答案:B

知识点解析:自动变量是函数体或分程序内定义的变量,它的作用域在所定义的函

数体内或分程序体内。

21、为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员

的访问权限定义为

A^public

B、protected

C、private

D、static

标准答案:A

知识点解析:本题考查点为类成员的访问权限,public关键字修饰的类成员可以被

类的对象通过成员操作符”.”直接访问,protected和private则不能,而static不能单

独修饰类的成员。

22、在C++语言程序中,对象之间的相互通信通过

A、继承实现

B、调用成员函数实现

C、封装实现

D、函数重载实现

标准答案:B

知识点解析:对象属于某个已知的类,是类的实例,对象之间通信实际上就是通过

函数传递信息,封装是巴数据和操作结合在一起,继承是对于类的方法的改变和补

充,重载是多态性之一。

23、类的析构函数是在什么时候调用的?

A、类创建时

B、创建对象时

C、删除对象时

D、不自动调用

标准答案:C

知识点解析:析构函数可以被函数调用,也可以系统调用:函数体内的对象在函数

结束时调用析构函数和使用delete释放对象所占有用的资源。

24、通常拷贝构造函数的参数是

A、某个对象名

B、某个对象的成员名

C、某个对象的引用名

D、某个对象的指针名

标准答案:C

知识点解析:复制初始叱构造函数的作用是用一个已知的对象来初始化一个被创建

的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。

25、下面程序的运行结果为#include<iostream.h>ClassAstaticintn;public:A()

{n=1;}A(intnum)(n=num;Jvoidprint(){cout<<n;J};intA::n=2;voidmain()

{Aa,b(3);a.print();b.print();cout<<endl;)

A、11

B、13

C、23

D、33

标准答案:D

知识点解析:本题考查的是静态数据成员的使用,n为类A的静态成员,即为类A

的所有对象共有的成员,所以,当对象b把n初始化为3时,对象a的成员n的值

也为3(这两个n实际上是同一个)。

26、下列不是描述类的成员函数的是

A、构造函数

B、析构函数

C、友元函数

D、复制构造函数

标准答案:C

知识点解析:友元函数是独立于当前类的外部函数,但它可以访问该类的所有对象

的成员;拷贝构造函数是使用已存在的对象初始化正在生成的对象时调用的成员函

数。

27、继承机制的作用是

A、信息隐藏

B、数据封装

C、定义新类

D、数据抽象

标准答案:C

知识点解析:数据封装就是数据抽象,即信息隐藏;而继承是实现程序复用的基

础。

28、C++语言类体系中,不能被派生类继承的有

A、转换函数

B、构造函数

C、虚函数

D、静态成员函数

标准答案:B

知识点解析:派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的

数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。

29、下面程序的运行结果是#include<iostream.h>classbase{protected:inta;

public:base(){cout<<"0";}};classbase1:virtualbase{public:baseI(){cout<

VT;});classbase2:virtualbase{public:base2(){cout<<"2,';}};classderived:

publicbase1,publicbase2{public:derived(){cout<<"3";}};voidmain()(derive

obj;cout<<endl;}

A、0123

B、3120

C、0312

D、3012

标准答案:A

知识点解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用

基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,

最后调用派生类自己的沟造函数。

30、对于类定义classA{public:virtualvoidfunc1(){)

voidfunc2(){}};classB:publicA{public:voidfunc1(){coui<

<"classBfunc1"<<endl;}virtualvoidfunc2(){cout<<

"classBfunc2"<<endl;});下面正确的叙述是

A、A::func2()和B::funcl()都是虚函数

A::func2()和B::funcl()都不是虚函数

C、B::funcl()是虚函数,而A::func2()不是虚函数

D^B:)不是虚函数,而A::func2()是虚函数

标准答案:C

知识点解析:基类中说明的虚函数,在派生类中自然就是虚函数,所以类B中

funcl()是虚函数;而类A中的func2没有被关键字virlual修饰,所以不是虚函数。

31、下面关于运算符重载的描述错误的是

A、运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算

符的语法结构

8、不是所有的运算符都可以进行重载

C、运算符函数的调用必须使用关键字operator

D、在C++语言中不可通过运算符重载创造出新的运算符

标准答案:C

知识点解析:例如“::”运算符就不能被重载;通过重载可以创造新的运算方式,但是

不能臆造新的运算符;定义的时候必须使用关键字operator,而调用时可直接使用运

算符。

32、与语句cout<<endl;不等价的是

A、cout<V'\n';

B、cout<V'\12';

C、cout<<,\xA,;

D、cout<V'\0';

标准答案:D

知识点解析:题干表示的是回车换行,选项A),选项B)和选项C)都表示回车换

行。而选项D)是字符串的结尾标志。

33、下面程序的运行结果是#include<iostream.h>intfun(inta[],intn){intresult=

1;for(inti=l;i<n;i++)result=result*a[i];returnresult;}voidmain(){inia[3]=

{3,4,5};cout

A、12

B、15

C、20

D、60

标准答案:C

知识点解析:for循环执行2次,所以第一次for循环为result=l*a[l]=4,第二

次for循环为result=4*a[2]=20。

34、F面程序的运行结果是#includc<ioslieain.li>voidinaiii(){inti=I;while(i<

=8)if(++i%3!=2)continue;elsecout<<i;)

A、25

B、36

C、258

D、369

标准答案:C

知识点解析:应该先做++运算,然后进行%运算,最后比较不等式,实际上最后

输出的结果就是被3除,余数为2的不大于8的数。

35、下列程序的运行结果为#inciude<iostream.h>template<classTT>classFF

{TTal,a2,a3;public:FF(TTbl,TTb2,TTb3){al=bl;a2=b2;a3=b3;}TTSum()

{returnal+a2+a3;}};voidmain(){FF<int>x(int(l.l),2,3),y(int(4.2),5,6);cout

<<x.Sum()<<**<<y.Sum()<<endl;)

A、6.115.2

B、615

C、615.2

D、6.115

标准答案:B

知识点解析:本题考查模板函数的应用,表达式int(l.l)和血(4.2)是将1.1和4.2

强制转换为整型。

三、公共基础填空题(本题共5题,每题1.0分,共5

分。)

36、冒泡排序算法在最好的情况下的元素交换次数为。

标准答案:0

知识点解析:根据冒泡排序算法思想可知,若待排序的初始序列为“正序”序列,则

只需进行一趟排序,在排序过程中进行n-1次关键字间的比较,且不移动和交换记

录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换

次数为0。

37、在最坏情况下,堆排序需要比较的次数为o

标准答案:O(nlog2n)

知识点解析:在最坏情况下,堆排序、需要比较的次数是O(nlog2n)。

38、若串s二"MathTypes”,则其子串的数目是。

标准答案:46

知识点解析:串s中共有9个字符,由于串中字符各不相同,则其子串中有0个字

符的1个(空串),1个字符的9个,2个字符的8个,3个字符的7个,4个字符的

6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个

字符的1个,共有1+2+3十4+5+6+7+8+9+1=46。

39、在软件生命周期的各个阶段都会发生一系列的文件,如手册、数据和程序等,

它们总称为。

标准答案:软件配置

知识点解析:在软件生命周期的各个阶段会产生一系列的文件,包括报告、数据和

程序,它们的总称为软件配置。软件配置具有时间和形态特征,它是软件以某种形

态在某一具体时间的存在。其形态可表现为两种形式,即可执行形式和不可执行形

式。

40、关系数据库的关系演算语言是以为基础的DML语言。

标准答案:谓词演算

知识点解析:关系数据库中的关系演算包括元组关系演算和域关系演算。二者都是

由原子公式组成的公式。而这些关系演算都是以数理逻辑中的谓词演算为基础的。

四、填空题(本题共〃题,每题1.0分,共〃分。)

41、函数定义的格式是_____函数名(形式参数表)函数体。

标准答案:返回类型

知识点解析:本题考察基本的函数定义格式。

42、语句序列longx;x=0L;可用一个语句表示为。

标准答案:longx=0L;

知识点解析:变量的声明和赋值可以分别进行也可以同时进行。分别进行时称为赋

值,同时进行是称为初始化。

43、在C++中的实型数据分为三种类型,即单精度float、双精度double和

标准答案:长双精度longdouble

知识点解析:长精度类型一般用于高精度的科学运算。

44、若a.b和C均是ini型变量,则表达式a=(b=4)+(c=2)执行后,a的值为

标准答案:6

知识点解析:本题考察运算优先级问题,从右向左,先括号后乘除,随后加减,这

是基本的运算规则。

45、多态性分两类:编译时的多态性和o

标准答案:运行时的多杰性

知识点解析:暂无解析

46、下列程序的输出结果是o#include<iostrcam.h>template<classT>T

max(Tx[],inin){inti;Tmaxv=x[01;fbr(i=l;i<n;i++)if(maxv<x[il)maxv=x[i];return

maxv;|voidniain(){inta口二{3,2,7,6,8,9};doubleb[]={1.2,3.4,2.5,7.3,6.8);cout<<

max(a,4)<<max(b,3)<<endl;}

标准答案:7,3.4

知识点解析:函数的功能是求出数组中指定范围的元素中的最大值。所以在a数组

中前四个数据中最大值为7,数组b中前3个元素中最大值为3.4。

47>下列程序的运行结果是_____o#include<iostream.h>classBase{public:

virtualvoidfunc(inti){cout<<"classBase:n<<i<<endl;)};classDerived:public

Base{public:voidfunc(doubled){cout<<nclassDerived:n<<d<<endl;});void

main(){Basea,*p=a;Derivedb;p=&b;(*p).func(3.3);}

标准答枭:classBase:3

知识点解析:题中基类和派生类中有同名函数,但是参数不同。派生关系中,只有

在函数类型、函数名和参数个数、参数类型完全相同时,才表现多态性。本题中参

数不同,编译器便认为是两个完全不同的函数。通过基类的指针指向派生类对象

时,该指针只能访问到派生类中具有多态性的成员函数,而与基类无关的函数是无

法通过基类指针来访问的。故调用的是base类的func函数,系统将3.3强制转化

为整型数3。如果将派生类中的func的形参改为inI型,则执行的就会是派生类的

func函数,此时表现为多态。

48、下列程序的输出结果是_____o#include<iostream.h>intCalcDigital(char*str)

{if(str==NULL)return0;intnum_of_digital=0;fbr(inti=0;str{i]!=0x0;i++)if(str|i|<

='9'&&str[i]>=,0,)niimof^digital-H-;return匚digital;}voidmain(){char

a[]="Beijing200801ympic";cout<<CalcDigital(a)<<cndl;}

标准答案:4

知识点解析:分析本题可知函数功能为计算一个字符串中包含的数字个数。字符串

中包含的数字有2008,故输出为4。

49、F列程序的输出结果是o#include<iostream>usingnamespacestd;

classbase{public:intn;base(intx){n=x;)virtualvoidset(intm){n=m;cout<<n<

V'';}};classdcrivcA:publicbase{public:dcrivcA(intx):basc(x){}voidsct(int

m){n+=m;coutVVnVV'';}};classderiveB:publicbase{public:deriveB(int

x):base(x){)voidset(intm){n+=m;cout<<n<<5?}};intmain(){deriveAd1(1);

dcrivcB.d2(3);basc*pbasc;pbase=&d1;phase->sct(l);pbase=&d2;phase->sct(2);

return0;}

标准答案:25

知识点解析:本题考核虚函数的定义和调用。在C++中,一个基类指针(或引用)可

以用来指向它的派生类对象,而且通过这样的指针(或引用)调用虚函数时,被调用

的是该指针(或引用)实际所指向的时象类的那个重定义版本。题中基类成员函数

set()被定义成虚函数,而且其派生类deriveA和deriveB都有函数set()的重定义版

本,所以通过指针phase的两次调用分别调用的是派生类deriveA和deriveB中定

义的版本,即输出25。

50、下列程序编译错误,是由于划线处缺少某个语句,该语句是。include

<iostrcam.h>classA{private:intnuml;public:A():numl(0){}A(inti):numl(i){)

classB{private:intnum2;public:B():num2(0){)B(inti):num2(i){)intmy_math(A

obj1,Bobj2););intB::my_math(Aobj1,Bobj2){retum(obj1.numl+obj2.num2);}void

main(void){Aobjl(4);Bobj,obj2(5);cout<<uobj1+obj2:"<<

obj.my_math(obj1,obj2);}

标准答案:friendclassB;

知识点解析:在B类中出现了对A类中私有成员numl的直接访问,这是不允许

的。所以必须要把类B设成类A的友员才可以通过编译。

51、在C++语言的结构化程序设计中,是程序的基本组成单元;在C++

语言的面向对象设计框架中,是程序的基本组成单元。

标准答案:函数;类

知识点解析:函数是程序功能实现的主要方式,是实现结构化设计(将程序分成若

干个函数实现)的基本组成;类是一种用户定义的类型,是实现数据封装和数据抽象

的工具,是面向对象设计中的基本组成。

国家二级(C++)笔试模拟试卷第3套

一、公共基础选择题(本题共45题,每题7.0分,共

45分。)

1、下列数据结构中,属于非线性结构的是

A、循环队列

B、循环队列

C、二叉树

D、带链栈

标准答案:C

知识点解析:根据数据结构中各数据元素之间前后关系的复杂程度,一•般将数据结

构分为两大类型:线性结构与非线性结构。线性结构表示数据元素之间为一对一的

关系,非线性结构表示数据元素之间为一对多或者多对一的关系。根据各种结构的

定义可知,二叉树是一种非线性结构。

2、下列数据结构中,能够按照“先进后出”原则存取数据的是

A、循环队列

B、栈

C、队列

D、二叉树

标准答案:B

知识点解析:栈是限定只在一端进行插入与删除的线性表。通常称插入、删除的这

一端为栈顶,另一端为或底。栈顶元素总是最后被插入的元素,也是最先被删除的

元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。栈是按照

“先进后出”或“后进先出”的原则组织数据的。

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

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

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

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

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

标准答案:D

知识点解析:循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的

进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾

指针的情况,也可能是队尾指针大于队头指针,故答案为D。

4、算法的空间复杂度是指

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

B、算法所处理的数据量

C、算法程序中的语句或命令条数

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

标准答案:A

知识点解析:算法在执行过程中所需要的临时工作单元数

5、软件设计中划分模块的一个准则是

A、低内聚低耦合

B、高内聚低耦合

C、高内聚低耦合

D、局内聚同耦合

标准答案:B

知识点解析:模块划分应考虑的因素包括模块之间的耦合和内聚。一般来说,要求

模块之间的耦合尽可能低,即模块尽可能独立;要求模块的内聚程度尽可能高,即

遵循高内聚、低耦合的原则。

6、下列选项中不属于结构化程序设计原则的是

A、可封装

B、自顶向下

C、模块化

D、逐步求精

标准答案:A

知识点解析:模块化、自顶向下和逐步求精都是结构化程序设计的原则;可封装是

面向对象程序设计原则。

7、数据库管理系统是

A、操作系统的一部分

B、在操作系统支持下的系统软件

C、一种编译系统

D、一种操作系统

标准答案:B

知识点解析:数据库管理系统是指位于用户与操作系统之间的数据管理软件。数据

库管理系统是为数据库建立、使用和维护而配置的软件。

8、在E-R图中,用来表示实体联系的图形是

A、椭圆形

B、矩形

C、矩形

D、三角形

标准答案:C

知识点解析:E-R图中用矩形表示实体(等同于表),用椭圆形表示实体的属性(等同

于表中的字段),用菱形表示实体关系(等同于外键)。

9、E-R图中用矩形表示实体(等同于表),用椭圆形表示实体的属性(等同于表中的

字段),用菱形表示实体关系(等同于外键)。

A、FA必须定义在FB之前

B、FB必须定义在FA之前

C、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

D、若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

标准答案:D

知识点解析:一个函数A要调用另外一个函数B,则B的函数原型声明一定要在

A之前,但定义在前或者后都没有关系。

10、有如下两个类的定义:classAA{);classBB{AAvl,*v2;BBv3:

int*v4:);其中有一个成员变量的定义是错误的,这个变量是

A、vl

B、v2

C、v3

D、v4

标准答案:c

知识点。析:在本类的数据成员定义中,不能定义本类的对象,否则就出现了递归

定义,这是不允许的。

11、有如下类定义:classXX(intxdata:public:xx(intn=0):xdata(n){}}class

YY:publicXX{intydata;public:YY(intm=0,intn=0):xx(m),ydata(n){}{;

YY类的对象包含的数据成员的个数是

A、1

B、2

C、3

D、4

标准答案:B

知识点解析:派生类继承基类,继承了基类的数据成员和成员函数,加上派生类自

己新定义的数据成员,所以该类应该有2个数据成员。

12、下列关于运算符函数的叙述中,错误的是

A、运算符函数的名称总是以。perator为前缀

B、运算符函数的参数可以是对象

C、运算符函数的参数可以是对象

D、在表达式中使用重载的运算符相当于调用运算符重载函数

标准答案:C

知识点解析:运算符函数可以重载为成员函数,也可以重载为非成员函数,如重载

为友元函数。

13、下列关于模板形参的描述中,错误的是

A、模板形参表必须在关键字template之后

B、模板形参表必须在关键字template之后

C、可以用class修饰模板形参

D^可以用typename修饰模板形参

标准答案:B

知识点解析:对函数模板,模板的一般格式为:templateVtyname类型参数〉函数

类型函数名(形参){函数体}对类模板,一般格式为:tcmplatcVcIass类型参数〉

class类名{...},类型参数是用一对<>括起来。

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

A、ios_bas

温馨提示

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

评论

0/150

提交评论