二级C++分类模拟254.docx

上传人:b****0 文档编号:9918514 上传时间:2023-05-22 格式:DOCX 页数:17 大小:22.81KB
下载 相关 举报
二级C++分类模拟254.docx_第1页
第1页 / 共17页
二级C++分类模拟254.docx_第2页
第2页 / 共17页
二级C++分类模拟254.docx_第3页
第3页 / 共17页
二级C++分类模拟254.docx_第4页
第4页 / 共17页
二级C++分类模拟254.docx_第5页
第5页 / 共17页
二级C++分类模拟254.docx_第6页
第6页 / 共17页
二级C++分类模拟254.docx_第7页
第7页 / 共17页
二级C++分类模拟254.docx_第8页
第8页 / 共17页
二级C++分类模拟254.docx_第9页
第9页 / 共17页
二级C++分类模拟254.docx_第10页
第10页 / 共17页
二级C++分类模拟254.docx_第11页
第11页 / 共17页
二级C++分类模拟254.docx_第12页
第12页 / 共17页
二级C++分类模拟254.docx_第13页
第13页 / 共17页
二级C++分类模拟254.docx_第14页
第14页 / 共17页
二级C++分类模拟254.docx_第15页
第15页 / 共17页
二级C++分类模拟254.docx_第16页
第16页 / 共17页
二级C++分类模拟254.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

二级C++分类模拟254.docx

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

二级C++分类模拟254.docx

二级C++分类模拟254

二级C++分类模拟254

(总分:

65.00,做题时间:

90分钟)

一、选择题(总题数:

35,分数:

65.00)

1.有如下类定义:

classAnimal{

public:

virtualvoidName()=0;

};

classKoala:

publicAnimal{

public:

voidName(){/*函数体略*/}

};

关于上述类定义,下列描述中错误的是______。

(分数:

2.50)

 A.类Koala是类Animal的派生类

 B.类Koala中的Name函数是一个虚函数

 C.类Animal中的Name函数是一个纯虚函数

 D.语句“Animala;”能够建立类Animal的一个对象a √

解析:

2.运行以下程序后,如果从键盘上输入shose后回车,则输出结果为_______。

#include<iostream.h>

voidmain(){

intv1=0,v2=0,k=0;

charch[80];

cin>>ch;

while(ch[k]){

switch(ch[k]){

case"s";

case"h";

default:

v1++1;

case"o":

v2++;

}

k++;

}

cout<<v1<<","<<v2<<end1;

}

(分数:

2.00)

 A.2,0

 B.5,0

 C.4,5 √

 D.2,5

解析:

3.有下列程序:

#include<stdio.h>

intf(intx,inty)

{return((y-x)*x);}

voidmain()

{inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printf("%d/n",d);

}

程序运行后的输出结果是______。

(分数:

2.50)

 A.10

 B.9 √

 C.8

 D.7

解析:

[解析]在C语言中,子函数f(intx,inty)的功能是计算y减去x的差与x之积.所以在主函数中,调用f(a,b)的值等于3,调用f(a,c)的值等于6,然后再调用f(3,6)的值等于9,所以正确答案为选项B。

4.在公有继承的情况下,允许派生类直接访问的基类成员包括______。

(分数:

2.00)

 A.公有成员

 B.公有成员和保护成员 √

 C.公有成员、保护成员和私有成员

 D.保护成员

解析:

[解析]此题考查的是派生类对基类成员的访问。

基类的成员有公有、保护和私有三种访问属性;类的继承方式也有公有继承、保护继承和私有继承三种。

无论那种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。

5.若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test.txt文件的是______。

(分数:

2.00)

 A.ifstreamfin;fin.open("d:

//test.txt",ios_base:

:

in); √

 B.fstreamfio;fio.open("d:

//test.txt",ios_base:

:

out);

 C.ofstreamfout;four.open("d:

//test.txt",ios_base:

:

out);

 D.ofstreamfout;fout.open("d:

//test.txt",ios_base:

:

app);

解析:

[解析]如果以iso_base:

:

in模式打开文件但文件又不存在时,可以通过fail()测出文件打开失败,不会自动创建文件。

6.考虑函数原型voidtest(inta,intb=7,charz="*7"),下面的函数调用中,属于不合法调用的是______。

(分数:

1.00)

 A.test(5);

 B.test(5,8);

 C.test(6,"#"); √

 D.test(0,0,"*");

解析:

[解析]题中函数声明带有默认参数,那么在C选项的调用中,将会把字符型实参#赋值给整型形参b,这不符合参数传递规则。

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

#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;

}

}

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

(分数:

1.00)

 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);

解析:

8.下列程序的运行结果是____。

#include<iostream.h>

voidfun(int*a,int*b)

{int*k;k=a;a=b;b=k;}

voidmain()

{inta=2OO4,b=9,*x=&a,*y=&b;

fun(x,y);

cout<<a<<""<<b<<end1;}

(分数:

2.00)

 A.20049 √

 B.92004

 C.00

 D.编译时出错

解析:

9.从工程管理角度,软件设计一般分为两步完成,它们是______。

(分数:

2.50)

 A.概要设计与详纲设计 √

 B.数据设计与接口设计

 C.软件结构设计与数据设计

 D.过程设计与数据设计

解析:

[解析]从软件工程角度看,软件设计分为概要设计和详细设计。

概要设计就是结构设计,其主要目标是给出软件的模块结构;详细设计的首要任务是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库。

10.若已定义过类A和B,并且定义类C如下:

classC{

public:

intval;

AaObj;

BbObj;

C*cObj;

C():

cObj(0),val(0){}

};

若要建立类C的对象object,则类成员val、aObj、bObj和cObj中最后被初始化的是______。

(分数:

1.00)

 A.val

 B.aObj

 C.bObj

 D.cObj √

解析:

[解析]C++中初始化顺序遵循以下两个原则:

(1)初始化列表的初始化变量顺序是根据成员变量声明的顺序来执行的;

(2)若有成员对象,先初始化成员对象,多个成员变量按规则

(1)执行。

按题中所给声明顺序,最后被初始化的是cObj。

故选择D选项。

11.若有如下语句:

#include<iostream.h>

voidmain()

{

intx=3;

do{

x=x-2;

cout<<x;

}while(!

(--X));

}

则上面程序段

(分数:

2.00)

 A.输出的是1

 B.输出的是1和-2 √

 C.输出的是3和0

 D.是死循环

解析:

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

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

判断表达式的值,!

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

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

12.下列关于函数重载的叙述中,错误的是______。

(分数:

2.00)

 A.重载函数的参数个数可以不同

 B.重载函数的参数类型可以不同

 C.重载函数的返回值类型必须不同 √

 D.重载函数的参数个数或参数类型必须有所不同

解析:

[解析]两个或两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数进行最佳匹配,自动确定调用哪个函数,这就是函数的重载。

13.下列选项中不全是C++语言关键字的是

(分数:

2.00)

 A.const,break,default

 B.long,void,using

 C.virtual,exterm,include √

 D.try,throw,this

解析:

14.有如下函数模板定义:

template<typenameT1,typenameT2>

T1FUN(T2n){returnn*5,0;}

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

(分数:

1.00)

 A.FUN(9)

 B.FUN<9>

 C.FUN<double>(9) √

 D.FUN<9>(double)

解析:

[解析]函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。

15.对于循环队列,下列叙述中正确的是______。

(分数:

2.50)

 A.队头指针是固定不变的

 B.队头指针一定大于队尾指针

 C.队头指针一定小于队尾指针

 D.队头指针可以大于队尾指针,也可以小于队尾指针 √

解析:

[解析]所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。

在循环队列结构中.当存储空间的最后一个位置已被使用而再要进行八队运算时,只要存储空间的第一个位置空闲,可将元素加入到第一个位置,即将存储空闲的第一个位置作为队尾。

16.支持子程序调用的数据结构是______。

(分数:

1.00)

 A..栈 √

 B..树

 C.队列

 D.二叉树

解析:

[解析]栈支持子程序调用。

栈是一种只能在一端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。

17.面向对象的开发方法中,类与对象的关系是______。

(分数:

2.50)

 A.抽象与具体 √

 B.具体与抽象

 C.部分与整体

 D.整体与部分

解析:

[解析]现实世界中的很多事物都具有相似的性质,把具有相似的属性和操作的对象归为类,也就是说类是具有共同属性、共同方法的对象的集合,是对对象的抽象。

它描述了该对象类型的所有对象的性质,而一个对象则是对应类的一个具体实例。

所以本题正确答案为A选项。

18.有三个关系R、S和T如下:

则由关系R和S得到T的操作是______。

(分数:

2.50)

 A.自然连接 √

 B..交

 C.投影

 D..并

解析:

[解析]关系运算中自然连接是使用等于运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

并是指两个结果集合并,交是指两个结果集的公共部分。

投影是从表中选出指定的属性值组成新表,是单目运算,由此可知本题答案为A。

19.以下程序的正确运行结果是____。

#include<iostream.h>

intf(int);

voidmain()

{

inta=2,i;

for(i=0;i<3;i++)cout<<f(a)<<"";

cout<<endl;

}

intf(inta)

{

intb=0

staticintc=3;

b++:

c++;

return(a+b+c);

}

(分数:

1.00)

 A.777

 B.71013

 C.7911

 D.789 √

解析:

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

inti=8,k,a,b;

unsignedlongw=5;

doublex=1.42,y=5.2;

则以下符合C++语言语法的表达式是____。

(分数:

2.00)

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

 B.a=a*3+2

 C.x%(-3)

 D.y=floati

解析:

21.有如下程序:

#include<iostream>

usingnamespacestd;

voidf1(int&x,int&y){intz=x;x=y;y=z;}

voidf2(intx,inty){intz=x;x=y;y=z;}

intmain(){

intx=10,y=26;

f1(x,y);

f2(x,y);

cout<<y<<endl;

return0;

}

运行时的输出结果是______。

(分数:

2.50)

 A.10 √

 B.16

 C.26

 D.36

解析:

[解析]函数f1的参数传递方式采用传引用方式,调用函数f1后,实参变量x、y的值被交换。

此时,x=26,y=10。

函数f2的参数传递方式采用传值方式,调用函数f2后,不会改变实参变量x、y的值。

故程序输出y的值为10。

22.派生类的构造函数的成员初始化列表中,不能包含______。

(分数:

2.50)

 A.基类的构造函数

 B.派生类中子对象的初始化

 C.基类中子对象的初始化 √

 D.派生类中一股数据成员的初始化

解析:

[解析]在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。

如果派生类中还有子对象,还应包含对子对象初始化的构造函数。

23.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。

与程序的效率相比,人们更重视程序的

(分数:

1.00)

 A.安全性

 B.一致性

 C.可理解性 √

 D.合理性

解析:

[解析]结构化程序设计方法设计出的程序具有明显的优点。

其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。

其中,人们更重视前者。

24.设有以下程序段:

inta[5]={0},*p,*q;

p=a;

q=a;

则下列选项中,合法的运算是____。

(分数:

1.00)

 A.p+q

 B.p-q √

 C.p*q

 D.p%q

解析:

[解析]本题考核指针的运算。

C++语言中,指向同一字符串的指针之间能且只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。

25.有如下程序:

#include<iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(intx):

val(X){}

voidSet(intX){val=x;}

voidPrint()const{cout<<"val="<<val<<"/t";}

private:

intval;

};

intmain(){

constMyClassobj1(10);

MyClassobj2(20);

obj1.Print();//语句1

obj2.Print();//语句2

obj1.Set(20);//语句3

obj2.Set(30);//语句4

return0;

}

其主函数中错误的语句是______。

(分数:

2.00)

 A.语句1

 B.语句2

 C.语句3 √

 D.语句4

解析:

[解析]在创建类对象obj1(10)时,前面有关键字const,所以当语句3调用obj1的成员函数试图修改其私有成员的数值的时候,会编译出错。

26.在类中重载赋值运算符时,应将其声明为类的______。

(分数:

2.00)

 A.静态函数

 B.友元函数

 C.成员函数 √

 D.构造函数

解析:

27.如果有以下定义及初始化:

inta=3,*p=&a;

则由此可以推断,*p的值是______。

(分数:

2.50)

 A.变量a的值,即3 √

 B.变量a的地址值

 C.变量p的地址值

 D.无意义

解析:

[解析]此题考查的是指针变量的定义与赋初值。

语句*p=&a是定义指针并且给指针赋初值,指向a,所以指针的值就是变量a的地址,*p的值就是a的值。

28.若MyClass是一个类名,其有如下语句序列:

MyClassc1,*c2;

MyClass*c3=newMyClass;

MyClass&c4=c1;

上面的语句序列所定义的类对象的个数是______。

(分数:

2.50)

 A.1

 B.2 √

 C.3

 D.4

解析:

[解析]首先定义对象的格式:

(存储类型)<类名><对象名1>(<对象名2>,…,<对象名n>);第一句定义了对象c1和指针对象c2,而MyClass*c3=newMyClass是Java里的定义方式,MyClass&c4=c1这种定义方式也是不对的。

29.下列语句中正确的是____。

(分数:

2.00)

 A.int*p;i=8;p=&i;

 B.int*p,i;p=&i; √

 C.float*p;inti;p=&(float)i;

 D.float*p;cout<<*p;

解析:

[解析]选项A中的变量i没有定义就使用了;选项C(float)i把i中的数据取出后变为float型,就是一个数值,“&(float)i”不能得到i的地址;选项D中的指针变量,p没有赋值就使用,它到底指向哪个存储单元没有指明,它可能指向不可读取的存储单元,这时的破坏性很大。

30.下列关于C++预定义流对象的叙述中,正确的是______。

(分数:

1.00)

 A.cin是C++预定义的标准输入流对象 √

 B.cin是C++预定义的标准输入流类

 C.cout是C++预定义的标准输入流对象

 D.cout是C++预定义的标准输入流类

解析:

[解析]cin是C++预定义的标准输入流对象,cout是C++预定义的标准输出流对象。

31.已知枚举类型声明语句为:

enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};

则下列说法中错误的是

(分数:

2.00)

 A.枚举常量YELLOW的值为1

 B.枚举常量RED的值为6

 C.枚举常量BLACK的值为10

 D.枚举常量WHITE的值为1 √

解析:

[解析]枚举变量中的枚举元素系统是按照常量来处理的。

如果没有进行元素赋值操作,那么元素将会被系统从0开始自动递增地进行赋值操作,但是,如果一旦定义了某一个元素的值,那么系统将对下一个元素进行按前一个元素的值加1操作,故wHITE=1,YELLOW=2,GREEN=5,RED=6,BLACK=10。

32.有如下类声明:

classSAMPLE

{

intn;

public:

SAMPLE(inti=0):

n(i){}

voidsetValue(intn0);

};

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

(分数:

2.00)

 A.SAMPLE:

:

setValue(int.n0){n=n0;}

 B.voidSAMPLE:

:

setValue(intn0){n=n0;} √

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

 D.(intn0){n=n0;}

解析:

[解析]此题考查了成员函数的定义格式。

在类外部对成员函数定义时的一般格式为:

返回类型类名:

:

成员函数名(参数表){函数体},故此题正确答案为选项B。

33.生成派生类对象时,派生类构造函数调用基类构造函数的条件是______。

(分数:

2.00)

 A.无需任何条件 √

 B.基类中显式定义了构造函数

 C.派生类中显式定义了构造函数

 D.派生类构造函数明确调用了基类构造函数

解析:

34.在软件开发中,需求分析阶段产生的主要文档是____。

(分数:

2.00)

 A.软件集成测试计划

 B.软件详细设计说明书

 C.用户手册

 D.软件需求规格说明书 √

解析:

[解析]在软件开发过程中,需求分析阶段产生的要文档是软件需求规格说明书。

35.有如下程序:

#include<iostream>

usingnamespacestd;

classBase{

public:

virtualvoidfunction1(){cout<<"0";}

voidfunction2(){out<<"1";}

};

classDerived:

publicBase{

oublic:

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

voidfunction2(){cout<<"3";}

};

intmain(){

Base*p=newDerived();

p->function1();p->function2();

return0;

}

运行时的输出结果是______。

(分数:

1.00)

 A.01

 B.21 √

 C.03

 D.23

解析:

[解析]本题中需要注意的是虚函数的定义:

指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。

所以p->functionl();会指向实现类Derived,而p->function2()则会指向Base。

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

当前位置:首页 > 初中教育 > 语文

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

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