2013年9月全国计算机等级《二级C++》命题预测试卷五
-
(1)应添加“intseta(intx)”。
(2)应添加“classTC3:publicTC1,privateTC2”。
(3)应添加“intC;”。
(4)应添加“seta(x);”。
【解析】本题第1处要求“完成类TCl的成员函数seta定义,定义seta对象X为int类型”。类的成员函数是函数的一种,它与一般函数的区别是,它是一个类的成员,出现在类体中。所以类TCl中的成员函数,就是在TCl中定义题目中要求的参数为intx的seta函数,即“intseta(intx)”。第2处要求“完成类TCl(公有)和类TC2(私有)派生类TC3的定义”。从已有的类产生一个新的子类,称为类的派生。声明派生类的一般形式为“class派生类名;[继承方式]基类名”。根据声明派生类的一般形式,这里补全“class
TC3:publicTC1,privateTC2”。第3处要求“定义类TC3中的私有成员C为int”。在类TC3中的private数据成员区域,定义intC,印在第3处补全“intC;”。第4处要求“完成setc中对基类的变量a的赋值”。基类为TCl,setc对于该类a的赋值,是intseta(intx)函数的赋值,即“seta(x);”
-
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。完成fun函数,使其功能为将两个按小到大排序的数组a和b,复制合并成一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。
注意:不能修改程序的其他部分,只能修改fun函数。
试题程序:
#include
voidfun(inta[],intn,intb[],intm,int*c)
{
}
voidmain
{
intA[]={3,5,7,9,11,18,21);
intB[]={6,15,19,21,39};
intC[25],i;
for(i=0;i<25;i++)C[i]=0;
cout<<"A[]=";
for(i=0;i<7;i++)
cout
cout<<"B[]=";
for(i=0;i<5;i++)
coul
fun(A,7,B,5,C);
cout<<"C[]=";
for(i=0;i<12;i++)
cout<
cout<
return:
}
-
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:
TC1:0
TC2
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
structTC1
{
TCl(inti=0)
{
m_i=i;
}
voidprint
{
cout<<"TCl:"<
}
intm_i;
};
classTC2
{
public:
TC2
{
}
voidprint
{
cout<<"TC2"<
}
//********error********
private:
~TC2
{
}
};
intmain
{
//********error********
TC1obj1;
//********error********
TC20bj2;
obj1.print;
obj2.print;
return0;
}
-
有如下两个类定义:
classXX{
private:
doublex1;
protected:
doublex2;
public:
doublex3;
};
claseYY:protectedXX{
private:
doubley1;
protected;
doubley2;
public:
doubley3;
};
在类YY中保护成员变量的个数是( )。
- A.1
- B.2
- C.3
- D.4
-
下列叙述中正确的是( )。
- A.线性链表的各元素在存储空间中的位置必须是连续的
- B.线性链表的头元素一定存储在其他元素的前面
- C.线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面
- D.线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的
-
有如下程序段:
inti=1:
while(1){
i++:
if(i==10)break:
if(i%2==0)cout<<'*':
}
执行这个程序段输出字符*的个数是( )。
- A.10
- B.3
- C.4
- D.5
-
Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是( )。
- A.cpp
- B.exe
- C.obj
- D.lik
-
关于纯虚函数,下列表述中正确的是( )。
- A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数
- B.纯虚函数的声明总是以“=0”结束
- C.派生类必须实现基类的纯虚函数
- D.含有纯虚函数的类不可能是派生类
-
假定MyClass为一个类,则执行MyClassa,b(2),*p;语句时,自动调用该类构造函数( )次。
- A.2
- B.3
- C.4
- D.5
-
软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( )。
- A.学生成绩管理系统
- B.C语言编译程序
- C.UNIX操作系统
- D.数据库管理系统
-
下面不正确的描述为( )。
- A.调用函数时,实参可以是表达式
- B.调用函数时,实参与形参可以共用内存单元
- C.调用函数时,将为形参分配内存单元
- D.调用函数时,实参与形参的类型必须一致
-
下列关于派生类和基类的描述中,正确的是( )。
- A.派生类成员函数只能访问基类的公有成员
- B.派生类成员函数只能访问基类的公有和保护成员
- C.派生类成员函数可以访问基类的所有成员
- D.派生类对基类的默认继承方式是公有继承
-
下列关于数据库设计的叙述中,正确的是( )。
- A.在需求分析阶段建立数据字典
- B.在概念设计阶段建立数据字典
- C.在逻辑设计阶段建立数据字典
- D.在物理设计阶段建立数据字典
-
以下函数值的返回值类型是( )。
fun(floatx)
{floaty;
y=3*x-4;
returny;
}
- A.int
- B.不确定
- C.void
- D.float
-
有3个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为( )。
- A.笛卡儿积
- B.交
- C.并
- D.自然连接
-
在软件设计中,不属于过程设计工具的是( )。
- A.PDL(过程设计语言)
- B.PAD图
- C.N-S图
- D.DVD图
-
设有定义:
classperson
{inthum;
charname[10];
public:
voidinit(intn,char*m);
};
personstd[30]
则以下叙述不正确的是( )。
- A.std是一个含有30个元素的对象数组
- B.std数组中的每个元素都是person类的对象
- C.std数组中的每个元素都有自己的私有变量num和name
- D.std数组中的每个元素都有各自的成员函数init
-
同一概念在一处为实体而在另一处为属性或联系的冲突在视图集成中称为( )。
- A.命名冲突
- B.概念冲突
- C.域冲突
- D.约束冲突
-
若有下列定义
intx[10],*pt=x;
则对x数组元素的正确引用是( )。
- A.*&*[10]
- B.*(x+3)
- C.*(pt+10)
- D.pt+3
-
判断char型变量c是否为小写字母的正确表达式是( )。
- A.'a'<=c<='z'
- B.(c>=A)&&(c<=z)
- C.('a'>=c)‖('z'<=c)
- D.(c>='a')&&(c<='z')
-
下列有关拷贝构造函数的描述中错误的是( )。
- A.拷贝构造函数是一种构造函数
- B.拷贝构造函数与一般的构造函数一样,可以设置多个形参
- C.每一个类中都必须有一个拷贝构造函数
- D.拷贝构造函数的功能是用一个已知对象去初始化一个正在创建的对象
-
有下列程序段:
inta,b,c;
- a=10.b=50;c=30;
- if(a>b)a=b;b=C;c=a; printf("a=%db=%dc=%d\n",a,b,c); 程序的输出结果是( )。
- A.a=10b=50C=10
- B.a=10b=50c=30
- C.a=10b=30c=10
- D.a=50b=30c=50
-
有如下程序:
ClassBase{
public:
intdata;
};
ClassDerived1:publicBase{};
ClassDerived2:protectedBase{};
intmain(){
Derived1d1;
Derived2d2;
d1.data=0;//①
d2.data=0;//②
return0;
}
下列关于程序编译结果的描述中,正确的是( )。
- A.①②皆无编译错误
- B.①有编译错误,②无编译错误
- C.①无编译错误,②有编译错误
- D.①②皆有编译错误
-
一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。
- A.一对一
- B.一对多
- C.多对一
- D.多对多
-
有如下语句序列:
intk=0:
do{k+=5;cout<<'$';}whilc(k<19);
while(k->O)cout<<'*';
执行上面的语句序列输出字符“$”和“*”的个数分别是( )。
- A.4和20
- B.5和20
- C.4和21
- D.5和21
-
下列叙述中错误的是( )。
- A.一种数据的逻辑结构可以有多种存储结构
- B.数据的存储结构与数据的处理效率无关
- C.数据的存储结构与数据的处理效率密切相关
- D.数据的存储结构在计算机中所占的空间不一定是连续的
-
数据库系统的核心是( )。
- A.数据模型
- B.数据库管理系统
- C.数据库
- D.数据库管理员
-
下述关于数据库系统的叙述中,正确的是( )。
- A.数据库系统减少了数据冗余
- B.数据库系统避免了一切冗余
- C.数据库系统中数据的一致性是指数据类型一致
- D.数据库系统比文件系统能管理更多的数据
-
有如下语句序列:
intx=100,&r=x;
cout<
已知其中变量x的地址为0012FF2C,则执行该语句序列的输出结果为( )。
- A.100—100
- B.100—0012FF7C
- C.0012FF7C一100
- D.0012FF7C一0012FF7C
-
若有定义“inta[2][3];”,下列选项中对a数组元素正确引用的是( )。
- A.a[2][!1]
- B.a[2][3]
- C.a[0][3]
- D.a[1>2][!1]
-
下列关于文件流的描述中,正确的是( )。
- A.文件流只能完成针对磁盘文件的输入、输出
- B.建立一个文件流对象时,必须同时打开一个文件
- C.若输入流要打开的文件不存在。将建立一个新文件
- D.若输出流要打开的文件不存在,将建立一个新文件
-
有如下程序:
#include
usingnamespacestd;
classA{
public:
- A(inti):rl(i){) voidprint( ){cout<<'E'<
- intr1: };
- intmain( ){
- Aal(2);constAa2(4);,
- al.print( );a2.print( ); return0; } 运行时的输出结果是( )。
- A.运行时出错
- B.E2一C16一
- C.C4一Cl6一
- D.E2一E4—
- A(inti):rl(i){) voidprint( ){cout<<'E'<
-
有如下类定义:
classSample{
public:
Sample(intx):ref(x){}//①
private:
Sample():ref(0){}//②
staticintva1=5;//③
constintref;//④
};
上述程序段中,错误的语句是( )。
- A.①
- B.②
- C.③
- D.④
-
有如下类定义:
classB{
public:voidfunl(){}
privace:voidfun2(){}
protected:voidfun3(){}
};
classD:publicB{
protected:voidfun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。
- A.obj.fun1();
- B.obj.fun2();
- C.obj.fun3();
- D.obj.fun4();
-
若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。
- A.operatorlong()const;
- B.operatorlong(BigNumber);
- C.10ngoperatorlong()const;
- D.longoperatorlong(BigNumber);
-
有如下类声明:
classXA(
intX;
public:
XA(intn){x=n;}
};
classXB:publicXA{
inty;
public:
XB(inta,intb);
];
在构造函数XB的下列定义中,正确的是( )。
- A.XB::XB(inta,intb):x(a),y(b){)
- B.XB::XB(inta,intb):XA(a),y(b){)
- C.XB::XB(inta,intb):x(a),XB(b)(}
- D.XB::XB(inta,intb):XA(a),XB(b){)
-
有如下函数模板定义:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
- A.FUN(9)
- B.FUN<9>
- C.FUN
(9) - D.FUN<9>(double)
-
字符串“a+b=12\n\t”的长度为( )。
- A.12
- B.10
- C.8
- D.6
-
下列关于虚函数与函数重载区别的叙述中不正确的是( )。
- A.函数说明形式上不同
- B.函数允许非成员函数重载,虚函数只能是成员函数
- C.函数重载的调用依据参数和类型的差别,虚函数则依据对象
- D.函数重载的本体可以在类外定义,虚函数不可以
-
有如下类定义:
classMyClass(
public:
____
private:
intdata;
};
若要为Myclass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入MyClasS类的对象obj,则横线处的声明语句应为( )。
- A.friendistream&operator>>(istream&is,MyClass&a);
- B.friendistream&operator>>(istream&is,MyClassa);
- C.istream&operalor>>(istream&is,MyClass&a);
- D.istream&operator>>(istream&is,Myclassa);
-
下列关于虚基类的描述中,错误的是( )。
- A.使用虚基类可以消除由多继承产生的二义性
- B.构造派生类对象时,虚基类的构造函数只被调用一次
- C.声明“classB:virtualpublicA”说明类B为虚基类
- D.建立派生类对象时,首先调用虚基类的构造函数
-
设有以下类和对象的定义:
ClaSSA
{public:
intm;
};
- Ak1,k2,*p1,*p2; 则下面针对成员变量m的引用,错误的是( )。
- A.k1.m=1
- B.k2→m=2
- C.p1→m=3
- D.(*p2).m=4
-
在数据库设计中,将E-R图转换为关系模式的过程属于( )。
- A.需求分析阶段
- B.逻辑设计阶段
- C.概念设计阶段
- D.物理设计阶段