全国计算机二级等级考试C++笔试试题.docx

上传人:b****3 文档编号:3672175 上传时间:2022-11-24 格式:DOCX 页数:18 大小:24.85KB
下载 相关 举报
全国计算机二级等级考试C++笔试试题.docx_第1页
第1页 / 共18页
全国计算机二级等级考试C++笔试试题.docx_第2页
第2页 / 共18页
全国计算机二级等级考试C++笔试试题.docx_第3页
第3页 / 共18页
全国计算机二级等级考试C++笔试试题.docx_第4页
第4页 / 共18页
全国计算机二级等级考试C++笔试试题.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

全国计算机二级等级考试C++笔试试题.docx

《全国计算机二级等级考试C++笔试试题.docx》由会员分享,可在线阅读,更多相关《全国计算机二级等级考试C++笔试试题.docx(18页珍藏版)》请在冰豆网上搜索。

全国计算机二级等级考试C++笔试试题.docx

全国计算机二级等级考试C++笔试试题

2006年4月全国计算机二级等级考试笔试试题

C++语言程序设计

(考试时间90分钟,满分100分)

一、选择题(

(1)~(35)每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂。

写在答题卡相应位置上,答在试卷上不得分。

(1)下列选项不属于结构化程序设计方法的是

A.自顶向下B.逐步求精

C.模块化 D.可复用

(2)两个或两个以上模块之间关联的紧密程度称为

A.耦合度 B.内聚度

C.复杂度 D.数据传输特性

(3)下列叙述中正确的是

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要再测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

(4)按照“后进先出”原则组织数据的数据结构是

A.队列 B.栈

C.双向链表 D.二叉树

(5)下列叙述中正确的是

A.线性链表是线性表的链式存储结构

B.栈与队列是非线性结构

C.双向链表是非线性结构

D.只有根结点的二叉树是线性结构

(6)对如下二叉树,进行后序遍历的结果为

A.ABCDEF B.DBEAFC

C.ABDECF D.DEBFCA

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

A.32 B.31 C.64 D.63

(8)“商品”与“顾客”两个实体集之间的联系一般是

A.一对一 B.一对多

C.多对一 D.多对多

(9)在E-R图中,用来表示实体的图形是

A.矩形 B.椭圆形 C.菱形 D.三角形

(10)数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是

A.DB包含DBS和DBMS 

B.DBMS包含DB和DBS

C.DBS包含DB和DBMS 

D.没有任何关系

(11)下列关于C++函数的说明中,正确的是

A.内联函数就是定义在另一个函数体内部的函数

B.函数体的最后一条语句必须是return语句

C.标准C++要求在调用一个函数之前,必须先声明其原型

D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式

(12)由于常对象不能被更新,因此

A.通过常对象只能调用它的常成员函数

B.通过常对象只能调用静态成员函数

C.常对象的成员都是常成员

D.通过常对象可以调用任何不改变对象值的成员函数

(13)下列关于虚函数的说明中,正确的是

A.从虚基类继承的函数都是虚函数

B.虚函数不得是静态成员函数

C.只能通过指针或引用调用虚函数

D.抽象类中的成员函数都是虚函数

(14)运算符重载是对已有的运算符赋予多重含义,因此

A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义

B.可以改变一个已有运算符的优先级和操作数个数

C.只能重载C++中已经有的运算符,不能定义新运算符

D.C++中已经有的所有运算符都可以重载

(15)模板对类型的参数化提供了很好的支持,因此

A.类模板的主要作用是生成抽象类

B.类模板实例化时,编译器将根据给出的模板实参生成一个类

C.在类模板中的数据成员都具有同样类型

D.类模板中的成员函数都没有返回值

(16)下列关于C++流的说明中,正确的是

A.与键盘、屏幕、打印机和通信端口的交互都可以通过流类来实现

B.从流中获取数据的操作称为插入操作,向流中添加数据的操作称为提取操作

C.cin是一个预定义的输入流类

D.输出流有一个名为open的成员函数,其作用是生成一个新的流对象

(17)下列符号中可以用作C++标识符的是

A._radiusB.foo~bar

C.elseD.3room

(18)下列语句中,错误的是

A.constintbuffer=256;

B.constinttemp;

C.constdouble*point;

D.constdouble*rt=newdouble(5.5);

(19)有如下程序:

intx=3;

do{

x-=2;

cout<

}while(!

(--x));

执行这个程序的输出结果是

A.1B.30C.l-2D.死循环

(20)有如下程序:

#include>

usingnamespacestd;

intmain()

{int*p;

*p=9;

cout<<"Thevalueatp:

"<<*p;

return0;

}

编译运行程序将出现的情况是

A.够编译时出现语法错误,不能生成可执行文件

B.运行时一定输出:

Thevalueatp:

9

C.运行时一定输出:

Thevalueatp:

*9

D.运行时有可能出错

(21)有如下程序:

 

#include

usingnamespacestd;

intmain()

{

voidfunction(doubleval);

doubleval;

function(val);

cout<

return0;

}

voidfunction(doubleval)

{

val=3;

}

编译运行这个程序将出现的情况是

A.编译出错,无法运行 B.输出:

3

C.输出:

3.0 D.输出一个不确定的数

(22)有如下类定义:

classAA

{

inta;

public:

intgetRef()const{return&a;}//①

intgetvalue()const{returna;}//②

voidset(intn)const{a=n;}//③

friendvoidshow(AAaa)const{cout

};

其中的四个函数定义中正确的是

A.① B.② C.③ D.④

(23)有如下程序:

#include

usingnamespacestd;

classBase

{

public:

voidfun(){cout<<"Base:

:

fun"<

classDerived:

publicBase

{

public:

voidfun()

{

cout<<"Derived:

:

fun"<

};

intmain()

{

Derivedd;

d.fun();

return0;

}

已知其执行后的输出结果为:

Base:

:

fun

Derived:

:

fun

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

A.Base.fun(); B.Base:

:

fun() 

C.Base->fun() D.fun();

(24)下面是重载为非成员函数的运算符函数原型,其中错误的是

A.Fractionoperator+(Fraction,Fraction);

B.Fractionoperator-(Fraction);

C.Fraction&operator=(Fraction&,Fraction);

D.Fraction&operator+=(Fraction&,Fraction);

(25)有如下函数模板:

template

Tcast(Uu){returnu;}

其功能是将U类型数据转换为T类型数据。

已知i为int型变量,下列对模板函数cast的调用中正确的是

A.cast(i); B.cast<>(i);C.cast(i); D.cast(i);

(26)若磁盘上已存在某个文本文件,其全路径文件名为d:

\ncre\test.txt,下列语句中不能打开该文件的是

A.ifstreamfile("d:

\ncre\test.txt");

B.ifstreamfile("d:

\ncre\test.txt");

C.ifstreamfile;file.open("d:

\ncre\test.txt");

D.ifstream*pFile=newifstream("d:

\ncre\test.txt");

(27)有如下类定义:

classFoo

{

public:

Foo(intv):

value(v){}//①

~Foo(){}//②

private:

Foo(){}//③

intvalue=0;//④

};

其中存在语法错误的行是

A.① B.② C.③ D.④

(28)有如下类定义:

classPoint

{

intx_,y_;

public:

Point():

x_(0),y_(0){}

Point(intx,inty=0):

x_(x),y_(y){}

}; 

若执行语句

Pointa

(2),b[3],*c[4];

则Point类的构造函数被调用的次数是

A.2次 B.3次 C.4次 D.5次

(29)有如下类定义:

classTest

{

public:

Test(){a=0;c=0;}//①

intf(inta)const{this->a=a;}//②

staticintg(){returna;}//③

voidh(int 

B.{Test:

:

b=b;};//④

private:

inta;

staticintb;

constintc;

};

intTest:

:

b=0;

在标注号码的行中,能被正确编译的是

A.① B.② C.③ D.④

(30)有如下程序:

#include

usingnamespacestd;

classA

{

public:

A(){cout<<"A";}

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

};

classB:

publicA

A*p;

public:

B(){cout<<"B";p=newA();}

~B(){cout<<"~B";deletep;}

};

intmain()

{

Bobj;

return0;

}

执行这个程序的输出结果是

A.BAA~A~B~A B.ABA~B~A~A

C.BAA~B~A~A D.ABA~A~B~A 

(31)有如下程序:

#include

usingnamespacestd;

classBase

{

private:

voidfunl()const{cout<<"funl";}

protected:

voidfun2()const{cout<<"fun2";}

public:

voidfun3()const{cout<<"fun3";}

};

classDerived:

protectedBase

{

public:

voidfun4()const{cout<<"fun4";}

};

intmain()

{

Derivedobj;

obj.funl();//①

obj.fun2();//②

obj.fun3();//③

obj.fun4();//④

return0;

}

其中有语法错误的语句是

A.①②③④B.①②③C.②③④D.①④

(32)有如下程序:

#include

usingnamespacestd;

classBase

{

public:

voidfunl(){cout<<"Base\n";}

virtualvoidfun2(){cout<<"Base\n";}

};

classDerived:

publicBase

{

public:

voidfunl(){cout<<"Derived\n";}

voidfun2(){cout<<"Derived\n";}

};

voidf(Base&b){b.fun1();b.fun2();}

intmain(){

Derivedobj;

f(obj);

return0;

}

执行这个程序的输出结果是

A.BaseB.BaseC.DerivedD.Derived

BaseDerivedBaseDerived

(33)有如下程序:

#include

usingnamespacestd;

classComplex

{

doublere,im;

public:

Complex(doubler,doublei):

re(r),im(i){}

doublereal()const{returnre;}

doubleimage()const{returnim;}

Complex&operator+=(Complexa)

{

re+=a.re;

im+=a.im;

return*this;

}

};

ostream&operator<<(ostream&s,constComplex&z)

{

returns<<'('<

intmain()

{

Complexx(1,-2),y(2,3);

cout<<(x+=y)<

return0;

}

执行这个程序的输出结果是

A.(1,-2)B.(2,3)C.(3,5)D.(3,1)

(34)有如下程序:

#include

#include

usingnamespacestd;

intmain()

{

cout.fill('*');

cout<

return0;

}

执行这个程序的输出结果是

A.123*OKB.123*OK**

C.*123OKD.*123**OK

(35)有如下类声明:

classSAMPLE

{

intn;

public:

SAMPLE(inti=0):

n(i){}

voidsetvalue(intn0);

};

下列关于setvalue成员函数的实现中,正确的是

A.SAMPLE:

:

setvalue(intn0){n=n0;}

B.voidSAMPLE:

:

setvalue(intn0){n=n0;}

C.voidsetvalue(intn0){n=n0;}

D.setvalue(intn0){n=n0;}

二、填空题(每空2分,共30分)

请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。

(1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【1】。

(2)在面向对象方法中,【2】描述的是具有相似属性与操作的一组对象。

(3)在关系模型中,把数据看成是二维表,每一个二维表称为一个【3】。

(4)程序测试分为静态分析和动态测试。

其中【4】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

(5)数据独立性分为逻辑独立性与物理独立性。

当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【5】。

(6)有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是【6】。

(7)程序中有如下语句

for(inti=0;i<5;i++)cout<<*(p+i)<<",";

能够依次输出int型一维数组DATA的前5个元素。

由此可知,变量p的定义及初始化语句是【7】。

(8)若下面程序运行时输出结果为

1,A,10.1

2,B,3.5

请将程序补充完整。

#include

usingnamespacestd;

intmain()

{

voidtest(int,char,double【8】);

test(1,'A',10.1);

test(2,'B');

return0;

}

voidtest(inta,charb,doublec)

{

cout<

}

(9)有如下类声明:

classMyClass

{

inti;

private:

intj;

protected:

intk;

public:

intm,n;

};

其中,私有成员的数量为【9】。

(10)有如下程序:

#include

usingnamespacestd;

classCon

{

charID;

public:

Con():

ID('A'){cout<<1;}

Con(charID):

ID(ID){cout<<2;}

Con(Con&c):

ID(c.getID()){cout<<3;}

chargetID()const{returnID;}

};

voidshow(Conc){cout<

intmain(){

Conc1;

show(c1);

Conc2('B');

show(c2);

return0;

}

执行上面程序的输出是【10】。

(11)有如下程序:

#include

usingnamespacestd;

classONE

{

public:

virtualvoidf(){cout<<"l";}

};

classTWO:

publicONE

{

public:

TWO(){cout<<"2";}

};

classTHREE:

publicTWO

{

public:

virtualvoidf(){TWO:

:

f();cout<<"3";}

};

intmain()

{

ONEaa,*p;

TWObb;

THREEcc;

p=&cc;

p->f();

return0;

}

执行上面程序的输出是【11】。

(12)有如下程序:

#include

usingnamespacestd;

classPARENT

{

public:

PARENT(){cout<<"PARENT";}

};

classSON:

publicPARENT

{

public:

SON(){cout<<"SON";}

};

intmain()

{

SONson;

PARENT*p;

p=&son;

return0;

}

执行上面程序的输出是【12】。

(13)若以非成员函数形式,为类Bounce重载“!

”运算符,其操作结果为一bool型数据,则该运算符重载函数的原型是【13】。

(14)下面是复数类complex的定义,其中重载的运算符“+”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:

classcomplex

{

doublereal;//实部

doubleimag;//虚部

public:

complex(doubler,doublei):

real(r),imag(i){}

complexoperator+(complexa)

{

returncomplex(【14】);

}

};

(15)已知一个函数模板定义为

template

T1FUN(T2n){returnn*5.0;}

若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为【15】。

2006年4月笔试试卷参考答案及详解

一、选择题

(1)D)

(2)A)(3)D)(4)B)(5)A)(6)D)(7)C)(8)D)(9)A)(10)C)(11)C)(12)A)(13)B)(14)C)(15)B)(16)A)(17)A)(18)B)(19)C)(20)D)(21)D)(22)B)(23)B)(24)C)(25)D)(26)A)(27)D)(28)C)(29)D)(30)B)(31)B)(32)B)(33)D)(34)A)(35)B)

二、填空题

(1)45

(2)类

(3)关系

(4)静态分析

(5)物理独立性

(6)break

(7)int*p=DATA

(8)=3.5

(9)2

(10)13A23B

(11)2213

(12)PARENTSON

(13)booloperator!

(Bounce);(Bounce后可以跟一个变量名)

(14)real+a.real,imag+a.imag

(15)FUN(7)或FUN(7)

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

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

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

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