全国计算机等级考试二级 C++语言程序设计 模拟试题及答案考前必看Word格式文档下载.docx
《全国计算机等级考试二级 C++语言程序设计 模拟试题及答案考前必看Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试二级 C++语言程序设计 模拟试题及答案考前必看Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
![全国计算机等级考试二级 C++语言程序设计 模拟试题及答案考前必看Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/28/296de51a-2536-4605-8883-7ed80bb07d97/296de51a-2536-4605-8883-7ed80bb07d971.gif)
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<
iostream>
usingnamespacestd;
intmain(){
chara;
cin>
>
a;
if(a='
*'
)cout<
"
***"
endl;
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):
B)Manager:
Manager(intn){id=n;
C)Manager:
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)template<
classT>
classBuffer{/*…*/};
B)template<
typenameT>
C)template<
classT1,classT2>
D)template<
T>
(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)有如下类定义
intx;
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{
constcharb;
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)有如下程序:
classA{
A(){cout<
A'
;
~A(){cout<
'
C'
classB:
publicA{
B(){cout<
G'
~B(){cout<
T'
Bobj;
运行这个程序的输出结果是
A)GATCB)AGTCC)GACTD)AGCT
(31)有如下程序:
usingnamespacestd;
classBase{
public;
voidfun(){cout<
B'
classDerived:
publicBase{
public;
voidfun(){cout<
D'
Derivedd;
d.fun();
若程序的输出结果是BD,则划线处缺失的部分是
A)fun() B)Base.fun()C)Base:
fun()D)Base->
fun()
(32)有如下程序:
classB{
virtualvoidf(){cout<
B"
voidg(){cout<
classD;
publicB{
voidf(){cout<
D"
voidg(){coun<
}
voidh(B*p){p->
f();
p->
g();
Dobj;
h(&
obj);
运行这个程序的输出结果是:
A)DDB)BBC)BDD)DB
(33)有如下程序:
cstring>
classMyString{
charstr[80];
MyString(constchar*s){strcpy(str,s);
MyString&
operator+=(MyStringa){
strcat(str,a.str);
return*this;
ostream&
operator<
(ostream&
s,constMyString&
z){returns<
z.str}
MyStringx("
abc"
),y("
cde"
);
cout<
(x+=y)<
A)abcB)cdeC)abcdeD)abccde
(34)有如下程序:
iomanip>
cout<
setfill('
#'
)<
setw(4)<
OK"
123<
A)##OK123B)##OK#123C)OK##123D) OK##123#
(35)有如下语句序列:
ifstreaminfile("
DATA.DAT"
);
if(infile.good())cout<
A"
else{
cout<
ofstreamoutfile("
if(outfile.fail())cout<
C"
elsecout<
若执行这个语句序列显示的是BD,则说明文件DATA.DAT
A)以读方式打开成功
B)以读方式打开失败,但以写方式打开成功
C)以读方式打开失败,以写方式打开也失败
D)以读方式打开成功,以写方式打开也成功
36.关于函数中的<
返回类型>
。
下列表述中错误的是( )。
A.<
中有可能包含关键字int
B.<
中有可能包含自定义标识符
C.<
中衣可能包含字符*
D.<
中可能包含[]
37.Sample是一个类,执行下面语句后,调用Sample类的构造函数的次数是( )。
Samplea[2],*p=newSample;
A.0
B.1
C.2
D.3
38.有如下两个类定义:
classXX{
private:
doublex1;
protected:
doublex2;
public:
doublex3;
};
claseYY:
protectedXX{
doubley1;
protected;
doubley2;
doubley3;
在类YY中保护成员变量的个数是( )。
A.1
B.2
C.3
D.4
39.下列关于运算符重载的描述中,错误的是( )。
A.可以通过运算符重载在C++中创建新的运算符
B.赋值运算符只能重载为成员函数
C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象
D.重载类型转换运算符时不需要声明返回类型
40.下列关于类模板的描述中,错误的是( )。
A.类模板的成员函数都是模板函数
B.可以为类模板参数设置默认值
C.类模板描述了一组类
D.类模板中只允许有一个类型参数
二、程序改错题(18分)
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为
TC1
TC2
注意:
不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
#include structTCO
{
//********error********
virtualvoidfun();
classTCl:
publicTCO
voidfun()
cout<
TCl"
}
classTC2:
TC2"
voidmain()
TCO"
P;
TClobj1;
TC2obj2;
p=*obj1;
p->
fun();
p=*obj2;
return;
三、简单应用题(24分)
使用VC++6.0打开考生交件夹下的源程序文件2.cpp。
阅读下列函数说明和代码,完成空出部分程序。
函数fun(intN[4])的功能是用4个数字,组成互不相同且无重复数字的3位数,并将满足所有条件的数字输出到屏幕,
并且每输出一个3位数就换一行。
程序分析:
可填在百位、十位、个位的数字都是1、2、3、0。
组成所有的排列后再去掉不满足条件的排列。
如果判定第一个数字是0,则也去掉。
voidfun(intN[4])
intmain()
intN[4]={1,2,3,0};
fun(N):
return0;
四、综合应用题(18分)
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。
其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。
(1)基类People完成打印功能,定义其中的打印函数为
虚函数,请在注释1后添加适当的语句。
(2)类Boy继承于People,在构造函数中设置性别为1,
请在注释2后添加适当的语句。
(3)类Girl继承于People,在构造函数中设置性别为0,请在注释3后添加适当的语句。
(4)实现函数fun,用于传递不同的类型,打印出性别,请在注释4后添加适当的语句。
输出的内容如下:
Sex=Boy
Sex=Girl
除在指定位暨添加语句之外,请不要改动程序中的其他内容。
classPeople
//********1********
voidprint(){}
intsex;
classBoy:
publicPeople
publiC:
Boy()
//********2********}
voidprint()
Boy"
classGirl:
Girl()
//********3********}
Girl"
//********4********{
Sex="
p.print();
Boym:
fun(m);
Girln:
fun(n);
参考答案
一、选择题答案
1-5)DCBAB
6-10)BBADD
11-15)CBDBC
16-20)AAABD
21-25)CACBD
26-30)ABACB
31-35)CDDAC
36-40)BDCAD
二、程序改错题
(1)应改为“virtualvoidfun()=0;
”。
(2)应改为“p=&
obj1;
(3)应改为“p=&
obj2;
三、简单应用题
inti,j,k;
for(i=0;
i<
4;
i++)//百位循环
for(j=0;
j<
j++)//十位循环
for(k=0;
k<
k++)//个位循环
if(i!
=j&
&
j!
=k&
k!
=i&
N[i]!
=0)//
当三位数不同,并且百位不为0
四、综合应用题
(1)将“voidprint(){};
”补充完整为“virtualvoidprint(){};
(2)应添加“sex=1;
(3)应添加“sex=0;
(4)应添加“voidfun(People&
p)”。