二级C++真题及答案解析.docx
《二级C++真题及答案解析.docx》由会员分享,可在线阅读,更多相关《二级C++真题及答案解析.docx(55页珍藏版)》请在冰豆网上搜索。
二级C++真题及答案解析
二级C++真题2015年9月及答案解析
(1/40)单项选择题
第1题
有如下程序:
#include<iostroam>
usingnamespacestd;
classBase{
protected:
Base(){cout<<’A’;}
Base(charC){cout<<c;}
};
classDerived:
publicBase{
public:
Derived(charC){tout<<C;}
};
intmain(){
Deriveddl(’B’);
retum0;
}
执行这个程序的输出结果是( )。
A.B
B.BA
C.AB
D.BB
下一题
(2/40)单项选择题
第2题
下列符号中能够作为C++标识符的是( )。
A.Coflst
B.2a
C._shape
D..Count
上一题下一题
(3/40)单项选择题
第3题
有如下程序:
#include<iostream>
usingnamespacestd;
classBase
{
private:
voidfunl()const{tout<<”funl”;}
protected:
voidfun2()const{tout<<”fun2”;}
public:
voidfun3()const{cout<<”fhll3”;}
};
classDerived:
protectedBase
{
public:
voidfhn4()const{cout<<”filn4”;}
};
intmain()
{
Derivedobj;
obj.funl();//①
obj.fun2();//②
obj.furd();//③
obj.fun4();//④
returnU:
}
其中有语法错误的语句是( )。
A.①②③④
B.①②③
C.②③④
D.①④
上一题下一题
(4/40)单项选择题
第4题
有如下程序:
#include<iostream>
usingnamespacestd;
classInstrument{
public:
virtualvoidDisplay()=0;
};
classPian0:
publicInstrument}
public:
voidDisplay(){/*函数体略*">
};
intmain(){
InstrumentS;
Instrument*P=0:
//…;
return0;
}
下列叙述中正确的是( )。
A.语句“Insturment*P=0;”编译时出错
B.语句“Instnunents;”编译时出错
C.类Pian0中的Display函数不是虚函数
D.类Instrument是一个虚基类
上一题下一题
(5/40)单项选择题
第5题
如下函数模板:
template<ClassT>Tsquare(Tx){returnx*x;}其中T是( )。
A.函数形参
B.函数实参
C.模板形参
D.模板实参
上一题下一题
(6/40)单项选择题
第6题
为了提高函数调用的实际运行速度,可以将较简单的函数定义为( )。
A.内联函数
B.重载函数
C.递归函数
D.函数模板
上一题下一题
(7/40)单项选择题
第7题
有如下程序:
#inClude<iostream>usingnamespaCestd;ClassPoint{
publiC:
statiCintnumber;
publiC:
Point( )t.number++;}~Point( ){number--;}
};,intP0int:
:
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.6
D.7
上一题下一题
(8/40)单项选择题
第8题
有三个关系R、S和T如下.
图片
由关系R和s通过运算得到关系T,则所使用的运算为( )。
A.并
B.自然连接
C.笛卡尔积
D.交
上一题下一题
(9/40)单项选择题
第9题
下列符号中,正确的c++标识符是( )。
A.enum
B.2b
C.f00-9
D._32
上一题下一题
(10/40)单项选择题
第10题
下列关于C++预定义流对象的叙述中,正确的是( )。
A.Cin是C++预定义的标准输入流对象
B.Cin是C++预定义的标准输入流类
C.Cout是C++预定义的标准输入流对象
D.Cout是C++预定义的标准输入流类
上一题下一题
(11/40)单项选择题
第11题
下列情况中,不会调用拷贝构造函数的是( )。
A.用一个对象去初始化同一类的另一个新对象时
B.将类的一个对象赋值给该类的另一个对象时
C.函数的形参是类的对象,调用函数进行形参和实参结合时
D.函数的返回值是类的对象,函数执行返回调用时
上一题下一题
(12/40)单项选择题
第12题
下列叙述中正确的是( )。
A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的
B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构
C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构
D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性
上一题下一题
(13/40)单项选择题
第13题
类的析构函数的作用是( )。
A.一般成员函数的初始化
B.类的初始化
C.对象的初始化
D.删除类创建的对象
上一题下一题
(14/40)单项选择题
第14题
下列运算符不能重载为友元函数的是( )。
A.=()()->
B.+-++--
C.><>=<=
D.+=-=*=/=
上一题下一题
(15/40)单项选择题
第15题
下面关于运算符重载的描述错误的是( )。
A.运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构
B.不是所有的运算符都可以进行重载
C.运算符函数的调用必须使用关键字operat。
D.在C+十语言中不可通过运算符重载创造出新的运算符
上一题下一题
(16/40)单项选择题
第16题
当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
A.ios:
:
in
B.ios:
:
0ut
C.ios:
:
inIios:
:
0ut
D.以上都不对
上一题下一题
(17/40)单项选择题
第17题
由于常对象不能被更新,因此( )。
A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
上一题下一题
(18/40)单项选择题
第18题
支持子程序调用的数据结构是( )。
A.栈
B.树
C.队列
D.二叉树
上一题下一题
(19/40)单项选择题
第19题
有如下类定义:
classB
{
public:
voidfunl(){}
private:
voidfun2(){}
protected:
voidfun3(){}
};
classD:
publicB
j
protected:
voidfun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。
A.obj.fun1();
B.obj.fun2();
C.obj.tim3();
D.ohj.fun4();
上一题下一题
(20/40)单项选择题
第20题
有如下语句序列:
Charstr[10];Cin>>str;
当从键盘输入“Ilovethisgame”时,str中的字符串是( )。
A.”Ilovethisgame”
B.”Ilovethi”
C.”Ilove”
D.”I”
上一题下一题
(21/40)单项选择题
第21题
继承机制的作用是( )。
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象
上一题下一题
(22/40)单项选择题
第22题
模板对类型的参数化提供了很好的支持,因此( )。
A.类模板的主要作用是生成抽象类
B.类模板实例化时,编译器将根据给出的模板实参生成一个类
C.在类模板中的数据成员都具有同样类型
D.类模板中的成员函数都没有返回值
上一题下一题
(23/40)单项选择题
第23题
if语句的语法格式可描述为:
格式l:
if(<条件>)<语句>
或
格式2:
if(<条件>)<语句l>
else<语句2>
关于上面的语法格式,下列表述中错误的是( )。
A.<条件>部分可以是一个if语句,例如if(if(a==0)…)…
B.<语句>部分可以是一个if语句,例如if(…)if(…)…
C.如果在<条件>前加上逻辑非运算符!
并交换<语句l>和<语句2>的位置,语句功能不变
D.<语句>部分可以是一个循环语句,例如if(…)while(…)…
上一题下一题
(24/40)单项选择题
第24题
下面的程序中,错误的语句是( )。
①#inClude<iostream.h>
②voidmain()
③{
④int*p=newint[1];
⑧P=9;
⑥cout<<.*P<<endl;
⑦delete[]p;
⑧}
A.④
B.⑤
C.⑥
D.⑦
上一题下一题
(25/40)单项选择题
第25题
下面有关for循环的正确描述是( )。
A.for循环只能用于循环次数已经确定的情况
B.for循环是先执行循环体语句,后判断表达式
C.在for循环中,不能用break语句跳出循环体
D.在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
上一题下一题
(26/40)单项选择题
第26题
下列叙述中正确的是( )。
A.算法就是程序
B.设计算法时只需要考虑数据结构的设计
C.设计算法时只需要考虑结果的可靠性
D.以上三种说法都不对
上一题下一题
(27/40)单项选择题
第27题
由于常对象不能被更新,因此( )。
A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
上一题下一题
(28/40)单项选择题
第28题
有如下程序:
#include<iostream>
usingnamespacestd;
classMyClass{
public:
MyClass(){cout<<’A’;}
MyClass(charC.{cout<<C;}
~MyClass(){cout<<’B’;}
};
intmain(){
MyClasspl,+p2;
p2=newMyClass(’X’);
deletep2;
return0;
}
执行这个程序的输出结果是( )。
A.ABX
B.ABXB
C.AXB
D.AXBB
上一题下一题
(29/40)单项选择题
第29题
有如下程序:
#include<iostream>
usingnamespacestd;
classPair{
intm,n;
public:
Pair(intj,intk):
m(j),n(k){}
intget(){returnm;}
intget()const{returnm+n;}
};
intmain(){
Paira(3,5);
constPairb(3,5);
tout<<a.get()’<<b.get();
returnU:
}
执行这个程序的输出结果是( )。
A.33
B.38
C.83
D.88
上一题下一题
(30/40)单项选择题
第30题
执行下列语句段后,输出字符“*”的个数是( )。
for(inti=50;i>1;--i)Cout<<'*':
A.48
B.49
C.50
D.51
上一题下一题
(31/40)单项选择题
第31题
有三个关系R、S和T如下:
图片
则由关系R和S得到关系T的操作是( )。
A.自然连接
B.交
C.投影
D.并
上一题下一题
(32/40)单项选择题
第32题
软件测试的目的是( )。
A.评估软件可靠性
B.发现并改正程序中的错误
C.改正程序中的错误
D.发现程序中的错误
上一题下一题
(33/40)单项选择题
第33题
软件设计中划分模块的一个准则是( )。
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D.高内聚高耦合
上一题下一题
(34/40)单项选择题
第34题
下列数据结构中,能够按照“先进后出”原则存取数据的是( )。
A.循环队列
B.栈
C.队列
D.二叉树
上一题下一题
(35/40)单项选择题
第35题
有如下程序:
#inClude<iostream>usingnamespaCestd;ClassBase{
publiC:
Base(intx=0){Cout<<x;}};
ClassDerived:
publiCBase{publiC:
Derived(intX=0){Cout<<x;}private:
Baseval;};
intmain(){
Derivedd
(1);return0;
}
执行这个程序的输出结果是( )。
A.0
B.1
C.01
D.001
上一题下一题
(36/40)单项选择题
第36题
已知Value是一个类,value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原型中,正确的是( )。
A.Valueoperator+(Valuev,inti);
B.Valueoperator+(Valuev=value,inti);
C.Valueoperator+(Valuev,inl:
i=0);
D.Valueoperator+(Valuev=vallle,inti=0);
上一题下一题
(37/40)单项选择题
第37题
有如下程序段:
inti=0,J=1;
nt&r=i;//④’r=j;//②
int*P=&i;//③*P=&r;//④
其中会产生编译错误的语句是( )。
A.④
B.③
C.②
D.①
上一题下一题
(38/40)单项选择题
第38题
有如下程序:
﹟nclude<iostream>
usingnamespacestd;
intmain()
{
int*P;
*P=9:
cout<<”Thevalueatp:
”<<*p;
return0;
}
编译运行程序将出现的情况是( )。
A.编译时出现语法错误,不能生成可执行文件
B.运行时一定输出:
l'llevalueatP:
9
C.运行时一定输出:
lllevalueatP:
*9
D.运行时有可能出错
上一题下一题
(39/40)单项选择题
第39题
在软件设计中不使用的工具是( )。
A.系统结构图
B.PAD图
C.数据流图(DFD图)
D.程序流程图
上一题下一题
(40/40)单项选择题
第40题
C++中的模板包括( )。
A.对象模板和函数模板
B.对象模板和类模板
C.函数模板和类模板
D.变量模板和对象模板
上一题下一题
(1/1)基本操作题
第41题
请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,此工程中包含一个源程序文件main.cpp,其中有类Book(“书”)和主函数main的定义。
程序中位于每个“//ERROR****found****”下的语句行有错误,请加以改正。
改正后程序的输出结果应该是:
书名:
C++语句程序设计总页数:
299
已把“c++语言程序设计”翻到第50页
已把“c++语言程序设计”翻到第51页
已把“c++语言程序设计”翻到第52页
已把“c++语言程序设计”翻到第51页
已把书合上。
当前页:
0
注意:
只修改每个“//ERROR***found***”下的那一行,不要改动程序中的其他内容。
#include<iostream>
usingnamespacestd;
classBook{
char*title;
intnum—pages;//页数
intcur_page;//当前打开页面的页码,0表示书未打开
public:
//ERROR***********found***********
Book(constchar*theTitle,intpages)num_pages(pages)
{
title=newchar[strlen(theTitle)+1];
strepy(title,theTitle);
cout<<endl<<”书名:
”<<title
<<”总页数:
”<<num_pages;
}
~Book(){delete[]title;}
boolisClosed()const{returncur_page==0;}//书合上时返回true,否则返回false
boolisOpen()const{return!
isClosed();}//书打开时返回true,否则返回false
intnumOfPages()const{returnnum_pages;}//返回书的页数
intcurrentPage()const{returncur_page;}//返回打开页面的页码
//ERROR***********found***********
voidopenAtPage(intpage_no)const{//把书翻到指定页
cout<<endl:
i“page_no<lJjpage_no>hum_pages){
tOUt<<”无法翻到第”<<curpage<<”页。
”;
ClOSe();
}
else{
cur_page=page_n0;
tout<<”已把“"<<tide<<"”翻到第"<<curpage<<“页”;
}
}
voidopenAtPrevPage(){openAtPage(curpage—1);{//把书翻到上一页
voidopenAtNextPage(){openAtPage(cur_page+1);}//把书翻到下一页
voidclose(){//把书合上
tout<<endl:
if(isClosed())
tout<<"书是合上的。
";
else{
//ERROR**********found**********
num_pages=0;
cout<<”已把书合上。
”;
}
cOut<<endl:
}
};
intmain(){
Bookbook(”C++语言程序设计”,299);
book.openAtPage(50);
book.openAtNextPage();
book.openAtNextPage();
book.openA.tPrevPage();
book.close();
tout<<”当前页:
”<<book.currentPage()<<endl;
return0:
}
上一题下一题
(1/1)简单应用题
第42题
请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中包含一个程序文件main.cpp,其中有日期类Date、人员类Person及排序函数sortByName和主函数main的定义。
请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义和函数定义。
此程序的正确输出结果应为:
按姓名排序
排序前:
张三男出生日期:
1978年4月20日
王五女出生日期:
1965年8月3日
杨六女出生日期:
1965年9月5日
李四男出生日期:
1973年5月30日
排序后:
李四男出生日期:
1973年5月30日
王五女出生日期:
1965年8月3日
杨六女出生日期:
1965年9月5日
张三男出生日期:
1978年4月20日
注意:
只能在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include<iostream>
usingnamespacestd;
classDate{//日期类
intyear,month,day;//年、月、日
public:
Date(intyear,intmonth,intday):
year(year),month(month),day(day){}
intgetYear()const{returnyear;}
intgetMonth()const{returnmonth;}
intgetDay()const{returnday;}
};
classPerson{//人员类
charname[14];//姓名
boolis—male;//性别,为true时表示男性
Datebirth—date;//出生日期
public:
Person(char*name,boolis—male,Datebirth_date)
//***************found***************
:
——————
{
{
strcpy