二级C++笔试403.docx

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

二级C++笔试403.docx

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

二级C++笔试403.docx

二级C++笔试403

二级C++笔试-403

(总分:

83.00,做题时间:

90分钟)

一、选择题(总题数:

35,分数:

58.00)

1.C++中运算符优先级由高到低排列正确的是

A):

:

+++||B)<*||,

C)sizeof%+:

:

D),&&newsizeof

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

[解析]考查C++运算符的优先级。

[解题要点]运算符的优先级是:

:

最高,其次是[],(),等,然后是++,--,再低还有->*,*,+,<<,>>,=。

[考点链接]逗号的优先级最低。

2.以下程序执行后的输出结果是()。

#include<iostream>

usingnamespacestd;

voidtry(int,int,int,int);

intmain()

intx,y,z,r;

x=1;

y=2;

try(x,y,z,r);

cout<<r<<end1;

return0;

voidtry(intx,inty,intz,intr)

z=x+y;

x=X*X;

y=y*y;

r=z+x+y;

A)18B)9C)10D)不确定

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]本题常见的错误解答是:

把x=1,y=2代入到函数try中,逐步计算出r=8。

最后得到r的输出值是8。

下面是正确解答。

根据程序逐步分析:

①程序中定义了一个名为try的void型函数,即函数try()没有任何返回值。

②而try()函数在主函数中是以一条独立语句的方式被调用的,且主函数最后输出变量r的值。

③但在主函数中,并没有对变量r赋值。

④在C++语言中,数据只能从实参单向传递给形参,称为按值传递。

也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。

所以,虽然在函数try()中,r的值为8,但它并不能传递给实参,当然最终的输出肯定是不确定的随机数了。

3.下列对变量的引用中,错误的是

A)inta;int&p=a;B)chara;char&p=a;

C)inta;int&p;p=a;D)floata;float&p=a;

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考核引用的定义和初始化。

引用具有如下特点:

引用能够使用任何合法变量名;引用不是变量,所以必须在定义时初始化,而且一旦初始化之后,就不能再成为其他变量的引用;引用不是值,不占存储空间,说明引用时,目标的存储状态不会改变。

所以,引用只有说明,没有定义;引用仅在说明时带有“&”,以后就像普通变量一样使用,不能再带“&”。

在C选项中,由于在定义引用p后没有进行初始化,所以此语句错误。

4.下列字符串中可以用作C++语言标识符的是

A)1234

B)foo~~bar

C)virtual

D)34var

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

解析:

C++语言标识符只能由数字,字母和下划线组成,并且只能以字母和下划线为开头。

5.下列程序的执行结果是______。

#include<iostream.h>

#include<stdlib.h>

classTestClass

public:

intx,y;

TestClass()x=y=0;

TestClass(inta,intb)x=a;y=b;

voiddisp()

cout<<"x="<<x<<",y="<<y<<end1;

voidmain()

TestClasss1(2,3);

s1.disp();

A)x=2,y=2B)x=2,y=3

C)x=3,y=2D)x=3,y=3

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]由主函数入手,定义了类TestClass的对象s1(2,3),当类对象进入其作用域时调用构造函数,构造函数应读是调用具有参数的“TestClass(inta,intb){x=a;y=b;)”。

然后引用成员函数disp(),则输出为“cout<<”x=“<<x<<”,y=“<<y<<end1;”。

即x=2,y=3。

6.在面向对象的程序设计中,下列叙述中错误的是

A)任何一个对象构成一个独立的模块

B)一个对象不是独立存在的实体,各个对象之间有关联,相互依赖

C)下一层次的对象可以继承上一层次对象的某些属性

D)上述三种说法都正确

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]在面向对象的程序设计中,一个对象是一个可以独立存在的实体。

各个对象之间相对独立,相互依赖性小。

所以,选项B错误,应为所选。

7.有下列程序:

#include<iostream>

usingnamespacestd;

classTestClass

protected:

TestClass()cout<<'x';

TestClass(charc)cout<<c;

;

classTestClassl:

publicTestClass

public:

TestClassl(charc)cout<<c;

;

intmain()

TestClass1d1('y');

retum0;

执行这个程序屏幕上将显示输出()。

A)yB)yxC)xyD)yy

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]程序中的类TestClass为基类,TestClass1为TestClass的派生类。

由main主函数入手,定义TestClass1类型的对象d1,参数值为y。

TestClass1类继承TestClass,所以主函数中“TestClass1d('y');”语句首先调用“TestClass1(charc){cout<<c;}”,然后调用基类中的“TestClass(){cout《'x';}输出x,最后执行“TestClass(charc){cout<<c;}”,输出y,即答案为“xy”。

8.有如下程序:

#include<iostream>

usingnamespacestd;

classObj

staticinti;

public:

Obj()i++

~Obj()i--;

staticintgetVal()returni;

intObj:

:

i=0;

voidf()Objob2;cout<<ob2.getVal();

intmain()

Objobl;

f();

Obj*ob3=newObj;cout<<ob3->getVal();

deleteob3;cout<<Obj:

:

getVal();

return0;

程序的输出结果是

A)232B)231C)222D)221

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]因为实现了同类之间的不同对象之间的数据共享,所以静态数据成员无论有多少个类对象的建立和删除,都只有一个副本。

Objobl;调用构造函数一次,i=1,f();再调用f函数,新生成局部对象ob2,调用构造函数一次,i=2,调用ob2.getVal();打印i=2;f函数调用结束时,对象ob2被删除,调用析构函数一次,i=1;0bj*ob3=newObj;生成一个对象指针,调用构造函数一次,此时i=2,cout<<ob3->getVal();打印i的值为2,deleteob3;调用析构函数一次,i-1,cout<<Obj:

:

getVal();为1。

9.数据库管理系统是______。

A.操作系统的一部分B.在操作系统支持下的系统软件

C.一种编译系统D.一种操作系统

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。

是一种在操作系统之上的系统软件。

10.下面关于构造函数和析构函数的描述中,错误的是()。

A.析构函数可以声明为虚函数

B.对虚析构函数的调用可以采用动联编

C.一个类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响

D.构造函数可以声明为虚函数

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

11.下面是关于派生类声明的开始部分,其中正确的是()。

A.classvirtualB:

publicAB.virtualclassB:

publicA

C.classB:

publicAvirtualD.classB:

virtualpublicA

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

12.以下有关类与结构体关系的叙述不正确的是

A)结构体中只包含数据;类中封装了数据和操作

B)结构体的成员对外界通常是开放的;类的成员可以被隐蔽

C)用struct不能声明一个类型名;而class可以声明一个类名

D)结构体成员默认为Public;类成员默认为private

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]可以说类来源于结构体,两者有相似之处。

但类的功能更强大一些,不仅增加了操作,还能够隐藏和包含其成员变量或成员函数。

13.在表达式x-y中,“-”是作为非成员函数重载的运算符。

若使用显式的函数调用代替直接使用运算符“-”,这个表达式还可表示为()。

A.x.operator-(y)B.operator-(y,x)C.y.operator-(x)D.operator-(x,y)

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

14.执行下列语句序列:

inti=0;while(i<25)i+=3;cout<<i;

输出结果是()。

A.24B.25C.27D.28

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]本题考查的是循环语句while的使用。

i为3的倍数,当i=24时;i<25,执行while的循环体i+=3,则i=27,不满足i<25的条件,结束循环。

15.下列关于线性链表的描述中正确的是()。

A)存储空间不一定连续,且各元素的存储顺序是任意的

B)存储空间不一定连续,且前件元素一定存储在后件元素的前面

C)存储空间必须连续,且各前件元素一定存储在后件元素的前面

D)存储空间必须连续,且各元素的存储顺序是任意的

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也可能是不连续的。

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

A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法

C)充分考虑程序的执行效率D)程序的注释可有可无

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

[解析]程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。

17.下列函数中,哪项是正确的递归函数()。

AintFun(intn)

if(n<1)return1;

elsereturnn*Fun(n+1);

B)intFun(iran)

if(abs(n)<1)return1;

elsereturnn*Fun(n/2);

C)intFun(intn)

if(n>1)return1;

elsereturnn*Fun(n*2)1

D)intFun(intn)

if(n>1)return1;

elseretunn*Fun(n-1);

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查递归函数这个知识点。

递归函数由递归出口和递归体两部分组成:

递归出口给出了递归终止的条件;递归体给出了递归的方式。

对于选项A,当参数n>=1时,不满足递归调用的结束条件;对于选项C,当参数n<=0时,不满足递归调用的结束条件;对于选项D,当参数n<:

2时,不满足递归调用的结束条件。

18.下列程序的运行结果是()。

#include<iostream.h>

classA

inta;

public:

A()a=0;

A()intaa

a=aa;

cout<<a++;

voidmain()

Ax,y

(2),z(3);

cout<<endl;

A.00B.23C.34D.25

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题考查的是对构造函数的掌握,另外++运算符是右结合的,所以在进行输出的时候都是先把原来的输出后再自加1。

19.类模板template<classT>classx(…),其中,友元函数f成为从该类模板实例化的每个模板类的友元,则其说明应为()。

A.friendvoidf();

B.friendvoidf(x<T>&);

C.friendvoidA:

:

f();

D.friendvoidC<T>:

:

f(x<T>&)

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

20.有如下程序:

#include<iostream>

usingnamespacestd;

classMusic

public:

voidsetTitle(char*str)strcpy(title,str);

protected:

chartype[10];

private:

chartitle[20];

classJazz:

publicMusic

public:

voidset(char*str)

strcpy(type,"Jazz");//①

strcpy(title,str);//②

下列叙述中正确的是

A)程序编译正确B)程序编译时语句①出错

C)程序编译时语句②出错D)程序编译时语句①和②都出错

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

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

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

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

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

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

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]函数返回值的类型是由在定义该函数时所指定的函数类型所决定。

22.下列选项中不属于结构化程序设计原则的是______。

A.可封装B.自顶向下C.模块化D.逐步求精

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

结构化程序设计的思想包括:

自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。

23.若有以下变量和函数说明:

#include<iostream.h>

charCh='*';

voidsub(intx,inty,charch,double*Z)

switch(ch)

case'+':

*Z=x+y;break:

case'-':

*Z=x-y;break:

case'*':

*Z=x*y;break:

case'/':

*Z=X/y;break;

以下合法的函数调用语句是()。

A.sub(10,20,Ch,y);

B.sub(1.2+3,2*2,'+',&Z);

C.sub(sub(1,2,'+',&y),sub(3,4'+',&x),'-',&y);

D.sub(a,b,&x,ch);

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

24.设有如下程序:

#include<iostream>

usingnamespacestd;

classA

public:

inti;

display()

cout<<"classA/n";

;

classB

public:

inti;

display()

cout<<"classB/n";

;

classC:

publicA,publicB

intj;

public:

inti;

show()

j=i*i;

display();

;

intmain()

Cdemo;

demo.show();

returnO;

则主程序运行时将()。

A)因为变量i的重复定义而报错

B)因为对象demo间接调用display()函数时产生二义性而报错

C)因为类定义的语法错误而不能运行

D)没有语法错误,能够正常输出结果

(分数:

1.00)

 A.

 B. √

 C.

 D.

解析:

[解析]本题主要考察C++中多继承的工作方式和二义性的解决办法。

在C++中,允许一个派生类从多个基类派生,这种继承方式称为多继承。

多继承的定义格式如下:

class<派生类名>:

<继承方式><基类名1>,<继承方式2><基类名2>,…

{<派生类类体>};

但是,如果一个派生类的两个或多个基类中有某个同名成员,在派生类中对这个成员的访问就可能出现二义性;同时,如果一个派生类是由两个或多个基类派生出来的,而这几个基类又有一个共同的基类,对该基类进行访问时,也可能会出现二义性。

本题程序中,类C是由类A和类B多继承得到的派生类,但其自身函数show()中调用了display()函数,而这个函数是同时出现在类C的两个基类中的,因此程序会出现二义性,编译器将无法确定调用哪一个display()函数来执行操作,因此报错。

解决二义性的通常办法是通过作用域运算符“:

:

”进行限定。

25.以下哪个特征不是面向对象思想中的主要特征?

A)多态B)继承C)封装D)垃圾回收

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]考查面向对象语言的基本思想。

[解题要点]面向对象语言的基本特性是封装、继承和多态。

[错解分析]垃圾回收是Java的主要特点。

[考点链接]要掌握面向对象的优点。

26.树是结点的集合,它的根结点数目是()。

A)有且只有1B)1或多于1

C)0或1D)至少2

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

27.软件开发离不开系统环境资源的支持,其中必要的测试数据属于()。

A.硬件资源B.通信资源

C.支持软件D.辅助资源

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

28.多态性指的是

A)以任何方式调用一个虚函数

B)以任何方式调用一个纯虚函数

C)借助于指向对象的基类指针或引用调用一个虚函数

D)借助于指向对象的基类指针或引用调用一个纯虚函数

(分数:

1.00)

 A.

 B.

 C. √

 D.

解析:

[解析]考查多态性的基本概念。

[解题要点]多态性主要是指借助于指向对象的基类指针或引用调用一个虚函数。

[考点链接]注意多态和重载的关系和应用。

29.要利用C++流进行文件操作,必须在程序中包含的头文件是

A)iostreamB)fstreamC)strstreamD)iomanip

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

[解析]头文件iomapip用于输入/输出的格式控制,头文件iostrearn包含了对输入/输出流进行操作所需的基本信息。

30.已知:

intn=10;那么下列语句中错误的是()。

A.int*p=newlong[n];B.intp[n];

C.int*p=newlong(n);D.intp[10];

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

31.下列有关类和对象的叙述不正确的是

A)任何一个对象都归属于一个具体的类

B)类与对象的关系和数据类型与变量的关系相似

C)类的数据成员不允许是另一个类的对象

D)一个类可以被实例化成多个对象

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]对象是类的实例,类的成员可以是其他类的对象,那么在该类实例化的时候,必须保证其他类的对象已经生成,否则将会出现错误。

32.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为

A)log2nB)n/2C)nD)n+1

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]在长度为n的线性表中进行顺序查找,最坏情况下需要比较n次。

选项C正确。

33.下列表示引用的方法中,()是正确的。

已知:

intm=10;

A.int&x=m;B.int&y=10:

C.int&ZD.float&t=&m;

(分数:

1.00)

 A. √

 B.

 C.

 D.

解析:

34.下面不属于软件原计原则的是______。

A)抽象B)模块化C)自底向上D)信息隐蔽

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

[解析]软件设计原则包括抽象、模块化、信息隐蔽和模块独立性。

35.在数据流图(DFD)中,带有名字的箭头表示

A)模块之间的调用关系B)程序的组成成分

C)控制程序的执行顺序D)数据的流向

(分数:

1.00)

 A.

 B.

 C.

 D. √

解析:

[解析]数据流相当于一条管道,并有一级数据(信息)流经它。

在数据流图中,用标有名字的箭头表示数据流。

数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。

二、填空题(总题数:

15,分数:

25.00)

36.在下列程序的横线处填上适当的语句,使该程序的输出为12。

#included<iostream.h>

usingnamespacestd;

classBase

public:

inta,b;

Base(inti)a=i;

classDerived:

publicBase

inta;

public:

Derived(intx):

Base(x),b(

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

当前位置:首页 > 总结汇报 > 学习总结

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

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