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

上传人:b****5 文档编号:5155468 上传时间:2022-12-13 格式:DOCX 页数:14 大小:22.23KB
下载 相关 举报
二级C++分类模拟255.docx_第1页
第1页 / 共14页
二级C++分类模拟255.docx_第2页
第2页 / 共14页
二级C++分类模拟255.docx_第3页
第3页 / 共14页
二级C++分类模拟255.docx_第4页
第4页 / 共14页
二级C++分类模拟255.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

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

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

二级C++分类模拟255

二级C++分类模拟255

(总分:

62.00,做题时间:

90分钟)

一、选择题(总题数:

35,分数:

62.00)

1.派生类的成员函数不能访问基类的______。

(分数:

2.50)

 A.共有成员和保护成员

 B.共有成员

 C.私有成员 √

 D.保护成员

解析:

[解析]类的私有成员只能在其内部访问。

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

(分数:

1.00)

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

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

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

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

解析:

[解析]程序调试就是诊断和改正程序中的错误,由程序开发者完成。

软件测试是为了发现错误而执行程序的过程,它由专门的测试人员完成。

软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。

3.以下关键字不能用来声明类的访问权限的是______。

(分数:

1.00)

 A.public

 B.static √

 C.protected

 D.private

解析:

[解析]类的成员访问权限有3种:

public(公用)、protected(保护)、private(私有)。

4.有如下程序:

#include<iostream>

usingnamcspacestd;

intmain(){

inta[6]={23,15,64,33,40,58);

ints1,s2;

s1=s2=a[0];

for(int*p=a+1;p<a+6;p++){

if(s1>*p)s1=*p;

if(s2<*p)s2=*p;

}

cout<<s1+s2<<endl;

return0;

}

运行时的输出结果是______。

(分数:

2.50)

 A.23

 B.58

 C.64

 D.79 √

解析:

[解析]根据程序的意思,找出数组a中最大值s1和最小值s2并计算二者的和。

5.Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是______。

Samplea[2],*p=newSample;

(分数:

2.50)

 A.0

 B.1

 C.2

 D.3 √

解析:

[解析]生成对象,以及动态生成对象空间,都要自动调用构造函数。

6.若已定义:

inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;

其中0≤i≤9,则对a数组元素不正确的引用是

(分数:

2.00)

 A.a[p-a]

 B.*(&a[1])

 C.p[1]

 D.a[10] √

解析:

[解析]通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。

本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

7.有如下类定义:

classPoint{

intx_,y_;

public:

Point():

x_(0),y_(0){}

Point(intx,inty=0):

x_(x),y_(y){}

};

若执行语句:

Pointa

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

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

(分数:

2.00)

 A.2次

 B.3次

 C.4次 √

 D.5次

解析:

[解析]a

(2)执行一次,调用带参构造函数;b[3]生成一个对象数组,所以执行3次无参构造函数,生成3个对象数组元素;*c[4]定义一个对象指针,并没产生对象,所以没有调用构造函数。

8.有如下程序:

#include<iostream>

usingnamespacestd;

classBase{

public:

Base(intx=0){cout<<x;}

};

classDerived:

publicBase{

public:

Derived(intx=0){cout<<x;}

private:

Baseval;

};

intmain(){

Derivedd

(1);

return0;

}

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

(分数:

1.00)

 A.100

 B.000

 C.010

 D.001 √

解析:

[解析]本题考查的知识点是类的构造。

建立一个类的对象时,构造函数的执行顺序如下:

①执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右);②执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下);③执行自身的构造函数。

本题Derived类继承于Base类,所以首先会构造基类Base,但Derived类的构造函数没有初始化列表,所以将调用Base类的默认构造函数,输出一个O。

接下来由于它的成员中还定义了一个Base类的对象,而构造函数也没有显示初始化这个对象,所以再次调用Base类的默认构造函数输出一个O。

最后构造自身,因为主函数中传入了构造参数1,所以构造自身时输出了一个1。

故最终输出结果为001。

9.下列函数参数默认值定义错误的是____。

(分数:

2.00)

 A.Fun(intx,inty=0)

 B.Fun(intx=100)

 C.Fun(intx=0,inty)

 D.Fun(intx=f())(假定函数f()已经定义) √

解析:

10.设树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。

则T中的叶子结点数为

(分数:

1.00)

 A.5

 B.6

 C.7

 D.8 √

解析:

[解析]根据给定的条件,在树中,各结点的分支总数为:

4×1+2×2+1×3+4×1=15:

树中的总结点数为:

15(各结点的分支总数)+1(根结点)=16:

非叶子结点总数为:

4+2+1+1=8。

因此,叶子结点数为16(总结点数)-8(非叶子结点总数)=8。

因此,本题的正确答案为D。

11.设有以下程序段:

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

p=a;

q=a;

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

(分数:

1.00)

 A.p+q

 B.p-q √

 C.p*q

 D.p%q

解析:

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

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

12.有以下程序:

#include<iostream>

usingnamespacestd;

Classsample

{

private:

intn;

public:

sample(){}

sample(intm)

{

n=m;

}

sampleadd(samples1,samplcs2)

{

this-->n=s1.n+s2.n;

return(*this);

}

voiddisp()

{

cout<<“n=”<<n<<endl;

}

};

intmain()

{

samples1(10),s2(5),s3;

s3.add(s1,s2);

s3.disp();

return0;

}

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

(分数:

2.00)

 A.n=10

 B.n=5

 C.n=20

 D.n=15 √

解析:

[解析]本题考查this指针的使用类成员函数add中通过this指针实现私有数据成员n的赋值。

13.下列控制格式输入/输出的操作符中,能够设置浮点数精度的是______。

(分数:

2.00)

 A.setprecision √

 B.setw

 C.setfill

 D.showpoint

解析:

[解析]iomanip中定义的操纵符包括:

setfill(ch)用ch填充空白、setprecision(n)将浮点精度置为n、setw(w)、读写w个字符的值showpoint设置小数点。

14.有如下类定义:

classBase{

intm;

intn;

public:

Base(intm1,intn1):

n(n1),m(m1){}

};

classDerived:

publicBase{

intq;

public:

Derived(intm1,intn1,intq1):

q(q1),Base(m1,n1){};

};

在创建一个Derived对象时,数据成员m、n和q被初始化的顺序是______。

(分数:

2.50)

 A.m、n、q √

 B.n、m、q

 C.q、m、n

 D.q、n、m

解析:

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

(分数:

1.00)

 A.函数重载就是用相同的函数名定义多个函数

 B.重载函数的参数列表必须不同

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

 D.重载函数的参数可以带有默认值

解析:

[解析]所谓函数重载是指同一个函数名可以对应着多个函数的实现。

每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能只有函数的返回值类型不同而参数的个数和类型相同的重载。

所以本题答案为C。

16.下面有关类模板的说法中不正确的是____。

(分数:

2.00)

 A.类模板的成员函数都是模板函数

 B.类模板本身在编译中不会生成任何代码

 C.类模板只是虚拟类型的参数 √

 D.用类模板定义一个对象时,不能省略实际参数

解析:

[解析]C++中类模板的声明格式为template<模板形参表声明><类声明>,并且类模板的成员函数都是模板函数。

17.语句ofstreamf("DATA.DAT",ios_base:

:

app|ios_base:

:

binary);的功能是建立流对象f,并试图打开文件DATA.DAT并与之连接,而且______。

(分数:

2.50)

 A.若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件

 B.若文件存在,将其截为空文件;若文件不存在,打开失败

 C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件 √

 D.若文件存在,打开失败;若文件不存在,建立一个新文件

解析:

18.有如下程序:

#include<iomanip>

#include<iostream>

usingnamespacestd;

intmain(){

cout<<setfill("*")<<setw(6)<<123<<456;

return0;

}

运行时的输出结果是______。

(分数:

2.50)

 A.***123***456

 B.***123456***

 C.***123456 √

 D.123456

解析:

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

(分数:

2.00)

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

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

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

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

解析:

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

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

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

20.下面属于黑盒测试方法的是______。

(分数:

2.50)

 A.基本路径测试

 B.等价类划分 √

 C.判定覆盖测试

 D.语句覆盖测试

解析:

[解析]等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类。

21.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算是______。

(分数:

2.50)

 A.不合法的运算符

 B.一元运算符 √

 C.无操作数的运算符

 D.二元运算符

解析:

[解析]成员函数有隐含参数的this指针,一般是第一个操作数,并不显式出现在参数表中。

即对于单目运算符,参数表为空,对于双目运算符,参数表中有一个参数。

22.下列程序的输出结果是______。

#include<iostream.h>

voidmain()

{char*str="12123434";

intx1=0,x2=0,x3=0,x4=0,i;

for(i=0;str[i]!

="/0";i++)

switch(str[il)

{case"1":

x4++;

case"2":

x3++;

case"3":

x2++;

case"4":

x1++;

}

cout<<x1<<","<<x2<<","<<x3<<","<<x4;

}

(分数:

1.00)

 A.8,6,4,1

 B.8,6,3,2

 C.8,8,4,1

 D.8,6,4,2 √

解析:

[解析]本题考查循环的嵌套,for和switch语句的应用,C++中各种条件判断、循环语句的用法。

只要注意在C++语言中,系统在字符指针的最后位置会增加一个字符串结束符"/0",执行8次for循环,再根据switch语句中的条件易知答案。

23.关系数据库管理系统能实现的专门关系运算包括______。

(分数:

1.00)

 A.排序、索引、统计

 B.选择、投影、连接 √

 C.关联、更新、排序

 D.显示、打印、制表

解析:

[解析]关系数据库管理系统能实现的专门关系运算包括选择、投影、连接。

24.有如下程序:

#include<iostream>

usingnamespacestd;

classTestClass

{inta;

public:

TestClass(intx){a=x;}

voidshow(){cout<<a;}};

classTestClass1:

publicTcstClass

{intb;

public:

TestClass1(inti):

TestClass(i+1),b(i){)

voidshow(){cout<<b;}};

intmain()

{TestClassb(5),*p;

TestClass1d

(1);

p=&d;

p->show();

return0;}

该程序运行后的打印结果是______。

(分数:

1.00)

 A.5

 B.1

 C.0

 D.2 √

解析:

[解析]TestClass为TestClass1的基类,在主函数main中定义TestClass对象b,*p。

TestClass1对象d,p指向d,调用其show函数。

“TestClass(inti):

TestClass(i+1),b(i){}”语句中的TestClass基类参数为2,所以show输出2。

25.C++语言中在C语言的基础上增加的特性不包括______。

(分数:

1.00)

 A.结构 √

 B.引用

 C.类和对象

 D.静态成员函数

解析:

[解析]本题很简单,不过考生要注意引用是C++的新特性。

只有结构是C语言也有的特性。

26.有如下类声明:

classFoo{intbar;};

则Foo类的成员bar是______。

(分数:

2.00)

 A.公有数据成员

 B.公有成员函数

 C.私有数据成员 √

 D.私有成员函数

解析:

[解析]此题考查的是类的定义。

在定义类的成员变量时,如果没有使用关键字;所有成员默认定义为private私有权限。

27.在C++中,cin是个______。

(分数:

2.50)

 A..类

 B.对象 √

 C.模板

 D.函数

解析:

[解析]C++流有4个预定义的流对象:

cin、cout、cerr和clog。

cin:

标准输入;cout:

标准输出;

cerr:

标准出错信息输出;clog:

带缓冲的标准出错信息输出。

28.下列符号中不属于C++关键字的是______。

(分数:

2.00)

 A.friend

 B.namespace

 C.continue

 D.byte √

解析:

29.下列程序的运行结果为

#include<iostream.h>

template<classTT>

classFF

{TTa1,a2,a3;

public:

FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}

TTSum(){returna1+a2+a3;}};

voidmain()

{FF<int>x(int(1.1),2,3),y(int(4.2),5,6);

cout<<x.Sum()<<""<<y.Sum()<<endl;}

(分数:

2.00)

 A.6.115.2

 B.615 √

 C.615.2

 D.6.115

解析:

[解析]本题考查模板函数的应用,表达式int(1.1)和int(4.2)是将1.1和4.2强制转换为整型。

30.字面常量42、4.2、42L的数据类型分别是______。

(分数:

1.00)

 A.long、double、int

 B.long、float、int

 C.int、double、long √

 D.int、float、long

解析:

[解析]本题考查整型变量的类型和浮点变量的类型,42默认为int型数据,42后面加上L后,表示long型数据,4.2默认为double型数据。

31.有如下程序

#include<iostream>

usingnamespacestd;

classbase

{

public:

virtualvoidf1()

{

cout<<"F1Base";

}

virtualvoidf2()

{

cout<<"F2Base";

}

};

classderive:

publicbase

{

voidf1()

{

cout<<"F1Derive";

}

voidf2(intx)

{

cout<<"F2Derive";

}

};

intmain()

{

baseobj1,*p;

deriveobj2;

p=&obj2;

p->f1();

p->f2();

return0;

}

执行后的输出结果是____。

(分数:

2.00)

 A.F1DeriveF2Base √

 B.F1DeriveF2Derive

 C.F1BaseF2Base

 D.F1BaseF2Derive

解析:

32.重载输入流运算符“>>”必须使用的原型为______。

(分数:

2.50)

 A.istream&operator>>(istream&,<类名>&); √

 B.istream&operator>>(istream,<类名>);

 C.istreamoperator>>(istream,<类名>&);

 D.<类名>operator>>(istream&,<类名>&);

解析:

[解析]C++流的输入运算符“>>”和输出运算符“<<”只能作为非成员函数重载。

重载输入流运算符“>>”须使用以下原型:

istream&operator>>(istream&,<类名>&);。

33.对下列二叉树

进行中序遍历的结果是______。

(分数:

1.00)

 A.ACBDFEG √

 B.ACBDFGE

 C.ABDCGEF

 D.FCADBEG

解析:

[解析]二叉树的遍历有三种:

前序、中序和后序。

中序遍历首先遍历左子树或左子结点,然后访问根结点,最后遍历右子树或右子结点,分析本题二叉树,对其进行中序遍历,结果为ACBDFEG。

34.重载输入流运算符>>必须使用的原型为______。

(分数:

1.00)

 A.istream&operator>>(istream&,<类名>&); √

 B.istream&operator>>(istream,<类名>);

 C.istreamoperator>>(istream,<类名>&);

 D.<类名>operator>>(istream&,<类名>&);

解析:

[解析]C++流的输入运算符“>>”和输出运算符“<<”只能作为非成员函数重载。

重载输入流运算符“>>”须使用的原型是istream&operator>>(istream&,<类名>&);。

35.一个栈的输入序列为1,2,3,4,下面______序列不可能是这个栈的输出序列

(分数:

2.00)

 A.1,3,2,4

 B.2,3,4,1

 C.4,3,1,2 √

 D.3,4,2,1

解析:

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

当前位置:首页 > 外语学习 > 日语学习

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

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