return0;
}
执行这个程序的输出结果是()。
A53
B35
C55
D33
该问题分值:
1
答案:
A
本题考查常对象及常成员函数及构造函数,常埘象只能凋用常成员函数,所以本题中,对象v1为普通对象,执行v1.f()后,会执行默认构造函数,输出5,对象v2为常列象,执行v2.f()后,会执行常构造函数,输出3。
24.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A一对一
B一对多
C多对一
D多对多
该问题分值:
1
答案:
B
因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。
25.下列关于二叉树的叙述中,正确的是()。
A叶子结点总是比度为2的结点少一个
B叶子结点总是比度为2的结点多一个
C叶子结点数是度为2的结点数的两倍
D度为2的结点数是度为1的结点数的两倍
该问题分值:
1
答案:
B
根据二叉树的基本性质3:
在任意一棵:
二叉树中,度为0的叶子结点总是比度为2的结点多一个。
所以选择B。
26.有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)()。
inta[10]={0,1,2,3,4,5,6,7,8,9},*P=a;
Aa[P-a]
B*(&a[i])
CP[i]
D*(*(a+i))
该问题分值:
1
答案:
D
选项D第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。
27.下列程序的运行结果为()。
#include
voidprint(doubleA.
{
cout<<++a:
}
voidprint(intatintB.
{
cout<
}
voidmain()
{
print(1.2);
eout<<””:
print(3,4);
}
A1.234
B2.234
C1.243
D2.243
该问题分值:
1
答案:
D
本题考查的是对重载函数的掌握,因为++a是右结合的,所以a先自加1再输出,即为2.2,之后调用函数print(inta,intb)输出h和a,即43。
28.存在定义inta[10],x,*pa;,若pa=&a[0],下列的()选项和其他3个选项不是等价的。
Ax=*pa;
Bx=*(a+1);
Cx=*(pa+1)
Dx=a[1];
该问题分值:
1
答案:
A
本题考查的是数组和指向数组的指针之问的关系,选项A中x是被数组a的第一个元素赋值,其余的都是被数组a的第二个元素赋值。
29.下列叙述中正确的是()。
A循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况
C在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况
D循环队列中元素的个数是由队头指针和队尾指针共同决定
该问题分值:
1
答案:
D
循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中需要队头指针与队尾指针来共同反映队列中元素的动态变化情况,所以B与C错误。
30.通常拷贝构造函数的参数是()。
A某个对象名
B某个对象的成员名
C某个对象的引用名
D某个对象的指针名
该问题分值:
1
答案:
C
复制初始化构造函数的作用是用一个已知的对象来初始化一个被创建的同类的对象,该函数只有一个参数,并且是对同类的某个对象的引用。
31.如果在表达式++x/y中,“++”是作为友元函数重载的,“/”是作为成员函数重载的,则该表达式还可为()。
A(operator++(x)).operator/(Y)
B(operator++(0)).operator/(Y)
Coperator/((operator++(x,0)),Y)
Doperator/((operator++(0)),Y)
该问题分值:
1
答案:
A
c++中用成员函数重载++X为:
x.oper-ator++(),用友元函数重载++x为:
0perator++(x),用成员函数重载x/y为:
x.operator/(Y),用友元函数重载x/y为:
operator/(X,Y)。
32.一个函数功能不太复杂但要求被频繁调用,应选用()。
A内联函数
B重载函数
C递归函数
D嵌套函数
该问题分值:
1
答案:
A
本题考查的是内联函数的使用,它的引入是为了,解决程序中函数调用的效率问题,在编译时,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体来替换。
33.数据库应用系统中的核心问题是()。
A数据库设计
B数据库系统设计
C数据库维护
D数据库管理员培训
该问题分值:
1
答案:
A
数据库应用系统中的核心问题是数据库的设计。
34.有如下程序:
ClassBase{publiC:
intdata;};
ClassDerivedl:
publiCBase{};
ClassDerived2:
proteCtedBase{};
intmain( ){
Derivedldl;Derived2d2;dl.data=0;//①
d2.data=0;//②retum0;
}
下列关于程序编译结果的描述中,正确的是()。
A①②皆无编译错误
B①有编译错误,②无编译错误
C①无编译错误,②有编译错误
D①②皆有编译错误
该问题分值:
1
答案:
C
本题考查公用继承和保护继承对基类成员的访问属性。
在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有、稿.受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。
本题中Derived1公用继承Base.所以①编译正确,Derived2保护继承Base,所以②编译不正确。
35.下列关于基类和派生类关系的叙述中,正确的是()。
A每个类最多只能有一个直接基类
B派生类中的成员可以访问基类中的任何成员
C基类的构造函数必须在派生类的构造函数体中调用
D派生类除了继承基类的成员,还可以定义新的成员
该问题分值:
1
答案:
D
本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。
如果基类中定义了缺省构造函数或根本没有定义任何一一个构造函数时,在派生类构造函数的定义中可以省对基类构造函数的调用。
所以本题答案为D。
36.结构化程序所要求的基本结构不包括()。
A顺序结构
BGOT0跳转
C选择(分支)结构
D重复(循环)结构
该问题分值:
1
答案:
B
1966年Boehm和Jacopini证明了程序没计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
37.将E—R图转换为关系模式时,实体和联系都可以表示为()。
A属性
B键
C关系
D域
该问题分值:
1
答案:
C
从E—R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E—R图中属性也可以转换成关系的属性。
38.下面是一个模板声明的开始部分:
templatedouble…由此可知()。
A这可能是一个函数模板的声明
B这可能是一个类模板的声明
C这既可能是一个函数模板的声明,也可能是一个类模板的声明
D这肯定是一个错误的模板声明
该问题分值:
1
答案:
A
本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是·个函数模板的声明。
39.有如下程序:
#include
usingnamespacestd;
classAA{
intk;
protected:
intn;
voidsetK(intk){this一>k=k;}
public:
voidsetN(intn){this一>n=n;}
};
classBB:
publicAA{/*类体略*">
;
intmain()
}
BBX;
An=1;//1
BsetN
(2);//2
Ck=3;//3
DsetK(4);//4
return0;
}
在标注号码的四条语句中正确的是()。
A1
B2
C3
D4
该问题分值:
1
答案:
B
本题考查公用继承对基类成员的访问属性。
在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。
所以本题中n、k和setK变为了派生类的保护成员,不能直接使用,即1、3、4错误,所以B选项正确。
40.有如下头文件:
intfl();
staticintf2();
classMA{
public:
intf3();
staticintf4();
};
在所描述的函数中,具有隐含的this指针的是()。
Af1
Bf2
Cf3
Df4
该问题分值:
1
答案:
C
只有类的非静态成员函数才隐含this指针。
其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。
所以本题答案为C。
二、基本操作题(18分)
1.请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程中包含程序文件main.epp,其中有类Door(“门”)和主函数main的定义。
程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。
改正后程序的输出结果应为:
打开503号门…门是锁着的,打不开。
打开503号门的锁…锁开了。
打开503号门…门打开了。
打开503号门…门是开着的,无须再开门。
锁上503号门…先关门...门锁上了。
注意:
只修改每个“//ERROR***********found**********”下的那一行,不要改动程序中的其他内容。
#include
usingnamespacestd;
classDoor{
intBum;//门号
boolclosed;//true表示门关着
boollocked:
//true表示门锁着
public:
Door(intnHm){
//ERROR***********fo