历年全国计算机等级考试二级C++真题及答案10年12年.docx
《历年全国计算机等级考试二级C++真题及答案10年12年.docx》由会员分享,可在线阅读,更多相关《历年全国计算机等级考试二级C++真题及答案10年12年.docx(91页珍藏版)》请在冰豆网上搜索。
历年全国计算机等级考试二级C++真题及答案10年12年
历年全国计算机等级考试二级C++真题及答案(最新)
2012年9月全国计算机等级考试二级C++笔试试卷
C++语言程序设计
(考试时间90分钟,满分100分)
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列链表种,其逻辑结构属于非线性结构的是
A)循环链表B)双向链表C)带链的栈D)二叉链表
(2)设循环队列的存储空间为Q(1:
35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为
A)16B)20C)0或35D)15
(3)下列关于栈的叙述中,正确的是
A)栈顶元素一定是最先入栈的元素B)栈操作遵循先进后出的原则
C)栈底元素一定是最后入栈的元素D)以上三种说法都不对
(4)在关系数据库中,用来表示实体间联系的是
A)二维表B)树状结构C)属性D)网状结构
(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是
A)m:
1联系B)1:
m联系C)1:
1联系D)m:
n联系
(6)有两个关系R和S如下:
R
S
A
B
C
A
B
C
a
1
2
c
3
1
b
2
1
c
3
1
则由关系R得到关系S的操作是
A)自然连接B)选择C)并D)投影
(7)数据字典(DD)所定义的对象都包含于
A)程序流程图B)数据流图(DFD图)C)方框图D)软件结构图
(8)软件需求规格说明书的作用不包括
A)软件可行性研究的依据B)用户与开发人员对软件要做什么的共同理解
C)软件验收的依据D)软件设计的依据
(9)下面属于黑盒测试方法的是
A)逻辑覆盖B)语句覆盖C)路径覆盖D)边界值分析
(10)下面不属于软件设计阶段任务的是
A)数据库设计B)算法设计
C)软件总体设计D)制定软件确认测试计划
(11)下列关于函数重载的叙述中,错误的是
A)重载函数的参数个数可以不同
B)重载函数的参数类型可以不同
C)重载函数的返回值类型必须不同
D)重载函数的参数个数或参数类型必须有所不同
(12)下列关于类成员对象构造函数调用顺序的叙述中,正确的是
A)与它们在初始化列表中顺序相同
B)与它们在类中声明的顺序相同
C)与析构函数的调用顺序相同
D)顺序不确定
(13)下列关于派生类的叙述中,错误的是
A)派生类至少要有一个基类
B)派生类中包括了从基类继承的成员
C)一个派生类可以作为另一个派生类的基类
D)基类成员被派生类继承以后访问权限保持不变
(14)下列关于运算符重载的叙述中,正确的是
A)通过运算符重载机制可以为C++语言扩充新的运算符
B)运算符重载的作用是使已有的运算符作用于类的对象
C)重载运算符的操作数类型可以全部为基本类型
D)所有运算符都可以重载
(15)下列关于模板的叙述中,错误的是
A)调用模板函数时,有时可以省略模板实参
B)函数模板的每个实例就是一个函数定义
C)类模板的每个实例就是一个类定义
D)类模板的实例是一个类对象
(16)下列关于输入输出流的叙述中,正确的是
A)一个文件流可以与一个数据文件相联系
B)cin是专门从键盘输入数据的输入流类
C)流运算符<<用来从输入流中读取数据
D)宽度设置的效果永久有效
(17)下列选项中可以做C++标识符的是
A)_256B)fat/pigC)deleteD)5char
(18)关键字unsigned不能修饰的类型是
A)charB)intC)floatD)longint
(19)有如下程序:
#include
usingnamespacestd;
intmain(){
chara;
cin>>a;
if(a='*')cout<<"***"<elsecout<<"###"<return0;
}
A)***B)###C)***###D)无输出
(20)下列对一维数组a的定义中,语法正确的是
A)inta(10)B)intn=7,a[n];C)intn;cin>>n;inta[n];D)constintsize=10;inta[size];
(21)假设函数fun已经定义,其原型为”voidfun(inta,intb=7,char*p=”**”);”,下列函数调用中错误的是
A)fun(5)B)fun(5,8)C)fun(6,”##”)D)fun(0,0.”==”)
(22)已经函数print()没有返回值,如果在类中将之声明为常成员函数,正确的是
A)voidprint()const;B)constvoidprint();C)voidconstprint();D)voidprint(const);
(23)已知基类Employees只有一个构造函数,其定义如下:
Employee:
:
Employee(intn):
id(n){}
Manager是Employees的派生类,则下列对Manager的构造函数的定义中,正确的是
A)Manager:
:
Manager(intn):
id(n){}
B)Manager:
:
Manager(intn){id=n;}
C)Manager:
:
Manager(intn):
Employee(n){}
D)Manager:
:
Manager(intn){Employee(n);}
(24)已知将运算符“+”和“*”作为类Complete的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于
A)c1.operator*(c2.operator+(c1))B)c1.operator+(c2.operator*(c1))
C)c1.operator*(c1.operator+(c2))D)c2.operator+(c1.operator*(c1))
(25)下列类模板的定义中语法格式错误的是
A)templateclassBuffer{/*…*/};
B)templateclassBuffer{/*…*/};
C)templateclassBuffer{/*…*/};
D)templateclassBuffer{/*…*/};
(26)在C++中既可以用于文件输入又可以用于文件输出的流类是
A)fstreamB)ifstreamC)ofstreamD)iostream
(27)有如下类定义:
classMyClass{
intb;chara;doublec;
public:
MyClass():
c(0.0),b(0),a(','){}
};
创建这个类的对象时,数据成员的初始化顺序是
A)a,b,cB)c,b,aC)b,a,cD)c,a,b
(28)有如下类定义
classMyClass{
intx;
public:
MyClass():
x(0),y(0){}
intGetX(){returnx;}
voidSetX(intxx){x==xx;}
inty;
};
已知obj是类MyClass的对象,下列语句中违反类成员访问控制权限的是
A)obj.x;B)obj.y;C)obj.GetX();D)obj.SetX(0);
(29)有如下类定义
classTest{
chara;constcharb;
public:
Test(charc){a=c;b=c;}//第1行
voidf(chara)const{this->a=a;}//第2行
voidg(charb){this->b=b;}//第3行
charh()const{returna;}//第4行
};
编译时没有错误的行是
A)第1行B)第2行C)第3行D)第4行
(30)有如下程序:
#include
usingnamespacestd;
classA{
public:
A(){cout<,'A';}
~A(){cout<<'C';}
};
classB:
publicA{
public:
B(){cout<<'G';}
~B(){cout<<'T';}
};
intmain(){
Bobj;
return0;
}
运行这个程序的输出结果是
A)GATCB)AGTCC)GACTD)AGCT
(31)有如下程序:
#include
usingnamespacestd;
classBase{
public;
voidfun(){cout<<'B';}
};
classDerived:
publicBase{
public;
voidfun(){cout<<'D';}
};
intmain(){
Derivedd;
d.fun();
return0;
}
若程序的输出结果是BD,则划线处缺失的部分是
A)fun() B)Base.fun()C)Base:
:
fun()D)Base->fun()
(32)有如下程序:
#include
usingnamespacestd;
classB{
public;
virtualvoidf(){cout<<"B";}
voidg(){cout<<"B";}
}
classD;publicB{
public;
voidf(){cout<<"D";}
voidg(){coun<<"D";}
}
voidh(B*p){p->f();p->g();}
intmain(){
Dobj;
h(&obj);
return0;
}
运行这个程序的输出结果是:
A)DDB)BBC)BDD)DB
(33)有如下程序:
#include
#include
usingnamespacestd;
classMyString{
public;
charstr[80];
MyString(constchar*s){strcpy(str,s);}
MyString&operator+=(MyStringa){
strcat(str,a.str);
return*this;
}
};
ostream&operator<<(ostream&s,constMyString&z){returns<intmain(){
MyStringx("abc"),y("cde");
cout<<(x+=y)<return0;
}
运行这个程序的输出结果是
A)abcB)cdeC)abcdeD)abccde
(34)有如下程序:
#include
#include
usingnamespacestd;
intmain(){
cout<return0;
}
A)##OK123B)##OK#123C)OK##123D) OK##123#
(35)有如下语句序列:
ifstreaminfile("DATA.DAT");
if(infile.good())cout<<"A";
else{
cout<<"B";
ofstreamoutfile("DATA.DAT");
if(outfile.fail())cout<<"C";elsecout<<"D";
}
若执行这个语句序列显示的是BD,则说明文件DATA.DAT
A)以读方式打开成功
B)以读方式打开失败,但以写方式打开成功
C)以读方式打开失败,以写方式打开也失败
D)以读方式打开成功,以写方式打开也成功
二、填空题(每空2分,共30分)
请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。
注意:
以命令关键字填空的必须拼写完整
(1)一棵二叉树共有47个结点,其中有23个度为2的结点,假设根结点在底1层,则该二叉树的深度为【1】。
(2)设栈的存储空间为S(1:
40),初始状态为bottom=0,top=0,现经过一系列入栈与出栈运算后,top=20,则当前栈中有【2】个元素。
(3)数据独立性分为逻辑独立性和物理独立性。
当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为【3】。
(4)关系数据库中能实现的专门关系运算包括【4】、连接和投影。
(5)软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件),Unix操作系统属于【5】软件。
(6)若有定义语句“intx=10;”,则表达式“x<=10?
20:
30”的值为【6】。
(7)下列语句的作用是计算正整数n的各位数字之和,例如:
n=123,sum=1+2+3,请将下列语句补充完整。
do{
sum+=;
n=n/10;
}while(n1=0)
(8)有如下程序:
#include
usingnamespacestd;
voidfun(int&x,inty){
y=y+x;
x=y/4;
x++;
}
intmain(){
intx=4,y=5;
fun(x,y);
cout<return0;
}
运行这个程序的输出结果是【8】。
(9)有如下程序:
#include
usingnamespacestd;
classA{
pubic;
A(){cout<<1;}
A(constA&){cout<<2;}
-A(){cout<<3;}
};
intmain(){
Aobj1;
Aobj2(obj1);
return0;
}
运行这个程序的输出结果是【9】。
(10)若下列程序的输出结果是20,请将横线处缺失部分补充完整。
#include
usingnamespacestd;
classMyClass{
pubic;
MyClass(intx=)10:
value(x){}
voidSetValue(intx){value=x;cout<private;
intvalue;
};
intmain(){
MyClass*ptr=newMyClass;
【10】//通过对象指针ptr调用SetValue函数
deleteptr;
return0;
}
(11)有下列程序的输出结果是2334,请将横线处缺失部分补充完整。
#include
usingnamespacestd;
classBase{
intm;
pubic;
Base(intk):
m(k){}
intgetM()const{returnm;}
}
classDerived:
publicBase{
intn;
public;
Derived(intk):
【11】,n(k){}
intgetN()const{returnn;}
}
intmain(){
Derivedd1(3),d2(4);
cout<return0;
}
(12)在C++中,编译时的多态性是通过模板或函数【12】实现的。
(13)有些运算符既可以作为成员函数重载,也可以作为非成员函数重载。
若在一个重载的运算符函数的定义中成功地使用了this指针,说明它是作为【13】重载的。
(14)有如下程序:
#include
usingnamespacestd;
template
TAdd(Tv1,Tv2){returnv1+v2;}
intmain(){
cout<return0;
}
运行这个程序的输出结果是【14】。
(15)有如下程序:
#include
usingnamespacestd;
classPoint{
doublex,y;
public;
Point(doublexx=0.0,doubleyy=0.0):
x(xx),y(yy){}
doublegetX()const{returnx;}
doublegetY()const{returny;}
voidshow()const{cout<<'('<}
classLine{
Pointp1,p2;
public;
Line(Pointpp1,Pointpp2):
p1(pp1),p2(pp2){}
PointLeftMost()const{
if(p1.getX()<=P2.getX())returnp1;
returnp2;
}
}
intmain(){
Lineline(Point(3.1,5.2),Point(8.2,4.4));
line.LeftMost().show();
return0;
}
运行这个程序的输出结果是【15】。
2012年9月全国计算机等级考试二级笔试C++答案
一、选择题答案
1-5)DCBAB
6-10)BBADD
11-15)CBDBC
16-20)AAABD
21-25)CACBD
26-30)ABACB
31-35)CDDAC
二、填空题答案
1、6
2、21
3、物理独立性
4、选择
5、系统
6、 20
7、 n%10
8、 8
9、1233
10、 ptr->setvalue(20);
11、base(k-1)
12、重载
13、成员函数
14、5,5.8
15、(3.1,5.2)
}
2012年3月全国计算机等级考试二级笔试试卷
VisualC++程序设计
(考试时间90分钟,满分100分)
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是
A)循环队列是队列的一种链式存储结构B)循环队列是一种逻辑结构
C)循环队列是队列的一种顺序存储结构D)循环队列是非线性结构
(2)下列叙述中正确的是
A)栈是一种先进先出的线性表B)队列是一种后进先出的线性表
C)栈与队列都是非线性结构D)以上三种说法都不对
(3)一棵二叉树共有25个结点,其中5个是叶子结点,则度为1的结点数为
A)4B)16C)10D)6
(4)在下列模式中,能够给出数据库物理存储结构与物理存取方法的是
A)逻辑模式B)概念模式C)内模式D)外模式
(5)在满足实体完整性约束的条件下
A)一个关系中可以没有候选关键字
B)一个关系中只能有一个候选关键字
C)一个关系中必须有多个候选关键字
D)一个关系中应该有一个或多个候选关键字
(6)有三个关系R、S和T如下:
R
s
t
A
B
C
A
B
C
A
B
C
a
1
2
a
1
2
b
2
1
b
2
1
d
2
1
c
3
1
c
3
1
则由关系R和S得到关系T的操作是
A)并B)差C)交D)自然连接
(7)软件生命周期的活动中不包括
A)软件维护B)需求分析C)市场调研D)软件测试
(8)下面不属于需求分析阶段任务的是
A)确定软件系统的性能需求B)确定软件系统的功能需求
C)制定软件集成测试计划D)需求规格说明书评审
(9)在黑盒测试方法中,设计测试用例的主要根据是
A)程序外部功能B)程序数据结构C)程序流程图D)程序内部结构
(10)在软件设计中不使用的工具是
A)系统结构图B)程序流程图C)PAD图D)数据流图(DFD图)
(11)若一个函数的原型为"int*Xfun1(intx,int&y,charz);",则该函数的返回值类型为
A)int*B)int
C)int&D)char
(12)若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。
如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为
A)AA.getA()B)x.getA()
C)x.aD)AA:
:
a
(13)当派生类继承一个基类时,默认的继承方式为
A)publicB)protected
C)privateD)不确定
(14)若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是
A)XVoperator*(XV,XV);
B)XV*(XV);
C)operator*(XV);
D)XVoperator*(XV);
(15)在定义函数模板或类模板时,开头的保留字是
A)typenameB)template
C)classD)typedef
(16)若需要向一个二进制文件尾部添加数据,则该文件的打开方式为
A)ios_base:
:
app
B)ios_base:
:
binary|ios_base:
:
out
C)ios_base:
:
out
D)ios_base:
:
binary|ios_base:
:
app
(17)在开发一个c++程序的整个过程中,第3个步骤为
A)链接B)运行
C)编辑D)编译