二级C++分类模拟283.docx
《二级C++分类模拟283.docx》由会员分享,可在线阅读,更多相关《二级C++分类模拟283.docx(22页珍藏版)》请在冰点文库上搜索。
![二级C++分类模拟283.docx](https://file1.bingdoc.com/fileroot1/2023-6/21/c927772c-af40-46f7-a0c0-4f7ee975ec47/c927772c-af40-46f7-a0c0-4f7ee975ec471.gif)
二级C++分类模拟283
二级C++分类模拟283
选择题
1、下列有关类继承的叙述中,错误的是______。
A.继承可以实现软件复用 B.虚基类可以解决由多继承产生的二义性问题
C.派生类构造函数要负责调用基类的构造函数 D.派生类没有继承基类的私有成员
2、已知在一个类体中包含如下函数原型:
VOLUMEOPERATOR-(VOLUME.const;,下列关于这个函数的叙述中,错误的是______。
A.这是运算符一的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
3、下列程序的输出结果为______。
#include<iostream.h>
voidmain()
{
char*a[]={"hello","the","world"};
char**pa=a;
pa++;
cout<<*pa<<endl;
}
A.hello B.the C.word D.hellotheworld
4、在一个长度为n的线性表中删除一个元素,最坏情况下需要移动的数据元素数目为 ( )。
A.1 B.n-1 C.n+1 D.n/2
5、若有如下语句
#include<iostream.h>
voidmain()
{
intx=3;
do{
x=x-2;
cout<<x;
}while(!
(--x));
}
则上面程序段______。
A.输出的是1 B.输出的是1和-2
C.输出的是3和0 D.是死循环
6、有如下程序:
#include<iostream>
usingnamespacestd;
classPart{
public:
Part(intx=0):
val(x){cout<<val;}
~Part(){cout<<val;)
private:
intval;
};
classWhole{
public:
Whole(intx,inty,intz=0):
p2(x),p1(y),val(z){cout<<val;}
~Whole(){cout<<val;}
private:
Partp1,p2;
intval;
};
intmain(){
Wholeobj(1,2,3);
return0;
}
程序的输出结果是______。
A.123321 B.213312 C.213 D.123123
7、如果类A被说明成类B的友元,则______。
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元
8、下列定义语句中,错误的是______。
A.intpx*; B.char*acp[10];
C.char(*pac)[10]; D.int(*p)();
9、下列叙述中正确的是
A.线性链表是线性表的链式存储结构
B.栈与队列是非线性结构
C.双向链表是非线性结构
D.只有根结点的二叉树是线性结构
10、有以下程序:
#include<iostream>
usingnamespacestd;
classA
{private:
inta;
public:
A(inti)
{a=i;}
voiddisp()
{cout<<a<<",";}};
classB
{private:
intb;
public:
B(intj)
{b=j;}
voiddisp()
{cout<<b<<",";}};
classC:
publicB,publicA
{private:
intc;
public:
c(intk):
A(k-2),B(k+2)
{ c=k;
}
voiddisp()
{
a:
:
disp();
B:
:
disp();
cout<<c<<endl;
}
};
intmain()
{
Cobj(10);
obj.disp();
return0;
}
程序执行后的输出结果是______。
A.10,10,10 B.10,12,14
C.8,10,12 D.8,12,10
11、有如下定义:
inta[5]={1,3,5,7,9},*P=a;
下列表达式中不能得到数值5的是______。
A.a[2] B.a[3] C.*(P+2) D.*P+4
12、下列各组类型声明符中,含义相同的一组是______。
A.unsignedlongint和long B.signedshortint和short
C.unsignedshort和short D.shortint和int
13、执行语句:
{cout<<setfill('*')<<setw(10)<<setfill('#')<<left<<123<<"OK"<<endl;return0;)后将输出( )。
A.123*******OK B.123#######OK
C.123********OK******** D.123#######OK########
14、以下不能正确定义二维数组的选项是( )。
A.inta[2][2]={{1},{2}}; B.inta[][2]={1,2,3,4);
C.inta[2][2]={{1},2,3}; D.inta[2][]={{1,2},{3,4}};
15、执行下面的程序段后,变量k的值为( )。
intk=3,s[2]; s[0]=k; k=s[1]*10;
A.不定值 B.33 C.30 D.10
16、已知在一个类体中包含如下函数原型:
VOLUMEoperator-(VOLUME.const;,下列关于这个函数的叙述中,错误的是______。
A.这是运算符—的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变类的任何数据成员的值
17、C++系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是______。
A.cout B.cin C.cerr D.cset
18、若已知“inta[3][7];”,则用指针表示数组a中的元素时,下列表示中错误的是______。
A.*(a+1)[5] B.*(*a+3) C.*(*(a+1)) D.*(*a[0][0]+2)
19、面向对象的开发方法中,类与对象的关系是______。
A.抽象与具体 B.具体与抽象
C.部分与整体 D.整体与部分
20、下列排序方法中,最坏情况下时间复杂度(即比较次数)低于O(n2)的是______。
A.快速排序 B.简单插入排序
C.冒泡排序 D.堆排序
21、下列程序的输出结果是( )。
#include<iostream.h>
main()
{
intm=5;
if(m++>5)
cout<<m;
elsecout<<m--;
}
A.7 B.6 C.5 D.4
22、下列关于文件流的描述中,正确的是______。
A.文件流只能完成针对磁盘文件的输入/输出
B.建立一个文件流对象时,必须同时打开一个文件
C.若输入流要打开的文件不存在,将建立一个新文件
D.若输出流要打开的文件不存在,将建立一个新文件
23、一个满二叉树其深度为4,则其叶子节点的个数为( )。
A.8 B.16 C.32 D.4
24、面向对象程序设计将数据与( )放在一起,作为一个互相依存、不可分割的整体来处理。
A.信息 B.数据抽象
C.数据隐藏 D.对数据的操作
25、在软件开发中,需求分析阶段产生的主要文档是______。
A.软件集成测试计划 B.软件详细设计说明书
C.用户手册 D.软件需求规格说明书
26、有如下程序:
#include<iostream>
usingnamespacestd;
classPublication{ //出版物类
charname[30];
public:
Publication(char*name="未知名称"){
strcpy(this->name,name);
}
constcha*getName()const{returnname;}
virtualconstchar*getType()const{return"未知类型";}
};
classBook:
publicPublication{ //书类
public:
Book(char*name):
Publication(name){}
virtualconstchar*getType()const{return"书";}
};
voidshowPublication(Publication &p){
cout<<p.gettype()<<":
"<<p.getName()<<endl;
}
intmain(){
Bookbook("精彩人生");
showPublication(book);
return0;
}
运行时的输出结果是______。
A.未知类型:
未知名称 B.未知类型:
精彩人生
C.书:
未知名称 D.书:
精彩人生
27、有如下程序:
#include<ioslreclm>
Usingnamespacestd;
classBase{
public:
Base(intx=0):
valB(x){cout<<valB;}
~Base(){cout<<valB;}
Private:
intvalB;
};
class,Derived:
publicBase{
public:
Dcrived(intx=0,inty=0):
Base(x),valD(y)
{cout<<valD;}
~Derived(){cout<<valD;}
private:
intvalD;
};
intmain(){
Derivedobj12(2,3);
return0;
}
运行时的输出结果是( ),
A.2332 B.2323
C.3232 D.3223
28、下面程序的运行结果是( )。
#include<iostream.h>
intx=5;
intfun(inta)
{
intc;
C=X*a;
retumc;
}
voidmain()
{
intx=3,a=4;
x=x+fun(a);
cout<<"x"”<<X<<endl;
}
A.x=15 B.x=17 C.x=23 D.x=25
29、运行以下程序后,如果从键盘上输入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;
}
A.2,0 B.5,0
C.4,5 D.2,5
30、下列关于运算符重载的叙述中,正确的是______。
A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参
31、有如下程序:
#include<iostream>
usingnamespacestd;
classPoint{
public:
staticintnumber;
public:
Point(){number++;}
~Point(){number--;}
};
intPoint:
:
number=0;
intmain(){
Point*ptr;
PointA,B;
{
Point*ptr_point=newPoint[3];
ptr=ptr_point;
}
PointC;
cout<<Point:
:
number<<endl;
delete[]ptr;
return0;
}
执行这个程序的输出结果是______。
A.3 B.4 C.6D.7
32、有如下说明:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是______。
A.*p+9 B.*(p+8) C.*p+=9 D.p+8
33、以下程序的输出结果是( )。
#include<iostream.h>
voidfunc(char**m)
{
++m:
cout<<*m<<end1;
}
voidmain()
{
staticchar*a[]={"MORNING","AFTERTOON","EVENING"};
char**n:
n=a;
func(n);
}
A.为空 B.MORNING
C.AFTERTOON D.EVENING
34、有如下程序:
#include<iostream>
usingnamespacestd;
classBASE{
public:
~BASE(){cout<<"BASE";}
};
classDERIVED:
publicBASE{
public:
~DERIVED(){cout<<"DERIVED";}
intmain(){DERIVEDx;return0;}
执行后的输出结果是( )。
A.BASE B.DERIVED
C.BASEDERIVED D.DERIVEDBASE
35、有如下程序:
#include<iostream>
#include<iomanip>
usingnamespacestd;
intmain(){
ints[]={123,234};
cout<<right<<setfill('*')<<setw(6);
for(inti=0;i<2;i++){cout<<s[i]<<endl;}
return0;
}
运行时的输出结果是______。
A.123
234
B.***123
234
C.***123
***234
D.***123
234***
36、有函数模板声明和一些变量定义如下:
template<classT1,classT2,classT3>T1sum(T2,T3);
doubled1,d2;
则下列调用中,错误的是______。
A.sum<double,double,double>(d1,d2);
B.sum<double,double>(d1,d2);
C.sum<double>(d1,d2);
D.sum(d1,d2);
37、有如下程序:
#include<iostream>
#include<string>
usingnamespacestd;
classInstrument{
public:
Instrument(stringt="乐器",stringn="无名"):
type(t),name(n){}
virtualstringGetType()const{return"乐器";}
virtualstringGetName()const{return"无名";}
protected:
stnngtype,name;
};
classPiano:
publicInstrument{
public:
Piano(stringn,stringt="钢琴"):
lnstrument(t,n){}
stringCetType()const{return"钢琴";}
stringGetName()const{returnname;}
};
intmain(){
Instrument*pi=newPiano("星空");
cout<<pi->GetType()<<'-'<<pi->GetName();
deletepi;
return0;
}
运行时的输出结果是______。
A.钢琴-星空 B.钢琴-无名
C.乐器-星空 D.乐器-无名
38、下列关于输入流类成员函数getline()的描述中,错误的是______。
A.该函数是用来读取键盘输入的字符串的
B.该函数读取的字符串长度是受限制的
C.该函数读取字符串时,遇到终止符便停止
D.该函数读取字符串时,可以包含空格
39、下面程序的输出结果是______。
#include<iostream>
usingnamespacestd;
intmain()
{
intn=10;
while(n>7){
n--;
cout<<n<<',';
}
cout<<endl;
}
A.10,9,8, B.9,8,7, C.10,9,8,7, D.9,8,7,6,
40、下列关于类模板的叙述中,错误的是______。
A.类模板描述的是一组类 B.可以为类模板的参数设置默认值
C.类模板的成员函数可以是函数模板 D.定义类模板时只允许有一个模板参数
答案:
选择题
1、D
[解析]3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。
2、B
[解析]本题考核运算符的重载。
题中语句为运算符一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。
3、B
[解析]本题主要考查的是指针数组和指向指针的指针之间的关系,其中a是指针数组,pa是指向指针数组行的指针,所以pa自加1相当于指向下一行。
4、B
[解析]在一般情况下,要删除第i个元素时,首先是从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置,删除结束后,线性表的长度减1。
最坏情况指的是删除线性表的第一个元素,则需要移动表中第1个元素以外所有的元素,答案为B。
5、B
[解析]do...while语句的一般格式为“do循环体语句while(表达式);”,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。
本题中,先执行x=x-2,即为1。
判断表达式的值,!
(--x)为真,x=0,继续循环。
再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。
6、B
[解析]此题考查的是类的构造与析构。
建立类的对象时,构造函数的执行顺序如下:
执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。
析