二级C++20.docx

上传人:b****4 文档编号:5927222 上传时间:2023-05-09 格式:DOCX 页数:26 大小:25.31KB
下载 相关 举报
二级C++20.docx_第1页
第1页 / 共26页
二级C++20.docx_第2页
第2页 / 共26页
二级C++20.docx_第3页
第3页 / 共26页
二级C++20.docx_第4页
第4页 / 共26页
二级C++20.docx_第5页
第5页 / 共26页
二级C++20.docx_第6页
第6页 / 共26页
二级C++20.docx_第7页
第7页 / 共26页
二级C++20.docx_第8页
第8页 / 共26页
二级C++20.docx_第9页
第9页 / 共26页
二级C++20.docx_第10页
第10页 / 共26页
二级C++20.docx_第11页
第11页 / 共26页
二级C++20.docx_第12页
第12页 / 共26页
二级C++20.docx_第13页
第13页 / 共26页
二级C++20.docx_第14页
第14页 / 共26页
二级C++20.docx_第15页
第15页 / 共26页
二级C++20.docx_第16页
第16页 / 共26页
二级C++20.docx_第17页
第17页 / 共26页
二级C++20.docx_第18页
第18页 / 共26页
二级C++20.docx_第19页
第19页 / 共26页
二级C++20.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

二级C++20.docx

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

二级C++20.docx

二级C++20

二级C++-20

(总分:

84.50,做题时间:

90分钟)

一、{{B}}选择题{{/B}}(总题数:

35,分数:

60.50)

1.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是{{U}}{{/U}}。

∙A.不合法的运算符

∙B.一元运算符

∙C.无操作数的运算符

∙D.二元运算符

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]一元或二元运算符函数作为成员函数时,第一操作数就是对象本身,并不出现在参数表中,即第一操作数仅以this指针的形式隐含于参数表中,因此对于一元运算符参数表是空的;而对于二元运算符参数表中只有一个参数,它代表第二操作数。

2.已知语句intm=10;则下列引用的表示中正确的是

∙A.int&x=m;

∙B.int&y=10;

∙C.int&z;

∙D.float&t=&m;

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]本题考查C++中引入的新类型:

引用。

引用表示变量的别名,使用方式同变量,效果同指针。

引用不能用常数进行赋值,引用的类型必须一致,引用在使用之前必须初始化。

3.下列关于顺序存储结构叙述中错误的是{{U}}{{/U}}。

∙A.存储密度大

∙B.逻辑上相邻的结点物理上不必相邻

∙C.可以通过计算直接确定第i个结点的存储地址

∙D.插入、删除运算操作不方便

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

4.设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1,则T中的叶子结点数为______。

∙A.8

∙B.7

∙C.6

∙D.5

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]将题中所述的树用图形表示出来,目测可得叶子结点数。

5.关于数据库系统三级模式的说法,下列{{U}}{{/U}}是正确的。

∙A.外模式、概念模式、内模式都只有一个

∙B.外模式有多个,概念模式和内模式只有一个

∙C.外模式只有一个,概念模式和内模式有多个

∙D.3个模式中,只有概念模式才是真正存在的

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

6.有如下程序段:

inta[10],*p[3],**pp,i;

for(i=0;i<3:

i++)

p[i]=&a[i*4);

pp=p;

则正确表示数组a元素的表达式是______。

∙A.pp

∙B.a[10]

∙C.p[3]

∙D.*(*(p+2))

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

7.在32位的计算机中,一个char型数据所占的内存长度的字节是______。

∙A.4

∙B.1

∙C.2

∙D.8

(分数:

2.50)

 A.

 B. √

 C.

 D.

解析:

[解析]在32位的计算机中,一个char型数据所占的内存长度的字节是1。

8.下列关于线性链表的叙述中,正确的是______。

∙A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

∙B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

∙C.进行插入与删除时,不需要移动表中的元素

∙D.以上三种说法都不对

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]线性链表的存储空间可以不连续,其存储顺序和逻辑顺序也不一定一致。

进行插入和删除时,不需要移动表中元素。

9.在C++语言中,不合法的实型数据的是

∙A.0.123

∙B.123e3

∙C.2.1e3.5

∙D.123.0

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

解析:

在C++语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,e3,2.1e3.5,.e3,e等都是不合法的指数形式。

再如123e3或123E3都代表123乘以10的3次方。

注意,字母e的前面必须有数字,且e的后面必须是整数。

10.C++中,由类istream和类ostream而派出的一个类{{U}}{{/U}},它提供双向I/O操作。

∙A.iostream

∙B.fstream

∙C.strstream

∙D.istream

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

11.针对数组定义intdata[10];,下列表述中错误的是______。

∙A.用*data可访问到数组的首元素

∙B.用data[9]可访问到数组的末元素

∙C.用data[10]访问数组元素会超出数组边界

∙D.data共有10个元素,其首元素是data[1]

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]data首元素data[0]。

12.对关系S和R进行集合运算,结果中既包含S中的所有元组也包含R中的所有元组,这样的集合运算称为{{U}}{{/U}}。

∙A.并运算

∙B.交运算

∙C.差运算

∙D.积运算

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。

13.在一个单链表中,若p所指结点不是最后结点,则删除p所指结点的后继结点的正确操作是______。

∙A.p=p>next

∙B.p->next=p->next

∙C.p->next=p->next->>next

∙D.p->next=p

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

14.下列关于类和对象的叙述中,错误的是{{U}}{{/U}}。

∙A.一个类只能有一个对象

∙B.对象是类的具体实例

∙C.类是对某一类对象的抽象

∙D.类和对象的关系是一种数据类型与变量的关系

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

15.有如下程序:

#include<iostream>

usingnamespaeestd;

classBasel

{

public:

Basel(intd){cout<<d;}

~Basel(){}

};

classBase2

{

public:

Base2(intd){cout<<d;}

~Base2(){}

};

classDerived:

publicBase1,Base2

{

public:

Derived(inta,intb,intc,intd):

Base1(b),Base2(a),b1(d),b2(e){}

private:

intb1;

intb2;

};

intmain()

{

Derivedd(1,2,3,4);

return0;

}

执行这个程序的输出记过是{{U}}{{/U}}。

∙A.1234

∙B.2134

∙C.12

∙D.21

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]本题考查派生类的构造函数和析构函数,在定义一个派生类的对象时,先调用基类的构造函数,然后再执行派生类的构造函数,对象释放时,先执行派生类的析构函数,再执行基类的析构函数。

本题中定义一个派生类对象时,分别调用基类的构造函数,所以分别输出21。

16.在深度为7的满二叉树中,叶子结点的个数为

∙A.32

∙B.31

∙C.64

∙D.63

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]满二叉树的深度和结点的关系公式为k=log2n+1,则有n=2k-1(n为树结点数,k为树的深度)。

17.下面程序的结果为{{U}}{{/U}}。

#include"iostream.h"

voidchange(inta,intb)

{

inttemp;

temp=a;

a=b;

b=temp:

}

voidmain()

{

intm,n;

m=8;

n=9;

change(m,n):

cout<<m<<""<<n<<endl;

}

∙A.89

∙B.98

∙C.程序有错误

∙D.99

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

18.下面关于运算符重载的描述错误的是

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

∙B.不是所有的运算符都可以进行重载

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

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

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]例如“∷”运算符就不能被重载;通过重载可以创造新的运算方式,但是不能臆造新的运算符;定义的时候必须使用关键字operator,而调用时可直接使用运算符。

19.已知各变量的定义如下

inti=8,k,a,b;

unsignedlongw=5;

doublex=1.42,y=5.2;

则以下符合C++语言语法的表达式是{{U}}{{/U}}。

∙A.a+=a-=(b=4)*(a=3)

∙B.a=a*3+2

∙C.x%(-3)

∙D.y=floati

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

20.下列函数中对调用它的函数没有起到任何作用的是

∙A.voidf1(double&x){--x;}

∙B.doublef1(doublex){returnx-1.5;}

∙C.voidf3(doublex){--x;}

∙D.doublef4(double*x){--*x;return*x;}

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考核函数的调用和参数值的传递(形参、实参)。

选项C中的函数D调用采用按值传递的方式,函数中对形参的修改没有影响到实参的值,而且函数G还没有返回值,所以函数耀对调用它的函数没有起到任何作用。

选项A中的函数f1采用引用传递的方式影响实参的值,选项D中的函数f4通过返回值和指针调用来影响调用函数;选项B中的函数f2采用返回值的形式对其调用函数发生作用。

21.对象实现了数据和操作的结合,使数据和操作______于对象的统一体中

∙A.结合

∙B.隐藏

∙C.封装

∙D.抽象

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

22.下列叙述中错误的是{{U}}{{/U}}。

∙A.主函数main也可以带形参

∙B.函数中通过return返回函数值

∙C.调用函数必须在一条独立的语句中完成

∙D.一个函数中可以有多条return语句

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]当函数有返回值时,调用函数可以作为一个表达式的子表达式,而不是作为一条独立的语句存在。

23.下列关于派生类的构造函数的叙述中,正确的是{{U}}{{/U}}。

∙A.派生类通过成员初设列表的方法调用基类的构造函数,实现对基类的初始化

∙B.派生类构造函数的调用顺序先基类后子对象构造函数

∙C.派生类构造函数的调用顺序先子对象构造函数后基类

∙D.派生类构造函数是不能继承基类的

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

24.有如下程序:

intx=3;

do{

x-=2;

cout<<x;

}while(!

(--x));

执行这个程序的输出结果是{{U}}{{/U}}。

∙A.1

∙B.30

∙C.1-2

∙D.死循环

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考查do...while语句,执行do...while语句时,先执行循环体内的语句,然后判断while中表达式的值,表达式为非零时,返回重新执行循环体语句。

在本题中,先执行循环体内的语句,输出2,然后判断表达式,为非零,且此时x为0;再次执行循环体时,输出-2,然后判断表达式为0,不执行,退出,所以答案为C。

25.有3个关系R、S和T如下:

由关系R和S通过运算得到关系T,则所使用的运算为{{U}}{{/U}}。

∙A.笛卡尔积

∙B.交

∙C.并

∙D.自然连接

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]在实际应用中,最常用的连接是一个叫自然连接的特例。

它满足下面的条件:

两关系间有公共域;通过公共域的相等值进行连接。

通过观察3个关系R,S,T的结果可知,关系T是由关系R和S进行自然连接得到的。

26.函数定义为Fun(int&i),变量定义n=100,则下面调用正确的是______。

∙A.fun(20);

∙B.fun(20+n);

∙C.fun(n);

∙D.funD(&n)

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]该函数的形参为整型变量的引用,因此实参必须是一个整型变量或整型变量的引用。

27.有如下程序:

#nclude<iostremn>

usingnamespacestd;

classStack{

public:

Stack(unsignedn=10:

size(n){rep_=newint[size];top=O;}

Stack(Stack&s):

size(s.size)

{

rep_=newint[size];

for(inti=0;i<size;i++)rep_[i]=s.rep_[i];

top=s.top;

}

~Stack(){delete[]rep_;}

voidpush(inta){rep_[top]=a;top++;}

intopo(){--top;returnrep_[top];}

boolisEmpty()const{returntop==O;}

pavate:

int*rep_;

unsignedsize,top;

};

intmain()

{

Stacks1;

for(inti=1;i<5;i++)s1.push(i);

Stacks2(s1);

for(i=1;i<3;i++)cout<<s2.pop()<<',';

s2.push(6);

s1.push(7);

while(!

s2.isEmpty())cout<<s2.pop()<<',';

return0;

}

执行上面程序的输出是

∙A.4,3,2,1

∙B.4,3,6,7,2,1

∙C.4,3,6,2,1

∙D.1,2,3,4

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

28.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为______。

∙A.public

∙B.protected

∙C.private

∙D.static

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]类的public成员可以被类对象通过成员操作符“.”直接访问,protected和private成员则不能,而static不能单独修饰类的成员。

29.在软件开发中,需求分析阶段产生的主要文档是{{U}}{{/U}}。

∙A.可行性分析报告

∙B.软件需求规格说明书

∙C.概要设计说明书

∙D.集成测试计划

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]A错误,可行性分析阶段产生可行性分析报告。

C错误,概要设计说明书是总体设计阶段产生的文档。

D错误,集成测试计划是在概要设计阶段编写的文档。

B正确,软件需求规格说明书是后续工作如设计、编码等需要的重要参考文档。

30.下列叙述中正确的是

∙A.在模块化程序设计中,一个模块应尽量多的包括与其他模块联系的信息

∙B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的每一个细节

∙C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则

∙D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]在模块化设计中,要求将一个大程序按人们能理解的大小规模进行分解,使每个模块都能易于理解,各模块的功能尽量单一,各模块之间的联系尽量的少。

因此,选项A中的说法是错误的。

自顶向下、逐步细化的设计过程,主要包括两个方面:

一是将一个复杂问题的解法分解和细化成由若干模块组成的层次结构;二是将一个模块的功能逐步分解细化为一系列的处理步骤,直到某种程序设计语言的语句或某种机器指令。

即在自顶向下、逐步细化的设计过程中,是按照先全局后局部,先整体后细节、先抽象后具体的方法设计程序。

因此.选项B中的说法也是错误的。

在模块化程序设计中.每一个模块完成一个功能,相对独立,要求一个模块内部的控制结构也要符合结构化原则。

因此,选项C中的说法是正确的。

由于在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则,因此,在程序设计过程中,结构化程序设计方法与模块化程序设计方法是要同时采用的。

因此,选项D中的说法是错误的。

31.有如下程序:

#include<iostream>

usingnamespacestd;

classtest{

private:

inta;

public:

test(){cout<<"constructor"<<endl;}

test(intA){cout<<a<<endl;}

test(consttest&_test){

a=_test.a;

cout<<"copyconstructor"<<endl;

}

~test(){cout<<"destructor"<<endl;}

};

intmain(){

testA(3)

return0;

}

程序的输出结果是

∙A.3destructor

∙B.constructordestructor

∙C.copyconstructordestructor

∙D.3

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]test的构造函数重载,testA[3]调用test(intA)函数,然后删除时调用析构函数,故输出选项A。

32.下列叙述中正确的是{{U}}{{/U}}。

∙A.线性链表的各元素在存储空间中的位置必须是连续的

∙B.线性链表的头元素一定存储在其他元素的前面

∙C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面

∙D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]在线性链表中,各元素在存储空间中的位置是任意的,各元素的顺序也是任意的,依靠指针来实现数据元童的前后件关系。

33.下列关于派生类构造函数和析构函数的说法中,错误的是______。

∙A.派生类的构造函数会隐含调用基类的构造函数

∙B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数

∙C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数

∙D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

在销毁派生类对象时,先调用派生类的析构函数,再调用基类的析构函数。

34.通常的拷贝初始化构造函数的参数是{{U}}{{/U}}。

∙A.某个对象名

∙B.某个对象的成员名

∙C.某个对象的引用名

∙D.某个对象的指针名

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

35.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为{{U}}{{/U}}。

∙A.public

∙B.protected

∙C.private

∙D.static

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]因为public类型的权限控制属性允许类对象对类属性和方法进行访问。

二、{{B}}填空题{{/B}}(总题数:

15,分数:

24.00)

36.结构化方式由结构化分析,结构化设计和{{U}}{{U}}{{/U}}{{/U}}构成,它是一种面向数据流的开发方法。

(分数:

2.00)

填空项1:

__________________ (正确答案:

结构化程序设计)

解析:

37.下列for语句的循环次数为______。

For(nta=0,b=1;b&&a<5;a++);

(分数:

1.00)

填空项1:

__________________ (正确答案:

5)

解析:

[解析]因为b的值为1,所以b&&a<5相当于9<5,当a=5时退出循环,一共进行5次循环。

38.对基类数据成员的初始化必须派生类的构造函数中的1处执行。

(分数:

2.00)

填空项1:

__________________ (正确答案:

成员初始化列表)

解析:

[解析]C++语言规定对基类数据成员的初始化必须在派生类的构造函数中的成员初始化列表中进行。

39.已知一个函数的原型是:

intfn(doublea);若要以5.27为实参调用该函数,应使用表达式______。

(分数:

2.00)

填空项1:

__________________ (正确答案:

fn(5.27))

解析:

[解析]此题考查的是函数调用。

C++中函数调用的一般形式是:

函数名(实参表)。

40.void类型的指针是指指针指向的变量的数据类型是不固定的。

对该指针进行操作时,应进行{{U}}{{U}}{{/U}}{{/U}}。

(分数:

2.00)

填空

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2