二级C++196.docx

上传人:b****5 文档编号:7638510 上传时间:2023-01-25 格式:DOCX 页数:20 大小:26.43KB
下载 相关 举报
二级C++196.docx_第1页
第1页 / 共20页
二级C++196.docx_第2页
第2页 / 共20页
二级C++196.docx_第3页
第3页 / 共20页
二级C++196.docx_第4页
第4页 / 共20页
二级C++196.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

二级C++196.docx

《二级C++196.docx》由会员分享,可在线阅读,更多相关《二级C++196.docx(20页珍藏版)》请在冰豆网上搜索。

二级C++196.docx

二级C++196

二级C++-196

(总分:

93.50,做题时间:

90分钟)

一、选择题(总题数:

35,分数:

68.50)

1.有三个关系R,S和T如下:

R

A

B

C

a

1

2

b

2

1

c

3

1

S

A

B

C

d

3

2

T

A

B

C

a

1

2

b

2

1

C

3

1

d

3

2

其中关系T由关系R和S通过某种操作得到,该操作为______。

(分数:

1.00)

 A.选择

 B.投影

 C..交

 D..并 √

解析:

[解析]并关系T中包含了关系R与S中的所有元组,所以进行的是并的运算。

2.下列叙述中正确的是______。

(分数:

2.50)

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

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

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

 D.双向链表是非线性结构 √

解析:

[解析]线性表的特点是在数据元素的非空有限集合中,①存在唯一一个被称为“第一个”的数据元素;②存在唯一一个被称为“最后一个”的数据元素;③除第一个以外,集合中的每个数据元素均只有一个后继;④除最后一个以外,集合中的每个数据元素均只有一个后继。

因此,双向表是非线性结构。

3.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为______

(分数:

1.00)

 A.ios:

:

in

 B.ios:

:

out

 C.ios:

:

in|ios:

:

out

 D.以上都不对 √

解析:

[解析]使用fstream类建立文件流必须定义打开方式,否则编译器无法判断该文件流是读还是写。

4.下列函数的运行结果是______。

#include<iostream.h>

intf(inta,intb)

{intc;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

return(c);}

voidmain()

{inti=2,j=3;

intp=f(i,j);

cout<<p;}

(分数:

2.50)

 A.-1 √

 B.1

 C.2

 D.编译出错,无法运行

解析:

[解析]本题的函数是根据a和b的值来给c赋值。

5.关于关键字class和typename,下列表述中正确的是______。

(分数:

1.00)

 A.程序中的typename都可以替换为class √

 B.程序中的class都可以替换为typename

 C.在模板形参表中只能用typename来声明参数的类型

 D.在模板形参表中只能用class或typename来声明参数的类型

解析:

[解析]程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。

在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。

6.下列关于this指针的叙述中.正确的是______。

(分数:

1.00)

 A.任何与类相关的函数都有this指针

 B.类的成员函数都有this指针

 C.类的友元函数都有this指针

 D.类的非静态成员函数才有this指针 √

解析:

[解析]本题考查this指针的使用。

类的每一个成员函数都有一个隐含的常量指针,即this指针。

类的静态成员函数不能含有this指针,因为this指针是一个指向本对象的指针。

7.有如下程序段

#include

voidmain()

{inta=14,b=15,x;

charc="A";

x=(a&&b)&&(c<"B");

cout<<x;}

执行该程序段后,x的值为

∙A.ture

∙B.false

∙C.0

∙D.1

ABCD

D

[解析]关于C++语言中逻辑运算符的考查。

【解题要点】在C++语言中,逻辑运算符有4个,它们分别是!

(逻辑非)、‖(逻辑或)、&&(逻辑与)、^(异或)。

在位运算里面还有&(位与)、|(位或)的运算。

本题考查逻辑与运算符的用法,在语句x=(a&&b)&&(c<"B");中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<"B"是成立的,显然,该表达式的值为1。

(分数:

1.00)

 A.ture

 B.false

 C.0

 D.1 √

解析:

[解析]关于C++语言中逻辑运算符的考查。

【解题要点】在C++语言中,逻辑运算符有4个,它们分别是!

(逻辑非)、‖(逻辑或)、&&(逻辑与)、^(异或)。

在位运算里面还有&(位与)、|(位或)的运算。

本题考查逻辑与运算符的用法,在语句x=(a&&b)&&(c<"B");中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<"B"是成立的,显然,该表达式的值为1。

8.下面对静态数据成员的描述中,正确的是______。

(分数:

2.50)

 A.静态数据成员是类的所有对象共享的数据 √

 B.类的每个对象都有自己的静态数据成员

 C.类的不同对象有不同的静态数据成员值

 D.静态数据成员不能通过类的对象调用

解析:

9.若有如下语句

#include<iostream.h>

voidmain()

{

intx=3;

do{

x=x-2;

cout<<x;

}while(!

(--x));

}

则上面程序段______。

(分数:

2.50)

 A.输出的是1

 B.输出的是1和-2 √

 C.输出的是3和0

 D.是死循环

解析:

[解析]do...while语句的一般格式为“do循环体语句while(表达式);”,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。

本题中,先执行x=x-2,即为1。

判断表达式的值,!

(--x)为真,x=0,继续循环。

再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。

10.为了使模块尽可能独立,要求______。

(分数:

2.50)

 A.内聚程度要尽量高,耦合程度要尽量强

 B.内聚程度要尽量高,耦合程度要尽量弱 √

 C.内聚程度要尽量低,耦合程度要尽量弱

 D.内聚程度要尽量低,耦合程度要尽量强

解析:

[解析]模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。

耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。

在程序结构中,各模块的内聚性越强,则耦合性越弱。

一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

11.下列关于C++流的描述中,错误的是____。

(分数:

2.00)

 A.cout>>"A"表达式中输出字符A √

 B.eof函数可以检测是否到达文件尾

 C.对磁盘文件进行流操作时,必须包含头文件fstream

 D.以ios_base:

out模式打开的文件不存在时,将自动建立一个新文件

解析:

[解析]在C++中输入用“cin>>”,输出用“<<cout”。

12.有如下数组声明:

intnum[10l;,下标值引用错误的是______。

(分数:

1.00)

 A.num[10] √

 B.num[5]

 C.num[3]

 D.num[0]

解析:

[解析]数组定义中的数字指的是数组的大小,而下标是从0开始的,所以数组的最后一个元素是num[9]。

13.线性表进行二分法检索,其前提条件是____。

(分数:

2.00)

 A.线性表以顺序方式存储,并按关键码值排好序 √

 B.线性表以顺序方式存储,并按关键码的检索频率排好序

 C.线性表以链式方式存储,并按关键码值排好序

 D.线性表以链式方式存储,并按关键码的检索频率排好序

解析:

[解析]对线性表进行二分法检索,要求线性表是按顺序方式存储,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

14.字符串“a+b=12/n/t”的长度为______。

(分数:

2.00)

 A.12

 B.10

 C.8 √

 D.6

解析:

[解析]题目给出的字符串含有7个字符,再加字符串的结束字符,所以共8个字符。

15.下列不构成无限循环的语句或语句组是____。

(分数:

2.00)

 A.n=0;do{++n;)while(n<=0); √

 B.n=0;while

(1){n++;}

 C.while(n=10);{n--;}

 D.for(n=0,i=1;;i++)n+=i

解析:

[解析]选项B中while

(1)永远为真,一直自加下次进入死循环;选项c中while(n=10)同理死循环,没有下限范围;选项D中for循环中i也没有循环限定条件也将进入死循环;只有选项A中while(n<=0)循环判定成立,循环结束。

16.己知类Myclass的定义如下

classMyClass{

public:

voidfunction1(MyClass&c){cout<<c.data;}

staticvoidfunction2(MyClass&c){cout<<c.data;}

voidfunction3(){cout<<data;}

staricvoidfunction4(){cout<<data;}

private:

intdata;

};

其中有编译错误的函数是______。

(分数:

2.00)

 A.function1

 B.function2

 C.function3

 D.function4 √

解析:

[解析]funcyion4()函数作为类的静态成员函数,不能直接访问类中说明的非静态成员,即cout<<data在编译时会出错。

17.凡是函数中未指定存储类别的局部变量,其隐含的存储类型是____。

(分数:

2.00)

 A.auto √

 B.static

 C.regiser

 D.extern

解析:

[解析]变量说明时使用auto修饰的局部变量是自动变量,auto经常省略,在未指定存储类别时,默认为auto。

18.有以下程序

#include<iostream>

usingnamespacestd;

inta;

intfun();

intmain()

{

externinta;

intb;

a=100;

b=fun();

cout<<b<<end1;

return0;

}

intfun{)

{

externinta;

return(10*a;

}

其程序运行后的输出结果是

(分数:

2.00)

 A.100

 B.10

 C.1000 √

 D.10000

解析:

[解析]本题考核变量的作用域、生存周期和存储类别(自动、静态、存储器,外部)。

先来了解外部变量:

外部变量用关键字extern表示。

由于外部变量可以被程序中的所有函数共同访问,其作用域为全局,因此也称为全局变量。

对于外部变量而言,“定义变量”和“说明变量”是两个不同的概念。

定义a为外部变量是告诉编译程序,a是一个外部变量,并要求系统为a分配一个固定的永久存储空间。

a的值在整个程序的运行期间都存在,只有当定义它的程序运行结束时,它的存储空间才释放。

外部变量定义后,当程序中的函数要引用外部变量时,应在函数中作引用说明。

在此程序中,在第二行定义了一个外部变量a,主函数main给外部变量赋的初始值为100,当调用函数fun()时,外部变量a的值传到函数fun()中,因此函数所返回的值为100*10=1000。

19.下列关于函数模板的描述中,正确的是______。

(分数:

2.50)

 A.函数模板是一个实例函数

 B.使用函数模板定义的函数没有返回类型

 C.函数模板的类型参数与函数的参数相同

 D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数 √

解析:

[解析]函数模板是一系列相关函数的模型或样板;使用函数模板定义的函数可以带有返回类型;函数模板的类型参数为虚拟类型参数,与函数的参数不同。

故A、B、C项错误。

定义好函数模板后,编译系统将依据每一次对函数模板调用时实际所使用的的数据类型生成适当的调用代码,并生成相应的函数版本,故D项正确。

20.下列叙述中,错误的是______。

(分数:

2.50)

 A.false是一个逻辑型常量

 B.“b”'是一个字符型常量

 C.365是一个int常量

 D.3.1415926是一个double常量 √

解析:

[解析]double型数据一般占8个字节,D选项超出了范围。

21.下列关于函数的说法中,正确的是

(分数:

2.50)

 A.C++允许在函数体中定义其他函数

 B.所有的内联函数都要用inline说明

 C.仅函数返回类型不同的同名函数不能作为重载函数使用 √

 D.有默认值的参数应从左至右逐个定义

解析:

22.以下程序的执行结果为______。

#include<iostream.h>

classSample

{

intn;

public:

Sample(inti){n=i;}

operator++(){n++;}//前缀重载运算符

operator++(int){n+=2;}//后缀重载运算符

voiddisp()

{

cout<<"n="<<n<<endl;

}

};

voidmain()

{

SampleA

(2),B

(2);

A++;

++B;

A.disp();

B.disp();

}

(分数:

2.50)

 A.n=4n=3 √

 B.n=1n=2

 C.n=3n=4

 D.n=5n=6

解析:

[解析]此题考查的是“++”运算符的重载。

为了区分前缀和后缀运算符,规定:

重载后缀运算符时必须多一个虚拟参数:

int。

本题中,A

(2)首先给n赋值2,语句A++,调用的是后缀运算符重载语句,使得n加2变为4。

B

(2)首先给n赋值2,然后语句++B,调用前缀运算符重载函数,使得n加1。

因此最终的输出结果是n=4n=3。

23.有如下程序:

#include<iostream>

usingnamespacestd;

classBASE{

public:

~BASE(){cout<<"BASE";}

};

classDERIVED:

publicBASE{

public:

~DERIVED(){cout<<"DERIVED";}

intmain(){DERIVEDx;return0;}

执行后的输出结果是____。

(分数:

2.00)

 A.BASE

 B.DERIVED

 C.BASEDERIVED

 D.DERIVEDBASE √

解析:

24.有如下类定义:

classAA{

inta;

public:

AA(intn=0):

a(n){}

};

classBB:

publicAA{

public:

BB(intn)______

};

其中横线处缺失部分是______。

(分数:

3.00)

 A.:

a(n){}

 B.:

AA(n){} √

 C.{a(n);}

 D.{a=n;}

解析:

[解析]根据派生类构造函数的一般格式:

<派生类名>(<总参数表>):

<基类名1>(<参数表1>),…<基类名n>(<参数表n>),<成员对象名1>(<参数表n+1>),…<成员对象名m>(<参数表n+m>)<派生类构造函数体>。

在派生类BB的构造函数总参数表后面应该接上基类名从和其参数。

25.下列关于关系运算的叙述中正确的是

(分数:

2.00)

 A.投影、选择、连接是从二维表的行的方向来进行运算

 B.并、交、差是从二维表的列的方向来进行运算

 C.投影、选择、连接是从二维表的列的方向来进行运算 √

 D.以上三种说法都不对

解析:

[解析]在关系模型的数据语言中,一般除了运用常规的集合运算(并、交、差、笛卡尔积等)外,还定义了一些专门的关系运算,如投影、选择,连接等运算.前者是将关系看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从二维表的列的方向来进行运算。

周此,选项A与B错误,选项C正确。

26.类的析构函数是在什么时候调用的?

(分数:

1.00)

 A.类创建时

 B.创建对象时

 C.删除对象时 √

 D.不自动调用

解析:

[解析]析构函数可以被函数调用,也可以系统调用:

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

27.某类中有一个无参且无返回值的常成员函数Show,则正确的Show函数原型是

(分数:

2.00)

 A.constvoidShow();

 B.voidconstShow();

 C.voidShow()const; √

 D.voidShow(const);

解析:

28.若有如下程序:

#include<iostream>

usingnamespacestd;

classTestClass

{

public:

voidwho(){cout<<"TestClass"<<endl;}

};

classTestClass1:

publicTestClass

{

public:

voidwho(){cout<<"TestClass1"<<endl;}

};

intmain()

{

TestClass*p;

TcstClass1obj1;

p=&obj1;

p->who();

return0;

}

则该程序运行后的输出结果是____。

(分数:

2.00)

 A.TestClass1 √

 B.TestClass

 C.0

 D.无输出

解析:

[解析]程序中的TestClas1为TestClass的派生类,主函数main中定义TestClass对象*p,TestClass1对象obj1,然后p引用obj1,执行p->who()则是调用基类中的who函数,输出TcstClass。

29.已知主函数中通过如下语句序列实现对函数模板swap的调用:

inta[10],b[iol;

swap(a,b,10);

下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是______。

(分数:

1.00)

 A.template<typenameT>voidswap(Ta[],Tb[],intsize);

 B.template<typenameT>voidswap(intsize,Ta[],Tb[]); √

 C.template<typenameT1,typenameT2>voidswap(T1a[],T2b[],intsize);

 D.template<classT1,classT2>voidswap(T1a[],T2b[],intsize);

解析:

[解析]参数顺序有错。

30.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为_______。

(分数:

2.00)

 A.4

 B.5 √

 C.6

 D.7

解析:

31.若有以下函数调用语句:

fun(m+n,x+y,f(m+n,z,(x,y)));在此函数调用语句中实参的个数是____。

(分数:

2.00)

 A.6

 B.5

 C.4

 D.3 √

解析:

[解析]参数之间是用逗号分隔的,不要因为参数是表达式而被迷惑。

函数的第一个参数是表达式m+n,第三个参数是表达式f(m+n,z,(x,y))。

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

(分数:

2.00)

 A.ios_base:

:

cur √

 B.ios_base:

:

beg

 C.ios_base:

:

out

 D.ios_base:

:

end

解析:

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

:

seek_dir中的一组枚举符号:

iosbase:

:

beg相当于文件首;

insbase:

:

cur相当于当前位置(负数表示当前位置之前);

iosbase:

:

end相对于文件尾。

33.下列关于栈的描述正确的是______。

(分数:

2.50)

 A.在栈中只能插入元素而不能删除元素

 B.在栈中只能删除元素而不能插入元素

 C.栈是特殊的线性表,只能在一端插入或删除元素 √

 D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

解析:

[解析]根据数据结构对栈的定义及其特点可知:

栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表,对栈的插入与删除操作,不需要改变栈底元素。

34.有如下程序:

#include<iostream>

usingnamespacestd;

classPair{

intm;

intn;

public:

Pair(inti,intj):

m(i),n(j){}

booloperator>(PairP)const;//须在类体外给出定义

};

intmain(){

Pairp1(3,4),p2(4,3),p3(4,5);

cout<<(p1>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2);

return0;

}

运算符函数。

perator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。

比较规则是首先比较两对象的m成员,m大者为大:

当m相等时比较n,n大者为大。

程序输出0101,下列对运算符重载函数的正确定义是______。

(分数:

2.00)

 A.boolPair:

:

operator>(Pairp)const{if(m!

=p.m)returnm>p.m;returnn>p.n;} √

 B.boolPair:

:

operator>(PairP){if(m!

=p.m)returnm>p.m;returnn>p.n;}

 C.boolPair:

:

operator>(Pairp)const{if(m>p.m)returntrue;returnn>p.n;}

 D.boolPair:

:

operator>(PairP){if(m>p.m)returntrue;returnn>p.n;}

解析:

[解析]按照比较规则:

首先比较两对象的m成员,m大者为大:

当m相等时比较n,n大者为大。

这条规则的用C++写出来就是选项A。

35.有如下程序:

#include<iostream>

usingnamespacestd;

classA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1