C++考试模拟练习三Word文档格式.docx
《C++考试模拟练习三Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++考试模拟练习三Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象
D.类与对象的关系和数据类型与变量的关系相似
5、有关构造函数的说法不正确的是____?
A.构造函数名字和类的名字一样
B.构造函数在说明类变量时自动执行
C.构造函数无任何函数类型
D.构造函数有且只有一个
6、下列的____?
____函数中,不是类的成员函数。
A.构造函数B.析构函数
C.友元函数D.拷贝初始化构造函数
7、对于下面几个语句:
constchar*p=”ABCD”;
//1
p[3]=’E’;
//2
p=”WXYZ”;
//3
constchar*constq=”ABCD”;
//4
q[3]=’A’;
//5
q=”WXYZ”;
//6
错误的是____?
A.全部B.2和3和5
C.2和5和6D.3和5和6
8、对于下面几个函数:
voidg(intx,floaty){…}//1
intg(inta,floatb){…}//2
intg(inti,intj){…}//3
floatg(intx,inty){…}//4
____?
____是重载函数。
A.4个全部B.1和2
C.2和3D.3和4
9、关于构造函数,下面叙述不正确的是____?
A.构造函数可以重载
B.构造函数的函数名与类名相同
C.构造函数必须指定返回类型
D.构造函数可以设置默认值
10、设类Y是基类X的公有派生类,并有语句:
Xx,*px=&
x;
Yy,*py=&
y;
则正确的语句是____?
A.py=px;
B.y=x;
C.x=y;
D.*py=*px;
11、下面关于静态成员不正确的说法是____?
A、静态成员有类作用域,但与普通非静态成员有所不同
B、静态函数没有this指针,同一个类的不同对象拥有相同的静态变量
C、静态数据成员的初始化必须在类外进行
D、静态成员函数可以直接访问非静态数据成员
12、下列关于派生类的说法中正确的是____?
A、派生类可以继承多个基类
B、派生类不可以作为其他类的基类
C、派生类的构造函数初始化列表中必须包含对基类构造函数的调用
D、派生类对基类默认的继承方式为public
13、下列关于运算符重载的说法正确的是____?
A、运算符重载可以改变运算符的个数
B、运算符重载可以改变运算符的优先级
C、运算符重载可以改变运算符的结合性
D、运算符重载不可以改变运算符的语法结构
14、编译时的多态性可以通过____?
____体现。
A、虚函数和指针B、函数重载和运算符重载
C、虚函数和对象D、虚函数和引用
15、模板的使用可以____?
A、提高代码的可重用性B、提高代码的运行效率
C、加强类的封装性D、实现多态性
三、读程题
1、以下程序的输出结果是____
(1)____。
#include<
iostream>
usingnamespacestd;
chara[]=”ABCDEFGHI”;
char&
f(int);
voidmain()
{f(6)=’X’;
cout<
<
a<
endl;
return;
}
char&
f(inti){returna[i];
2、以下程序的输出结果分别是____
(2)____和____(3)____。
classL{
protected:
intx;
public:
L(inta){x=a;
};
classX:
publicL{
X(inta):
L(a){};
intGetX(){returnx;
classY:
Y(inta):
L(a){};
classZ:
publicX,publicY{
Z(inta):
X(a+10),Y(a+20){};
{Zz(10);
z.X:
:
GetX()<
z.Y:
3、以下程序输出的两个字母分别是____(4)____和____(5)____。
classA{
virtualvoidprint(){cout<
’m’<
’n’<
’\n’;
classB:
publicA{
voidprint(){cout<
’o’<
’p’<
{Bb;
A*ap=&
b;
ap->
print();
4、[程序]
classSample
{private:
intx,y;
Sample(){x=0;
y=0;
}Sample(inti,intj){x=i;
y=j;
voidcopy(Sample&
A){x=A.x;
y=A.y;
voidadd(){x++;
y++;
voiddisp(){cout<
"
x="
x<
\ny="
y<
{Samplec1(10,20),c2(1,2);
c1.add();
c1.disp();
c2.copy(c1);
c2.add();
c2.disp();
程序输出结果为____(6)____,____(7)____,____(8)____,____(9)____。
5、[程序]
classA
{public:
A(inti,intj){a=i;
b=j;
voidmove(intx,inty){a+=x;
b+=y;
voidshow(){cout<
("
"
b<
)"
private:
inta,b;
privateA
B(inti,intj,intk,intl):
A(i,j){x=k;
y=l;
voidshow(){cout<
voidfun(){move(3,5);
}voidf1(){A:
show();
{Ae(1,2);
e.show();
Bd(3,4,5,6);
d.show();
d.fun();
d.f1();
程序输出结果为____(10)____,____(11)____,____(12)____。
6、[程序]
classTAT{
staticintu;
inty;
TAT(intr=0){y=r;
voiddisp(){
u*=2;
y/=2;
u<
'
\t'
}
intTAT:
u=8;
voidmain(){
TATob[3]={16,10};
for(inti=0;
i<
3;
i++)
ob[i].disp();
程序的第一行输出为____(13)____,第二行输出为____(14)____,第三行输出为____(15)____。
四、程序填空题
1、通过重载运算符“+”,直接实现两个一维数组对应元素相加运算。
如设数组a,b分别为:
inta[10]={1,2,3,4,5,6,7,8,9,10};
intb[10]={4,5,6,7,8,9,10,11,12,13};
则二数组相加后,结果为{5,7,9,11,13,15,17,19,21,23}。
类同地,
重载运算符“+=”,实现复合赋值运算。
____
(1)____;
classArr{
intx[10];
Arr(){for(inti=0;
10;
i++)x[i]=0;
Arr(int*p){for(inti=0;
i++)x[i]=*p++;
Arroperator+(Arra)
{Arrt;
i++)t.x[i]=____
(2)____;
return____(3)____;
Arr&
operator+=(Arra)
{for(inti=0;
i++)x[i]=____(4)____;
return____(5)____;
voidShow(){for(inti=0;
i++)cout<
x[i]<
’\t’;
{inta[10]={1,2,3,4,5,6,7,8,9,10};
intb[10]={4,5,6,7,8,9,10,11,12,13};
Arrar1(a),ar2(b),ar3;
ar1.Show();
ar2.Show();
ar3=ar1+ar2;
ar3.Show();
ar1+=ar3;
五、编程题1
编写程序:
建立一个类ARRAY,求一维数组中各元素的最大值、最小值和平均值。
具体要求如下:
(1)私有数据成员:
●floatdata[10];
●floatmax;
存储数组中元素的最大值
●floatmin;
存储数组中元素的最小值
●floataverage;
存储数组中所有元素的平均值
(2)公有成员函数:
●构造函数ARRAY(floata[10]);
初始化成员数组data
●voidprocess();
将数组data中的最大值、最小值和平均值分别存入max、min、average中
●voidprint();
屏幕输出数组中各元素的最大值、最小值和平均值,并将最大值、最小值和平均值写入结果文件myf1.txt中
(3)在主函数中对该类进行测试。
六、编程题2
建立一个类STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。
如将字符串“abcde”交叉插入到字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。
(1)私有成员:
●charstr1[80];
被插入的字符串
●charstr2[40];
字符串str2将被插入到字符串str1中
(2)公有成员函数
●构造函数STRING(char*s1,char*s2);
初始化成员数据
将字符串str2插入到字符串str1中
输出被插入后的字符串str1,并将插入后的字符串写入结果文件myf2.txt中
参考答案
空号
答案
①
静态多态性
②
纯虚函数
③
A类的引用a(作为参数)
④
public
⑤
私有(或private)
⑥
1
⑦
引用传递
⑧
所有
⑨
this指针
⑩
该类的一个对象
题号
2
3
4
5
6
7
8
9
10
11
12
13
14
15
B
D
C
A
空格号
(1)
ABCDEFXHI
(2)
20
(3)
30
(4)
o
(5)
p
(6)
x=11
(7)
y=21
(8)
x=12
(9)
y=22
(10)
(1,2)
(11)
5,6
(12)
(6,9)
(13)
168
(14)
325
(15)
640
⑴
usingnamespacestd
⑵
x[i]+a.x[i]
⑶
t
⑷
⑸
*this
[程序]
fstream>
classARRAY
{
private:
floatdata[10];
floatmax;
floatmin;
floataverage;
public:
ARRAY(floata[10])
{
for(inti=0;
data[i]=a[i];
voidprocess()
floata,b,s;
a=b=s=data[0];
for(inti=1;
{
s+=data[i];
if(a<
data[i])
a=data[i];
if(b>
b=data[i];
}
max=a;
min=b;
average=s/10;
voidprint()
cout<
max="
max<
min="
min<
average="
average<
ofstreamfout("
myf1.txt"
);
if(!
fout)
cout<
Cannotopenthefilemyf1.txt."
return;
fout<
fout.close();
floata[10];
scanf("
%f"
a+i);
ARRAYarr(a);
arr.process();
arr.print();
string>
classSTRING
charstr1[80];
charstr2[40];
STRING(char*s1,char*s2)
inti;
for(i=0;
80;
str1[i]=0;
40;
str2[i]=0;
if(strlen(s1)<
40)
strcpy(str1,s1);
if(strlen(s2)<
strcpy(str2,s2);
inti,m,n;
m=strlen(str1);
n=strlen(str2);
for(i=m-1;
i>
=0;
i--)
str1[2*i]=str1[i];
n;
str1[2*i+1]=str2[i];
str1<
myf2.txt"
Cannotopenthefilemyf2.txt."
fout.close();
chars1[40],s2[40];
scanf("
%s%s"
s1,s2);
STRINGstr(s1,s2);
str.process();
str.print();