版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
眼家二级(C++)笔试模拟试卷第1套
一、公共基础选择题(本题共33题,每题7.0分,共
33分。)
1、实现算法所需要的存储单元的多少称为()。
A、空间复杂度
B、可实现性
C、时间复杂度
D、困难度
标准答案:B
知识点解析:算法的空间复杂度一般是指:执行这个算法所需要的存储空间,其中
包括算法程序所占的空间、输入的初始数据所占用的存储空间以及算法执行过程中
所需要的额外空间。
2、下列关于线性链表的描述中正确的是()
A、存储空间不一定连续,且各元素的存储顺序是任意的
B、存储空间不一定连续,旦前件元素一定存储在后件元素的前面
C、存储空间必须连续,且各前件元素一定存储在后件元素的前面
D、存储空间必须连续,且各元素的存储顺序是任意的
标准答案:A
知识点解析:暂无解析
3、以下关于栈的描述中错误的是()。
A、栈是先进后出的线性表
B、栈只能顺序存储
C、栈具有记忆作用
D、对栈的插入与删除操作中,不需要改变栈底指针
标准答案:B
知识点解析:暂无解析
4、下面数据结构中,属于非线性的是()
A、线性表
B、队列
C、树
D、栈
标准答案:C
知识点解析:暂无解析
5、下列数据结构中,能月二分法进行查找的是()。
A、顺序存储的有序线性表
B、线性链表
C、二又链表
D、有序线性链表
标准答案:A
知识点解析:暂无解析
6、树是结点的集合,它的根结点的数目是()。
A、有且只有I个
B、1个或多于1个
C、0个或1个
D、至少有2个
标准答案:C
知识点解析•:树具有明显的层次关系,即树是一种层次结构。在树结构中,根结点
在第一层上。当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点
的数目为0。
7、在软件开发中,需求分析阶段不可以使用的工具是()
A、数据字典
B、数据流图
C、判断树
D、程序流程图
标准答案:D
知识点解析:暂无解析
8、数据库管理员(DBA)是数据库系统的一个重要组成部分,有很多职责。以下选项
不属于DBA职责的是()
A、定义数据的存储结构和存取策略
B、定义数据库的结构
C、定期对数据库进行重组和重构
D、设计和编写应用系统的程序模块
标准答案:D
知识点解析:暂无解析
9、下面关于面向对象的程序设计方法中,正确的是()。
A、“多态性”是指对象的状态根据运行的要求进行变化
B、“封装性”是指将不同类型的数据结合在一起作为一个整体来处理
C、在面向对象的程序设计中,结构化程序设计方法仍有着重要作用
D、基类的私有成员在派生类的对象中不可访问,也不占内存空间
标准答案:C
知识点解析:面向对象中的多态性是指当多种事物继承自一种事物时,同一种操作
在它们之间表现出不同的行为;而封装性是指将数据和算法捆绑成一个整体,这个
整体就是对象,描述对象的数据被封装在其内部。C++是起源于C语言的一种面向
对象的程序设计语言,因此C++语言既保留了传统的结构化程序设计方法,又支
持面向对象程序设计方法;派生类不可访问基类中的私有成员,因此在派生类中直
接引用基类的私有变量成员是不允许的,但可以通过基类的公用成员函数来引用基
类的私有变量成员。
10、下列关于函数模板的定义中,合法的是()。
A、templateclass<1>1abs(lz){returnz<0?-z:z;}
B、template<typenameT>Tabs(Tz){returnz<0?-z:z;)
C^templateT<classT>abs(Tz){returnz<0?-z:z;|
D、templateTabs(Tz){returnz<0?z:z;}
标准答案:B
知识点解析•:声明一个函数模板格式是:template〈模板形参表声明〉〈函数声明
>其中〈模板形参表声明,是由一个或多个〈模板形参,组成(如果是多个需要用
逗号隔开)。其中,〈模板形参,可以换成class,函数的声明部分和一般函数的声
明部分类似,只有某些类型修饰符被虚拟类型参数替代。
11、下面函数的作用是以双倍行距输出文件:voidtest(ifstream&outf,ofstream&outC)
{charc;while(){;if(c==,\n,)outc.put(C);}}下划线处缺失的代码是
()。
A、outf.put(C)与outc.get(C)
B、outf.put(C)与outc.get(C)
C、outf.get(C)与outc.put?
D、outf.get(C)与outc.put?
标准答案:D
知识点解析:ifstream是文件输入流类,只能用于输入.它没有提供任何用于输出
的操作。ofstream是文件输出流类,只能用于输出,它没有提供任何用于输入的操
作。从文件中输入字符耍用文件输入流类引用outf.并调用其输入字符的成员函数
get()o根据题目中的要求,可以看出当输入文件中读到换行符时,程序将在输出文
件中两次输出换行符,即双倍行距。output(。为输出一个字符,因为
“if(c==,\n》outc.put(C);”此句,当c为间格字符(行距字符)时,再多输出一次
outc.put(C)o
12、下面关于运算符重我中正确的是()
A、运算符函数的返回类型不能声明为基本数据类型
B、C++的所有运算符都可以重载
C、在类型转换符函数的定义中不需要声明返回类型
D、通过运算符重载可以定义C++中没有的运算符
标准答案:C
知识点解析:运算符函数的返回类型可以声明为基本数据类型,故选项A)错误。
”.、.*、->*、::、?”这五个运算符不可以重载,故选项B)错误。在重载类型转换
符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。运
算符重我是针对C++中已有的运算符进行的,不可能通过重载创造出新的运算
符,故选项D)错误。
13、已知:intn=l;在下面定义引用的语句中,正确的是()。
A、intx=&n;
B、int&x=n;
C、int&x;
D、int&x=&n;
标准答案:B
知识点解析:引用实际上就是别名,它与被引用变量拥有同一个地址空间。选项
A)中&m表示m的地址,而x是一个整型变量,在C++中不能从地址值隐式转换
为整型值,故选项A)是错的。选项B)中其操作实际上就是为m赋于一个别名
x,因此选项B)是对的。选项C)中引用必须要用被引用的对象,即引用必须要初
始化:选项D)中x是一个整型引用,而其被引用的对象却是m的地址,存在着与
选项A)类似的错误,因此选项D)也是错的。
14、下面字符串中,不可以用作C++标识符的是()。
A、case
_test_c
C、Return
D、x_2008
标准答案:A
知识点解析:C++标识符是一个以字母或下划线开头的,由字母、数字、下划线组
成的字符串。标识符不能与任何一个关键字同名,因此case不能作为标识符。
15、执行下列程序语句后,输出结果为()。#inelude<iostream>usingnamespace
std;intm=5;intmain()(intm=3;m++;::m++;cout<<m<<endl;return0;)
A、3
B、4
C、5
D、6
标准答案:B
知识点解析:暂无解析
16、下面()不是构造函数的特征。
A、构造函数必须指定返回值类型说明
B、构造函数可以设置缺省参数
C、构造函数可以重载
D、构造函数的函数名与类名相同
标准答案:A
知识点解析:暂无解析
17、有如下类定义:classTest{intx_,y_;public:Test():a_(0),b_(0){)Test(inta,int
b=0):a_(a),b_(b){)};若执行语句Testx(2),y[3],*z[4];则Test类的构造函数被调用
的次数是()。
A2次
、
B3次
、
c4次
、
D5次
、
标准答案:C
知识点解析:定义对象x时执行一次构造函数(调用Test(inta,intb=0)),定义对象
数组y时,构造函数(注意,该构造函数必须是没有任何参数的)的执行次数与数组
中对象的个数相等,即需要执行3次,最后定义一个指向Tesl对象的指针数组,
它并不会创建对象,从而也就不会去执行构造函数,故构造函数一共执行了4次。
18、下面关于继承和派生的叙述中,正确的是()。
A、作为虚基类的类不能被实例化
B、派生类不能访问基类中的保护成员
C、虚函数必须在派生类中重新实现
D、派生类向基类的构造函数传递参数
标准答案:A
知识点解析:暂无解析
19、下面for语句的循环次数为()。for(inti=0,n=0;!n&&i<=5;i++);
A、0
B、5
C、6
D、无穷次
标准答案:c
知识点解析:for语句的语法格式如下:fort(〈表达式D;〈表达式2〉;〈表达
式3))〈语句块〉。其中〈表达式1〉是for循环的初始化部分:〈表达式2〉是
foi•循环的条件部分,用来判断循环能否继续进行的条件,”!n&&i<=5;”语句为判
断循环是否继续,其中的&&为逻辑运算符,只有当其两边的表达式都为真时它才
返回一个真值。所以循环次数为6。
20、下面有关this指针的叙述中,正确的是()。
A、类的成员函数都有this指针
B、任何与类相关的函数都有this指针
C、类的非静态成员函数才有this指针
D、类的友元函数都有ihis指针
标准答案:C
知识点解析:暂无解析
21、有如下程序:#inckide<iostream>usingnamespacestd;classBase{public:virtual
voidfuncl(){cout<<"Base1";)voidrune2(){cout<<"Base2";}};class
Derived:publicBase{public:voidfunc1(){cout<<"DerivedI";}voidfunc2(){cout<
<"Derived2";)};intmain(){Base*p=newDerived;P->funcl();P->func2();return
0:}运行此程序,屏幕上将显示输出_____O
A、Derived1Base2
B、Base1Base2
C、Derived1Derived2
D、Base1Derived2
标准答案:A
知识点解析:派生类Derived由基类Base公有继承而来。调用p->funcl();后,
执行派生类Derived的函数voidfunc1();调用p->rune2();后,执行基类的函数
voidfunc2(),因为虚拟函数是根据对象的实际类型调用,非虚拟函数是根据指针类
型调用。故通过指针p调用func2时将直接调用基类中的voidfunc2()。
22、下面关于友元的说法中错误的是()
A、若类A是类B的友元,那么类B也是类A的友元
B、友元关系不能被继承
C、若函数fun被说明为类A的友元,那么在fun中可以访问类A的私有成员
D、若类A是类B的友元,那么类A的所有成员函数都是类B的友元
标准答案:A
知识点解析:C++中有些对象或函数需要访问其他对象的内部成员,这样可以用
friend关键字将对应的类指定友元函数或友元类,但是这种关系不是相互的。如果
声明一个类A为类B的友元类,则类A中的所有成元函数都可以访问类B中的私
有成员。另外,友元关系不会被继承。
23>运行以下的程序代码,结果是()。#include<iostream>usingnamespacestd;
intmain(){intx=5;int*q=&x;int&y=x;y++;tout<<(*q)++<<end1;return0;j
A、5
B、6
C、7
D、8
标准答案:B
知识点解析:暂无解析
24、下面有关类模板的说法中不正确的是()。A)B)C)D)
A、类模板的成员函数都是模板函数
B、类模板本身在编译中不会生成任何代码
C、类模板只是虚拟类型的参数
D、用类模板定义一个对象时,不能省略实际参数
标准答案:C
知识点解析:暂无解析
25>有以下程序:#include<iostream>usingnamespacestd;classTestClass{public:
TestClass(intn){number=n;}〃拷贝构造函数
TestClass(TestClass&other){number=other.number;}〜TestClass。{}private:int
number;};TestClassfun(TestCIassP){TestClasstemp(p);returntemp;}intmain()
{TestClassobjl(10),obj2(0);TestClassobj3(objI);obj2=fun(obj3);return0:}程序执
行时,TestClass类的构造函数被调用的次数是()。
A、2
B、3
C、4
D、5
标准答案:C
知识点解析:objl(10)执行一次构造函数,obj2(0)也执行一次构造函数;
obj3(objl)t3t.objl作为参数执行一次构造函数;fun(obji3)中的temp(p)将执行一次
构造函数,而fun本身是以按值传递参数,形参在fun函数内也要分配独立的空
间,所以也要执行一次陶造函数,其返回结果也是TestClass类型的,同样需要执
行一次构造函数,所以一共要执行4次。
26、语句ofslreamoutf("TEST.DAT\ios_base::app);的功能是建立流对象outf,并试图
打开文件TEST.DAT与outf关联,而且()。
A、如果文件存在,打开失败:如果文件不存在,建立一个新文件
B、如果文件存在,将文件指针定位于文件首;如果文件不存在,打开失败
C、如果文件存在,将文件指针定位于文件尾:如果文件不存在,建立一个新文件
D、如果文件存在,将其置为空文件;如果文件不存在,打开失败
标准答案:C
知识点解析:暂无解析
27、下面的类定义中,如果要为其添加一个析构函数,对于析构函数定义正确的是
()oclassTlestClass{private:inta:public:TestClassfintgiva_a=0){a=give_a;))
A^~voidTestClass(){}
〜TestClassvoid(){}
C、void^TestClass(){)
D^~TestClass(){}
标准答案:D
知识点解析:暂无解析
28、下面关于虚函数的表述中正确的是()。
A、虚函数不能声明为另一个类的友元函数
B、派生类必须重新定义基类的虚函数
C、如果在重定义虚函数时使用了保留字virtual,那么该重定义函数仍是虚函数
D、虚函数不能够声明为静态函数
标准答案:D
知识点解析:暂无解析
29、将下面类TeslClass中的函数「un()的对象成员n值修改为100的语句应该是
()oclassTcstClass{public:TestClass(intx){n=x;}voidSetNum(intnl){n=nl;}
private:intn;}intfun(){TestClass*ptr=newTestClass(45);;)
A^TestClass(lOO)
B、ptr->SetNum(100)
C>SeiNum(lOO)
D、ptr->n=l()O
标准答案:B
知识点解析:暂无解析
30、运算符重我是对已有的运算符赋予多重的含义所以()。
A、能够对基本类型数据(如double),重新定义“+”运算符的含义
B、只能重载C++中己经有的运算符,不能重新定义新运算符
C、能够改变一个已有运算符的优先级和操作数个数
D、C++中现有的所有运算符都可以重载
标准答案:B
知识点解析:C++在重载运算符时,必须符合以下的条件:①不可以重载内置的
C++数据类型(如int,double等类型)运算符的含义;②不可以定义C++中没有的
运算符;⑨不可以改变重载运算符的优先级与操作数的个数;④有些运算符不能
被重载,例如域运算符(::),条件运算符(?:)等,具体哪些运算符不能被重载与编译
器有关。
31、TcstClass类定义如下:classTcstClass(private:intid;chargender;char*phone;
public:TestClass():id(0),gender,#'),phone(NULL){)TestQass(intno,charge=,#,,char
*ph=NULL){id=no;gender=ge;phone=ph;)};卜面夹对象定义语句中错误的是()。
A^TestClassmyObj(i);
B、TestClassmyObj(2,,,l1101111155");
C、TestClassmyObj(l,,m,);
D、TestClassmyObj;
标准答案:B
知识点解析:B)中由于有两个参数,所以其调用了第二个构造函数,第二个构造
函数的两个缺省参数,在调用时,实参会按从左到右的顺序传给形参,所以第二个
参数“11101111155”会传递给形参ge,而原型中的ge为字符型,实参为指向字符的
指针,所以在编译时会出现错误。A)与C)都能够壬确的实现参数的传递。对于
D),由于在创建TestClass的实例myObji时,没有参数,所以其调用了第一个构
造函数。
32、使用输入输出操作符selw,能够控制()。
A、填充字符
B、输出宽度
C、对齐方式
D、输出精度
标准答案:B
知识点解析:暂无解析
33、有如下类定义:classFun{public:Fun(intv):value(v){)//(J)〜Fun(){}〃②
private:Fun{},〃③intvalue=0;//(4));其中存在语法错误的行是()。
A①
、
B②
、
c③
、
D④
、
标准答案:D
知识点解析:暂无解析
二、公共基础填空题(本题共15题,每题7.0分,共
15分。)
34、一个项目具有一个项目主管,一个项目主管只可管理一个项目,则实体”页目
主管”与实体“项目”的联系属于的联系。
标准答案:一对一或1:1
知识点解析:实体之间的对应关系称为联系,它反映现实世界事物之间的相互关
联。两个实体间的联系可以归结为三种类型:一对一联系表现为某一实体与另一实
体一一对应相关联;一对•多联系表现为某一实体与相关多个实体相关联;多对多联
系表现为多个实体与相关多个实体相联系。所以实体“项目主管”与实体“项目”的联
系属于一对一的联系。
35、在最坏情况下,冒泡排序的时间复杂度为o
标准答案:n(n-l)/2
知识点解析:冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序。假设
线性表的长度为n,则在最坏的情况下,冒泡排序需要经过n/2遍的从前往后的扫
描和n/2遍的从后往前的扫描,需要的比较次数为n(n-l)/2o
36、在结构化分析使用的数据流图中,使用用解释其中的图形元素。
标准答案:数据字典
知识点解析:数据字典(DataDictionary,简称DD)的作用是对DFD中出现的被命
名的图形元素进行确切解释。通常数据字典包含的信息有名称、别名、何处使用/
如何使用、内容描述、补充信息等。
37、二义树的遍历分为三种,它们是前序遍历、遍历和后序遍历。
标准答案:中序
知识点解析:二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前
序遍历是指在访问根结点、遍历左予树与遍历右子树这三者中,首先访问根结点,
然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,
然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍
历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍
历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序
遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后
访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后
访问根结点,最后遍历左子树。
38、数据流的类型有和事务型。
标准答案:变换型
知识点解析:典型的数据流类型有两种:变换型和事务型。变换型:指信息沿输入
通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心。
经加工处理以后冉沿输出通路变换成外部形式离开软件系统。事务型:在很多软件
应用中,存在某种作业数据流,它可以引发个或多个处理,这些处理能够完成该作
业要求的功能,这种数据流就叫做事务。
39、执行下列语句后,变量n的值是ointn=0:for(inti=l;i<=3;i++)for(int
j=l;j<<=i;j++)n++;
标准答案:6
知识点解析:当i=l时,内循环中的i的值为1,n目加一次,n=l;当i=2时,内
循环中的j的值为i和2,n自加两次,n=3,当i=3时,内循环中的i的值为1、
2^3,n自加三次,n=6o
40、C++中通常和一个运算符连用,构成一个运算符函数名的C++关键字为
标准答案:operator
知识点解析:暂无解析
41、C++中每个类都有一个隐含的指针。
标准答案:this
知识点解析:暂无解析
42、C++中将两个字符串连接起来组成一个字符串的函数是______o
标准答案:strcat
知识点解析;暂无解析
43、如果把类FriendClass定义为类TeslClass的友元类,则应该在类TestClass的定
义中加入语句o
标准答案:friendclassFiendClass
知识点解析:把一个类声明为另外一个类的友元类,只要在另外一个类中添加如F
语句:friendclass类名:所以答案是"friendclassFriendClass^o
44、在下面程序的横线处填上适当的语句,使程序执行后的输出结果为ABCD。
#include<iostream>usingnamespacestd;classA{public:A(){cout<<,A,;}};class
B:{public:B(){cout<<,B,;}};ciassC:{public:C(){cout<<,C,;}};
classD:publicB,publicC(public:D()(cout<<,D,;}};voidmain(){Dobj;)
标准答案:virtualA或virtualpublicA或virtualprivateA或virtualprotectedA与
virtualA或virtualpublicA或virtualprivateA或virtualprotectedA
知识点解析:由于每执行一次A类的构造函数,都将输出一个字符A,输出结果
中只有一个A,且第一个输出为A,D继承B,可知必有B继承A。由题中要求C
肯定继承某个类,所以,这里的C只能是继承于A,保证输出中只有一个A,A必
须为虚基类,所以本题中的空都填virtualA。
45、设p是指向一个类动态对象的指针变量,则执行"deletep;”语句时,将自动调
用该类中的函数。
标准答案:析构
知识点解析:暂无解析
46、有如下程序:#include<iostream>usingnamespacestd;classA{public:virtual
voidf(){cout<<nr,;});classB:publicA(public:B(){cout<<"2";});classC:public
B{public:virtualvoidf(){B::f();cout<<"3H;)};intmain(){Aaa,*p;Bbb;Ccc;
p=&cc;p->f();return0;(执行上面程序的输出是。
标准答案:2213
知识点解析:Bbb将定义一个B型对象bb,这时需调用B的构造函数,在该构造
函数中,将输出"2:;Ccc将定义一个C型对象cc,这时需调用C的构造函数,面
该函数为缺省构造函数,其将调用父类B的构造函数,在该构造函数中,将输出
"2":由于p采用指针方式调用成员函数f,而f在基类中被声明为虚拟函数,故函
数f的执行与指针p所指向对象的实际类型相一致,p指向一个C型对象cc,故执
行p->f()时,将执行C的f函数,在该函数中,首先直接调用了父类B的函数f,
而在B中直接继承了A类的f函数,故先要执行A的f函数,输出“1”,然后再输
出“3”。
47、执行下列语句序列:imx=l,&y=x;coutVVxVV〈VVyVVendl;输出结果
为o
标准答案:1-1
知识点解析:暂无解析
48、以下函数模板min的功能是返回数组a中最小元素的值。请将横线处缺失部分
补充完整。template<typenameT>Tmin(Ta[],intn){Ttemp=a[0];for(inti=l,i<
n;i++)if(a|i]<temp);returntemp;)
标准答案:temp=a[i]或lemp=*(a+i)或temp=*(i+a)
知识点解析:暂无解析
国家二级(C++)笔试模拟试卷第2套
一、公共基础选择题(本题共10题,每题7.0分,共
10分。)
1、下列叙述中,正确的是()。
A、非空循环队列的队尾指针等于排头指针时,也可以进行入队运算
B、循环队列为空时可以进行退队运算
C、退队运算后队列长度减1
D、入队运算就是将新元素插入到队尾指针指向的位置
标准答案:4
知识点解析:非空循环队列的队尾指针等于排头指针时,说明循环队列已满,不能
进行入队运算,选项A是错误的。循环队列为空时不可以进行退队运算,否则产
生“下溢”,选项B是错误的。入队运算首先将队尾指针进1,然后将新元素插入到
队尾指针指向的位置。
2、下列叙述不属于线性链表较之线性表顺序存储结构的优点的是()。
A、线性链表存储方式简单
B、线性链表运算效率高
C、线性链表的存储空间易于扩展
D、线性链表便于存储空间的动态分配
标准答案:1
知识点解析:线性链表存储方式要求每个数据节点由两个部分组成,比线性表的顺
序存储结构复杂,选项A是错误的。在平均情况下,线性表的顺序存储结构插入
和删除元素需要移动线性表中约一半的元素,效率低下。而线性链表只需改变有关
节点的指针,效率较高,选项B是正确的。线性表的顺序存储存储空间必须是连
续的,不利于存储空间于展;而线性链表不需要连续的存储空间,存储空间易于扩
展,选项C是正确的。为保证线性表的存储空间连续且顺序分配,会导致在对某
个线性表进行动态分配存储空间时,必须.要移动其他线性表中的数据元素,不便
于存储空间的动态分配,选项D是正确的。
A-----示)对此二叉树中序遍历的结果是()。
A、ABDGCEHIF
B、DGBAHEICF
C、GDBHIEFCA
D、ABCDEFGHI
标准答案:2
知识点。析:选项A、D中,根节点排在最前,因比可以断定不是中序遍历。选项
C中,根节点排在最后,因此也可以断定不是中序遍历。其中选项A、C分别为前
序遍历和后序遍历的结果。
4、若要求尽可能快地对实数数组进行稳定的排序,则应选()。
A、快速排序
B、堆排序
C、归并排序
D、基数排序
标准答案:4
知识点解析:这里要用到的知识几乎都是要记忆的。此类题目可以采用排除法,首
先,稳定的排序这里有两个选项C和D,其饮,选项D不适用于实数的排序,因
此只可用C。
5、在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。
A、希尔排序
B、冒泡排序
C、插入排序
D、选择排序
标准答案:8
知识点解析:希尔排序和冒泡排序都属于插入排序,它们通过数据元素的交换来逐
步消除线性表中的逆序,所以关键字比较的次数与记录的初始排列次序有关。而选
择排序是指扫描整个线性表,从中选出最小的元素,将它交换到表的前面。然后对
剩下的字表采用同样的办法,所以关键字比较的次数与记录的初始排列次序无关。
6、函数重载是指()。
A、两个或两个以上的函数取相同的函数名,但形参的个数或类型不同。
B、两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不
同。
C、两个以上的函数名字不同,但形参的个数或类型相同。
D、两个以上的函数取相同的函数名,并且函数的返回类型相同。
标准答案:1
知识点解析:函数重载指的是两个或两个以上的函数具有相同的函数名,但是形参
的个数或类型不同。程序中通过判断主调函数传过来的参数的个数和类型来决定选
择调用哪个具体的函数。
7、下面关于对象的描述中正确的是()。
A、任何对象都必须具有继承性
B、任何对象都必须具有多态性
C、操作是对象的静态属性
D、对象间的通信靠消息传递
标准答案:8
知识点解析:继承性和多态性是对象支持的特性,并不是必须具备的条件。操作是
对象的动态性属性。D选项的描述是正确的。
8、在关系代数中,对一个关系投影操作以后,新关系的元组个数跟原来关系的元
组个数相比()。
A、小于
B、小于或等于
C、等于
D、大于
标准答案:4
知识点解析:本题考核对投影运算的掌握。投影操作是从表中选出某些列而丢弃另
一些列。如果只对一个关系中的某些属性感兴趣,那么就需要在这些属性上使用投
影操作投影该关系,而元组个数是指一个表中的行的数目.因此.对一个关系投影
操作以后,新关系的元组个数跟原来关系的元组个数相等。
9、关系数据库的概念模型是()的集合。
A、关系模型
B、关系模式
C、关系子模式
D、存储模式
标准答案:2
知识点漏析:本题考核关系数据库的概念模型。数据库的概念模型体现了数据之间
的关系,它是各种数据之间相互关系的集合。关系数据库的概念模型是关系模式的
集合。关系子模式是指关系数据库模式中用户所见到的那部分数据模式描述。
10、如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中
属性个数少于原来关系中属性个数,这说明所实施的运算关系是()。
A、选择
B、投影
C、连接
D、并
标准答案:2
知识点解析:本题考核对几种关系代数运算的掌握。其中选择和投影的区别在于:
如果将一个关系看作一张表,那么选择操作就是从这张表中选出一些行而丢弃另一
些行。而投影操作则是从这张表中选出某些列而丢弃另一些列。如果只对一个关系
中的某些属性感兴趣,那么就需要在这些属性上使用投影操作投影该关系。并操作
的结果表示为Rus,它是一个关系,包括或者在R中、或者在S中、或者同时在R
和S中的所有元组,新的关系中属性个数多于原来关系中属性个数。连接操作用
于将两个关系中的相关元组组合成单个元组。
二、选择题(本题共20题,每题1.0分,共20分。)
11、要把高级语言编写的源程序转换为目标程序,需要使用()。
A、编辑程序
R、驱动程序
C、调试程序
D、编译程序
标准答案:8
知识点解析:C++是以编译方式实现的高级语言。C++程序的实现必须要使用某种
C++语言的编译器进行编译。编译器的功能是将程序的源代码(.cpp)转换为机器代
码的形式,称为目标代码(.obj):然后,再使用目标代码进行链接,生成可执行文
件(.exe),等待下一步的执行过程。
12、以下选项中,合法的字符常量是()。
A、N
B、’\010'
C、68
D、D
标准答案:2
知识点解析:本题考核字符型常量的表示。选项A中是字符串的表示方法。选项
B所表示的是一个转义字符,是特殊的字符常量。选项C中所表示的是整型常量。
选项D中不是常量的表示。
13、定义如下枚举类型:enuin{Monday,Tuesday,Wednesday,Thursday,
Friday=2};则下列语句正确的是()。
A、表达式Wednesday==Friday的值是true
B、Dayday;day=3;
C^Dayday;day=Monday+3;
D、Dayday;day=Tuesday+10;
标准答案:
知识之解析:1本题考查枚举类型的定义和使用。枚举类型定义了一些整型符号常量
的集合,使用枚举类型时应该注意以卜.几点;①枚举类型的第一个常量默认值是
Oo②枚举类型常量的值允许彼此相同。③虽然枚举类型常量是整数类型,但是
不允许使用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以与整
数进行比较。根据以上知识,我仃何以得出选项B、C、D都不正确。
14、下列for循环执行的次数为()。for(inti=0,j=10;i=j=10;i++,j-)
A、0
B、11
C、10
D、无数次
标准答案:8
知识点解析:本题考核for循环。for语句的循环条件部分为"i=j=10",这是一个赋
值表达式,永远为真,即for循环是死循环,将执行无数次。
15、下列关于gol。语句的描述中,正确的是()。
A、got。语句可在一个文件中随意转向
B、goto语句后面要跟一个它所转向的语句
C、goto语句可以同时转向多条语句
D、got。语句可以从一个循环体内转到循环体外
标准答案:8
知识点解析:gol。语句也可以跳出循环和swilch语句,got。语句无条件地转移程
序的执行控制。它总是与一标号相匹配,其形式为:got。标号;,标号是用户自定
义的标识符,它可以处于got。语句的前面,也可以处于其后,但标号必须与got。
语句处于同一个函数中。定义标号时,由一个标识符后面跟一个冒号组成。
16、若有定义:int*p;则下列各选项中,不同于表达式“*p=*p+l;"的是()。
A、*p++;
B、++*p;
C^*p+=l;
D、++(*p);
标准答案:1
知识点解析:题目中的语句“*p=*p+l;”是将指针变量p所指向的存储单元的佳加
1,然后再放入p所指向的存储单元中。选项A中,语句“*p++;”,当把该表达式
赋给一整型变量k时,就会发现,原语句可变为“k=*p;p=p+l;即语句“*p++”
最后所执行的是p的值(即p中存放的地址)力口1,与题中语句“*p=*p+l;”的意思不
同。再来看选项B,C,D,选项B中的语句可表示为“*p=*p+l;选项C中的
语句可表示为“*p=*p+l;选项D中的语句也可表示为“*p=*p+l;
17、下列数组的定义中,会产生错误的是()。
A、inta[]={'0',T,'2',3,'4','5','6'};
B、inta[10]={0,1,2,3,4,5,6);
C、chara[5]="hello";
D、chara[5]={'h','e',T,T,'o'};
标准答案:4
知识点解析:本题考核数组的定义以及字符串数组方面的基础知识。下面逐项进行
分析:选项A中,数组a的定义和初始化符合数组的定义和初始化语法,故正
确:选项B中,数组a初始化的值虽然没有10个,但对于少的部分,系统会自动
补0,所以选项B中数组的定义也是正确;选项C中,数组a的长度为5,但字符
串“hello",的长度为5+1=6,字符串结束符,10,无法存储在数组中,所以是错误
的;选项D中,数组a的定义是正确的。
18、在C++语言中,函数形参的默认存储类型是()。
A、auto
register
CNstatic
D、extern
标准答案:1
知识点解析:在函数内部或复合语句内定义变星时,如果没有指定的存储类型或使
用了auio说明符,系统就认为所定义的变量具有自动类别。
19、下面类的定义,有()处错误。classMyClass{public:voidMyClass();~
MyClass(intValue);private:inti=0;};
A、1
B、2
C、3
D、4
标准答案:4
知识点解析:该类的定义共有3处错误。①类的成员变量不能在定义时进行初始
化:②类的构造函数不能有返回值(包括void类型):③类的析构函数不能有参
数。
20、下列关于多继承.二义性的描述中,错误的是()。
A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访司可
能出现二义性。
B、解决二义性的最常用的方法是对成员名的限定法
C、基类和派生类中同时出现的同名函数,也存在二义性问题
D、一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对
该基类成员进行访问时,可能出现二义性
标准答案:4
知识点解析:本题考核多继承中出现的二义性问题。在多重继承的情况下,派生类
具有两个以上的直接基类,而这些直接基类的一部分或全部又是从另一个共同基类
派生而来时,这些直接基类中从上一级继承来的成员就拥有相同的名称。在派生类
的对象中,这些同名成员在内存中同时有多个复制件,所以派生对这些同名成员的
访问存在二义性。所以选项A和D的说法是正确的。解决二义性的方法有两种:
一是使用作用域分辨符来惟一标识并分别访问它们:二是可以将共同基类设置为虚
基类。而第一种方法最常用。所以选项B的说法是正确的。基类和派生类中同时
出现同名函数,符合支配规则,不存在二义性问题。所以选项C的说法不正确。
21、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每个学生
的平均分数并输出,程序如下:#include<iostream>usingnamespacestd:int
main(){intn,k;floatscore,sum,ave;sum=0.0;tor(n=1;n<=10;n++)
{for(k=I;k<=4;k++){cin>>score;sum+=score;)ave=sum/4.0;cout<<
"NO.n<<n<<"ave:,*<<ave<<endl;)return0;}上述程序运行后结果不
正确,调式中发现有一条语句出现在程序中的位置不正确。这条语句是非曲直
()。
sum=0.0;
BNsum+=score;
C、ave=sum/4.0
D、cout<<"NO."<<n<<"ave:"<<ave<<end1;
标准答案:1
知识点解析:本题中sum用来保存每位学生的总成绩,所以在计算不同学生的总
成绩时,应将sum重新赋值初值0,即语句“sum=0.0;”应该包含在第1个for循环
体内,并在第2个for语句前执行。
22、有以下程序:#include<iostream>usingnamespacestd;char*x[]={"First",
"Second","Third");voidf(char*z[]){cout<<*z++<<end1;}intmain(){char
**y;y=x;f(y);return0;)
A、产生语法错误
B、First
C>Secpnd
D、Third
标准答案:2
知识点解析:程序首先定义全局指针数组x,并赋初值。在函数f()中,语句“cout
<<*z++<<endl;”是输出*z指向的字符串,然后指向下一个指针。由于在主函
数中,指针y已初始化指向指针数组x,所以执行f(y)后,程序输出指针数组x中
的第一个字符串“First”。
23、以卜.程序的输出结果是()0#include<iostream>usingnamespacestd;intf(int
b[],intm,intn){inti,s=O;for(i=m;i<n;i+=2)s+=b[i];returns;}intmain(){intx
a[]={1,2,3,4,5,67,8,9);x=f(a,3,7);cout<<x<<endl;return0;}
A、10
B、18
C、8
D、15
标准答案:
知识之解析:1本题考查对数组以及数组作为函数参数的掌握程度。本题通过参数传
递将数组a传给f()函数中的数组b,并由s传递返回值给主函数中的x。主函数
中,x=f(a,3,7),即把数组a传给f()函数中的数组b,把3传给m,把7传给n。所
以函数f()中的for循环中,是从3开始循环,经过两次循环后,实现a[3]和a[5]值
的累加,并存入s中,然后返回给主函数中的X。所以x的值为10。故本题答案
是Ao
24、有以下程序:#include<iostrcam>usingnamespacestd;classMyClass{intm;
public:staticintn;MyClass(){m=0;)voidsetvaluc(){m++;n++;}voidoutput()
{coutVV"m="VVmVV》,n=*'<<n<<endl;}};intMyClass::n=0;intmain()
{MyClassobjl,obj2;objl.setvalueO;objl.output();obj2.setvalue();obj2.output();return
0;}
A、m=1,n=1V换行>m=1,n=l
B、m=1,n=1<换行>m=l,n=2
C、m=l,n=lV换行>m=2,n=l
D、m=l,n=lV换行,m=2,n=2
标推答案:2
知识点解析:本题考核静态数据成员的应用。类中的数据成员n为静态变量,这种
类型变量采用静态存储分配。当函数执行完后,返回调用点,该变量并不撤销,其
值将继续保留。内部静态变量有隐含初始值0,并且只在编译时初始化一次。而类
中的数据成员m为auto变量,每次程序退出其作用域时将自动消失。所以其值不
能保留下来。
25、有以下程序:#include<iostream>usingnamespacestd;classPoint5{public:
voidSetPoint(intx,inty);voidMove(intxOff,intyOff);intGetX(){returnX;}int
GetY(){returnY;)private:intX,Y;};voidPoint::SetPoint(intx,inty){X=x;Y=y;}
voidPoint::Move(intxOff,iniyOff)X+=xOff;Y+=yOff;}inimain()(Pointpl;
pl.SetPoint(l,2);pl.Move(5,6);cout<<uPointlis(w<<pLGetX()<<;<<
pl.GetY()<<H)"<<endl;return0;)执行后的输出结果是()。
A、Point1is(6,8)
B、Point!is(1,2)
C、Point1is(5,6)
D、Point1is(4,4)
标准答案:1
知识点解析:本题考核对象的定义与使用。程序中定义了一个类Point,在主函数
中定义了一个Point类的对象pl,然后通过对象pl调用其成员函数SctPoint()?0
Move。实现移位的操作。
26、为使下列程序的正确输出结果为:Nowis2004-7-612:12:12那么应该在程序
划线处填入的语句是(卜#includc<iostrcam>usingnamespacestd;classTIME;
classDATE{public:DATE(inty=2004,intm=Lintd=l){ycar=y;month=m;day=d;}
voidDateTimc(TIME&t);private:intyeanmonth,day;};classTIME{public:
TIME(inth=0,intm=0,ints=0){hour=h;minute=m;second=s;};〃将
类DATE中成员函数DateTime声明为类TIME的友元函数private:inthour,minute,
second;);voidDATE::DateTime(TIME&t){cout<<"Nowis"<<year<<,-,<<
month<<,-><<day<<'5<<t.hour<<u:n<<l,minute<<\,<<t.seoond<
<,.,<<endl;)intmain(){DATEd(2004,7,6);TIMEt(12,12,12);d.DateTime(t);
return0;)
A、friendvoidDateTime(TIME&t);
friendvoidDATE::DateTime(TIME&0;
C、voidDatelime(llME&t);
D、friendvoidDateTime(TIME&t);
标准答案:2
知识点解析:根据要求可知,在横线处是将类DATE中成员函数DateTime声明为
类TIME的友元函数。由于函数DaleTime是类DATE的成员函数,因此对
DateTime函数的使用要加上,DATE::”修饰。其他各声明的组成部分可参照函数
DateTime在类体外的定义实现。
27、设有如下程序:#include<iostream>usingnamespacesid;classA{public:int
i;display(){cout<<"classA\nu;));classB{public:inti;display(){cout<<"class
B\n";));classC:publicA,publicB{intj;public:inti;show(){j=i*i;
displayO;));intmain(){Cdemo;demo.show();returnO;}则主程序运行时将(),
A、因为变量i的重复定义而报错
B、因为对象demo间接调用display。函数时产生二义性而报错
C、因为类定义的语法错误而不能运行
D、没有语法错误,能够正常输出结果
标准答案:2
知识点解析:本题主要考察C++中多继承的工作方式和二义性的解决办法。在
C++中,允许一个派生类从多个基类派生,这种继承方式称为多继承。多继承的定
义格式如下:classV派生类名〉:V继承方式><基类名1>,〈继承方式2>V
基类名2》,…{〈派生类类体>};但是,如果一个派生类的两个或多个基类中
有某个同名成员,在派生类中对这个成员的访问就可能出现二义性;同时,如果一
个派生类是由两个或多个基类派生出来的,而这几个基类又有一个共同的基类,对
该基类进行访问时,也可能会出现二义性。本题程序中,类C是由类A和类B多
继承得到的派生类,但其自身函数show。中调用了display。函数,而这个函数是同
时出现在类C的两个基类中的,因此程序会出现二义性,编译器将无法确定调用
哪一个display。函数来执行操作,因此报错。解决二义性的通常办法是通过作用
域运算符"进行限定。
28、有如下程序:#includc<iostrcam>usingnamespacestd;classbase{public:
virtualvoidfl(){cout<<"FlBase11;)virtualvoidf2(){cout<<"F2Base";));class
derive:publicbase{voidfl(){cout<<"F1Derive";)voidf2(intx){cout<<"F2
Derive'1;});intmain(){baseobjl,*p;deriveobj2;p=&obj2;p->fl();p->f2();
return0;)执行后的输出结果是()。
A、FlDeriveF2Base
B>FlDeriveF2Derive
C、FlBaseF2Base
D^FlBaseF2Dcrive
标准答案:I
知识点解析:本题主要考察C++中虚函数机制及其继承过程中的要点。虚函数在
基类中加关键词virtual声明,在派生类中重新定义。如果派生类没有覆盖虚函
数,则程序执行中将会执行基类的虚函数版本。本题程序中,建立了基类base,
其内函数voidfl()和voidf2()均被声明为虚函数,并在调用时会显式地发出声明。
派生类derive利用public方式继承基类base,并覆盖其基类base中的虚函数fl()。
对于base中的虚函数f2(),由于派生类derive中的同名函数f2()中带有参数in(x,
因此被编译器认为是函数重载,而不作虚函数覆盖处理,所以实际上派生类derive
中包含两个&()函数,一个不带参数,调用时执行基类base中的f2()函数版本,
个带参数intx,调用时执行重载后的版本。本题主函数中,定义了基类对象。
objl和基类指针*p,同时定义了派生类对象。obj20p指向obj2时,“p->n()”函数
调用执行派生类覆盖后的版本,输出FlDerive;行(1由于不带参数,因此执
行未经派生类覆盖的函数版本,即基类base中的fl()函数版本。
29>有如下程序:#include<iostream.h>classx{protected:inta;public:x()
{a=l;});classxl:virtualpublicx{public:xl(){a+=l;cout<<a;});classx2:
virtualpublicx{public:x2(){a+=2;cout<<a;));classy:publicxl,publicx2
{public:y(){cout<<a<<endl;}};intmain(){yobj;returnO;}该程序运行后的
输出结果是()。
A、1
B、123
C、242
D、244
标准答案:8
知识点解析:本题程序中引入了虚基类。在主函数main中,执行语句“yobj;"
时,先执行虚基类x的构造函数,使a=l;然后执行类xl的构造函数,使a=2,并
输出值2;再执行类x2的构造函数,使a=4,并输出值4;最后执行类y的构造函
数,输出值4。
30、下列关于getline。函数的描述中,不正确的是()。
A、getlineO函数是用来从键盘上读取字符串的
B、getlineO函数读取字符串长度是受限制的
C、getline。函数读取字符串时,遇到终止符时就停止
D、getline。函数中所使用的终止符只能是换行符
标准答案:8
知识点解析:本题主要考察C++中输入流成员函数的使用。输入流的成员函数主
要包括open。、get。、getline()>read()^seekg。、teHg()和close。等函数。其中,
getline。函数从输入流中读取多个字符,并且允许指定输入终止符,其原形为:
getline(char*line,intsize,char=、rf)。其中:函数的第1个参数是字符数组,用于
放置读取的文本:第2个参数是本次读取的最大字符个数,通过改变该参数可以设
置读入的最大字节数即字符串长度:第3个参数是分隔字符,作为读取一行结束的
标志,默认为换行符通过改变该参数,可以自定义输入形式和结束标志。因
此可以判断,题目选项D的叙述是错误的,可以通过改变参数修改getline。函数中
所使用的终止符。
三、公共基础填空题(本题共4题,每题7.0分,共4
分。)
31、对于长度为n的线性表,若进行顺序查找,则时间复杂度为【】。
标准答案:0(n)
知识点解析:语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频
度之和构成了该算法的运行时间。长度为n的线性表顺序查找的平均次数为n/2,
则它的时间复杂度是O(n)。
32、已知某序列为{49,38,65,97,76,13,27),试采用该序列的第一个元素为
枢轴进行快速排序,则经过一趟快速排序之后所得到的序列为:【】。
标准答案:27133849659776
知识点解析:快速排序的思想是:从线性表中选取一元素,如本题中的49,将线
性表后面小于49的元素移到前边,而前面大于49的元素移到后边。本题中49是
第1个元素,因此只需将线性表后面小于49的元素移到前边。
33、在选择运算所得到的结果关系中,所含的元组数不合【】原关系中的元组
数。
标编答案:大于
知识点解析:选择操作用于从关系中选出满足选择条件的元组的子集。因此,实施
选择运算后新关系的元组数不大于原关系中的元组数。
34当输入10,11,12时,下面程序运行结果是【】。#include<iostream>
usingnamespacestd;intmain(){inta,b,c,max;cin>>a>>b>>c;max=a;if(max<
B)max=b;if(max<C)max=c;cout<<max<<endI;return0;}
标准答案:12
知识点解析:此题考核if语句的基本使用。程序的功能是输入3个整数,利用if
语句,找出其中最大的一个整数并输出。
四、填空题(本题共9题,每题L0分,共9分。)
35、求
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 换流站运行值班员岗前班组考核考核试卷含答案
- 粗纱工岗位应急测评考核试卷含答案
- 地毯设计师基础常识考核试卷含答案
- 熟料烧结工岗中个人防护考核试卷含答案
- 版画制作工岗前客户服务考核试卷含答案
- 废塑料加工处理工岗前岗中水平考核试卷含答案
- 2026年西师版小学一年级数学上册《几何图形》教案
- 2026年小学成语故事《风华正茂》少年志向教学设计教案
- 2026年小学成语故事《趁火打劫》善恶思辨语文课堂教案
- 执业药师(中药)综合知识与技能模拟试卷(含解析)
- 2026秋新教材统编版四年级上册语文第六单元教案(17-19课)
- SYT 0612-2025《高含硫化氢气田地面集输系统设计规范》
- 护理健康教育与患者沟通
- 2026年云南省贵金属新材料控股集团股份有限公司校园招聘(82人)笔试备考题库及答案解析
- 年产3万套汽车智能驾驶感知系统(摄像头+雷达)生产项目可行性研究报告
- 2026生物材料与细胞相互作用机制研究进展
- 新型电力系统背景下配电网电力电子装备典型应用场景研究
- QC/T 1050-2025汽车双质量飞轮总成
- 中学教育学介绍
- 间质性膀胱炎诊疗规范
- 居民健康档案死亡档案管理制度
评论
0/150
提交评论