二级C++真题及答案解析.docx
《二级C++真题及答案解析.docx》由会员分享,可在线阅读,更多相关《二级C++真题及答案解析.docx(48页珍藏版)》请在冰豆网上搜索。
![二级C++真题及答案解析.docx](https://file1.bdocx.com/fileroot1/2022-11/23/c8f72310-45c2-4a30-ad85-f0f82ef5c81a/c8f72310-45c2-4a30-ad85-f0f82ef5c81a1.gif)
二级C++真题及答案解析
二级C++真题2017年9月及答案解析
(1/40)单项选择题
第1题
程序流程图中带有箭头的线段表示的是()
A.图元关系
B.数据流
C.控制流
D.调用关系
下一题
(2/40)单项选择题
第2题
结构化程序设计的基本原则不包括()
A.多态性
B.自顶向下
C.模块化
D.逐步求精
上一题下一题
(3/40)单项选择题
第3题
软件设计中模块划分应遵循的准则是()
A.低内聚低耦合
B.高内聚低耦合
C.低内聚高耦合
D.高内聚高耦合
上一题下一题
(4/40)单项选择题
第4题
在软件开发中,需求分析阶段产生的主要文档是()
A.可行性分析报告
B.软件需求规格说明书
C.概要设计说明书
D.集成测试计划
上一题下一题
(5/40)单项选择题
第5题
算法的有穷性是指()
A.算法程序的运行时间是有限的
B.算法程序所处理的数据量是有限的
C.算法程序的长度是有限的
D.算法只能被有限的用户使用
上一题下一题
(6/40)单项选择题
第6题
对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()
A.快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
上一题下一题
(7/40)单项选择题
第7题
下列关于栈的叙述正确的是()
A.栈按“先进先出”组织数据
B.栈按“先进后出”组织数据
C.只能在栈底插入数据
D.不能删除数据
上一题下一题
(8/40)单项选择题
第8题
在数据库设计中,将E-R图转换成关系数据模型的过程属于()
A.需求分析阶段
B.概念设计阶段
C.逻辑设计阶段
D.物理设计阶段
上一题下一题
(9/40)单项选择题
第9题
有三个关系R.S和T如下:
图片
由关系R和S通过运算得到关系T,则所使用的运算为()
A.并
B.自然连接
C.笛卡尔积
D.交
上一题下一题
(10/40)单项选择题
第10题
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )
A.课号,成绩
B.学号,成绩
C.学号,课号
D.学号,姓名,成绩
上一题下一题
(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题
下列关于C++预定义流对象的叙述中,正确的是( )
A.cin是C++预定义的标准输入流对象
B.cin是C++预定义的标准输入流类
C.cout是C++预定义的标准输入流对象
D.cout是C++预定义的标准输入流类
上一题下一题
(16/40)单项选择题
第16题
下列有关函数重载的叙述中,错误的是( )
A.函数重载就是用相同的函数名定义多个函数
B.重载函数的参数列表必须不同
C.重载函数的返回值类型必须不同
D.重载函数的参数可以带有默认值
上一题下一题
(17/40)单项选择题
第17题
下列有关类成员的叙述中,正确的是( )
A.友元函数是类的成员函数
B.类成员的默认访问权限是私有的
C.类成员函数必须声明为公有的
D.类的静态数据成员不能是常成员
上一题下一题
(18/40)单项选择题
第18题
下列有关类继承的叙述中,错误的是( )
A.继承可以实现软件复用
B.虚基类可以解决由多继承产生的二义性问题
C.派生类构造函数要负责调用基类的构造函数
D.派生类没有继承基类的私有成员
上一题下一题
(19/40)单项选择题
第19题
下列有关运算符重载的叙述中,正确的是( )
A.运算符重栽是多态性的一种表现
B.C++中可以通过运算符重载创造新的运算符
C.C++中所有运算符都可以作为非成员函数重载
D.重载运算符时可以改变其结合性
上一题下一题
(20/40)单项选择题
第20题
下列有关模板的叙述中,正确的是( )
A.函数模板不能含有常规形参
B.函数模板的一个实例就是一个函数定义
C.类模板的成员函数不能是模板函数
D.用类模板定义对象时,绝对不能省略模板实参
上一题下一题
(21/40)单项选择题
第21题
下列有关C++流的叙述中,错误的是( )
A.C++操作符setw设置的输出宽度永久有效
B.C++操作符endl可以实现输出的回车换行
C.处理文件I/O时,要包含头文件fstream
D.进行输入操作时,eof()函数用于检测是否到达文件尾
上一题下一题
(22/40)单项选择题
第22题
下列符号中能够作为C++标识符的是( )
A.const
B.2a
C.-shape
D.-count
上一题下一题
(23/40)单项选择题
第23题
已知枚举类型声明语句为:
enumCOLOR{WHITE,YELLOW,GREEN=5,RED,BLACK=10};
则下列说法中错误的是( )
A.枚举常量YELLOW的值为1
B.枚举常量RED的值为6
C.枚举常量BLACK的值为10
D.枚举常量WHITE的值为1
上一题下一题
(24/40)单项选择题
第24题
执行下列语句段后,输出字符“*”的个数是( )
for(inti=50;i>1;i-=2)count<´*´;
A.24
B.25
C.26
D.50
上一题下一题
(25/40)单项选择题
第25题
有如下定义:
inta[5]={1,3,5,7,9},*p=a;
下列表达式中不能得到数值5的是( )
A.a[2]
B.a[3]
C.*(p+2)
D.*p+4
上一题下一题
(26/40)单项选择题
第26题
已知函数f的原形是voidf(int*a,long&B);,变量v1、v2的定义是:
intv1;longv2;
下列调用语句中正确的是( )
A.f(v1,&v2);
B.f(v1,v2);
C.f(&v1,&v2);
D.f(&v1,v2);
上一题下一题
(27/40)单项选择题
第27题
有如下类定义:
classPoint{
private:
staticinthow_many;
};
______how_many=0;
要初始化Point类的静态成员how_many,下划线处应填入的内容是( )
A.int
B.staticint
C.intPoint:
:
D.staticintPoint
上一题下一题
(28/40)单项选择题
第28题
在下列关键字中,不能用来表示继承方式的是( )
A.private
B.static
C.public
D.protected
上一题下一题
(29/40)单项选择题
第29题
已知Value是一个类,value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原型中,正确的是( )
A.Valueoperator+(Valuev,inti);
B.Valueoperator+(Valuev=value,inti);
C.Valueoperator+(Valuev,inti=0);
D.Valueoperator+(Valuev=value,inti=0);
上一题下一题
(30/40)单项选择题
第30题
下面是一个模板声明的开始部分:
Template<typenameT>double...
由此可知( )
A.这可能是一个函数模板的声明
B.这可能是一个类模板的声明
C.这既可能是一个函数模板的声明,也可能是一个类模板的声明
D.这肯定是一个错误的模板声明
上一题下一题
(31/40)单项选择题
第31题
有如下4个语句:
①count<<´A´<<setfill(´x´)<<left<<setw(7)<<´B´<<endl;
②count<<setfill(´x´)<<left<<setw(7)<<´A´<<´B´<<endl;
③count<<´A´<<setfill(´*´)<<right<<setw(7)<<´B´<<endl;
④count<<setfill(´x´)<<right<<setw(7)<<´A´<<´B´<<endl;
其中能显示A******B的是( )
A.①和③
B.①和④
C.②和③
D.②和④
上一题下一题
(32/40)单项选择题
第32题
有如下类定义:
ClassMyClass{
intvalue;
public:
MyClass(intn):
value(n){}
intgetValue()const{returnvalue;}
};
则类MyClass的构造函数的个数是( )
A.1个
B.2个
C.3个
D.4个
上一题下一题
(33/40)单项选择题
第33题
有如下类和对象的定义:
classConstants{
public:
staticdoublegetPI(){return3.1416;}
};
Constantsconstants;
下列各组语句中,能输出3.1416的是( )
A.cout<<constants->getPI();和cout<<Constants:
:
getPI();
B.cout<<constants.getPI();和cout<<Constants.getPI();
C.cout<<constants->getPI();和cout<<Constants->getPl();
D.cout<<constants.getPI();和cout<<Constants:
:
getPI();
上一题下一题
(34/40)单项选择题
第34题
有如下程序:
#includc<iostream>
usingnamespacestd;
classVAC{
public:
intf()const{return3;}
intf(){return5;}
};
intmain(){
VACv1;
constVACv2;
cout<<v1.f()<<v2.f();
return0;
}
运行时的输出结果是( )
A.53
B.35
C.55
D.33
上一题下一题
(35/40)单项选择题
第35题
有如下类的声明:
classBase{
protected:
intamount;
public:
Base(intn=0):
amount(n){}
intgetAmount()const{returnamount;}
};
classDerived:
publicBase{
protected:
intvalue
public:
Derived(intm,intn):
value(m),Base(n){}
intgetData()const{returnvalue+amount;}
};
已知x是一个Derived对象,则下列表达式中正确的是( )
A.x.value+x.getAmount()
B.x.getData()-x.getAmount()
C.x.getData()-x.amount
D.x.value+x.amount
上一题下一题
(36/40)单项选择题
第36题
有如下程序:
#include<iostream>
usingnamespacestd;
classBase{
intx;
public:
Base(intn=0):
x(n){cout<<n;)
intgetX()const{returnx;}
};
classDerived:
publicBase{
inty;
public:
Derived(intm,intn):
y(m,)Base(n){cout<<m;}
Derived(intm):
y(m){cout<<m;}
};
intmain(){
Derivedd1(3),d2(5,7)
return0;
}
运行时的输出结果是( )
A.375
B.357
C.0375
D.0357
上一题下一题
(37/40)单项选择题
第37题
下列有关抽象类和纯虚函数的叙述中,错误的是
A.拥有纯虚函数的类是抽象类,不能用来定义对象
B.抽象类的派生类若不实现纯虚函数,它也是抽象类
C.纯虚函数的声明以“=0;”结束
D.纯虚函数都不能有函数体
上一题下一题
(38/40)单项选择题
第38题
有如下程序:
#include<iostream>
usingnamespacestd;
classAmount{
intamount;
public:
Amount(intn=0):
amount(n){}
intgetAmount()const{returnamount;}
Amount&operator9=(Amounta){
amount+=
A.amount;
return______;
}
};
intmain(){
Amountx(3),y(7);
x+=y,
cout<<x.getAmount()<<endl;
return0;
}
已知程序的运行结果是10,则下划线处缺失的表达式是( )
[A].*this
B.this
C.&amount
D.amount
上一题下一题
(39/40)单项选择题
第39题
下列语句分别是不同程序中的第一个输入输出语句。
若去掉其中的“<<left”,输出效果将发生变化的是( )
A.cout<<left<<setfill(´*´)<<357;
B.cout<<left<<setw(5)<<357;
C.cout<<left<<setw(5)<<"ABCDE";
D.cout<<left<<"ABCDE";
上一题下一题
(40/40)单项选择题
第40题
有如下程序
#include<iostream>
usingnamespacestd;
classGA{
public:
virtualintf(){return1;}
};
classGB:
publicGA{
public:
virtualintf(){return2;}
};
voidshow(GAg){cout<<g.f();}
voiddisplay(GA&g){cout<<g.f();}
intmain(){
GAa;show(A);display(A);
GBb;show(B);display(B);
return0;
}
运行时的输出结果是( )
A.1111
B.1211
C.1112
D.1212
上一题下一题
(1/1)基本操作题
第41题
使用VC6打开考生文件夹proj1下的工程proj1,其中有“沙发”类Sofa和主函数main的定义。
程序中位于每个//ERROR**********found**********下的语句行有错误,请加以更正。
更正后程序的输出应该是:
座位数:
3
颜色:
红色
注意:
只能修改每个//ERROR**********found**********下的那一行,不要改动程序中的其他内容。
#include<iostream>
usingnamespacestd;
classSofa{ //“沙发”类
intseats; //座位数
charcolor[10]; //颜色
public:
//ERROR******found******
Sofa(ints,constchar*co)
{
//ERROR******found******
if(co=NULL)
color[0]=´\0´;
else
strcpy(color,co);
}
//ERROR******found******
constchar*getSeats()const{returnseats;}
constchar*getColor()const{returncolor;}
};
intmain(){
Sofasafa(3);
cout<<"座位数:
"<<sara.getSeats()<<endl;
cout<<"颜色:
"<<sara.getColor()<<endl;
return0;
}_______
上一题下一题
(1/1)简单应用题
第42题
使用VC6打开考生文件夹proj2下的工程proj2,其中有元素类Element和队列类Queue的定义。
请在程序中的横线处填写适当的代码,然后删除横线,以实现上述类定义。
此程序的输出结果应为:
3850
507
注意:
只能在横线处填写适当的代码,不要改动程序中的其他内容。
#include<iostream>
#include<cmath>
#include<cstdlib>
usingnamespacestd;
#defineMaxLength100
classElement{ //"元素"类
public:
intn;
Element(inti=0):
n(i){}
};
classQueue{ //"队列"类
Element{*element; //指向存储元素的数组的指针
inttail; //队尾元素的下标
public:
Queue():
element(newElement[100]),tail(-1){}
~Queue(){delete[]element;}
voidpush(Elementele); //在队列尾端添加一个元素
Elementpop(); //在队列首端删除一个元素,返回被删元素
Elementfront()const{returnelement[0];) //返回队首元素,但不从队列中删除该元素
//******found******
intsize()const{return(______);)//返回元素个数
voidshow()const; //显示集合中所有元素
};
voidQueue:
:
push(Elementele){
if(tail==MaxLength-1)
return; //空间满,不做任何处理
//******found******
______;
}
ElementQueue:
:
pop(){
if(size()==0)exit
(1); //队列空,不做任何处理
Elementtmp=element[0];
for(inti=0;i<tail;i++)
element[i]=element[i+1];
//******found******
______;
returntmp;
}
voidQueue:
:
show()const{
//******found******
for(______)
cout<<element[i].n<<´´;
cout<<endl;
}
intmain(){
Queueq;
q.push(3);
q.push(8);
q.push(5);
q.push(0);
q.show();
q.pop();
q.pop();
q.push(7);
q.show();
return0;
}_______
上一题下一题
(1/1)综合应用题
第43题
使用VC6打开考生文件夹proj3下的工程proj3,其中声明了MyString类,它是一个用于表示字符串的