voidfun(){move(3,5);}voidf1(){A:
:
show();}
private:
intx,y;
};
voidmain()
{Ae(1,2);e.show();
Bd(3,4,5,6);d.show();d.fun();d.f1();
}
程序输出结果为____(10)____,____(11)____,____(12)____。
6、[程序]
#include
usingnamespacestd;
classTAT{
staticintu;inty;
public:
TAT(intr=0){y=r;}
voiddisp(){
u*=2;y/=2;
cout<
}
};
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}。
类同地,
重载运算符“+=”,实现复合赋值运算。
#include
____
(1)____;
classArr{
intx[10];
public:
Arr(){for(inti=0;i<10;i++)x[i]=0;}
Arr(int*p){for(inti=0;i<10;i++)x[i]=*p++;}
Arroperator+(Arra)
{Arrt;
for(inti=0;i<10;i++)t.x[i]=____
(2)____;
return____(3)____;
}
Arr&operator+=(Arra)
{for(inti=0;i<10;i++)x[i]=____(4)____;
return____(5)____;
}
voidShow(){for(inti=0;i<10;i++)cout<};
voidmain()
{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;ar1.Show();
}
五、编程题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);初始化成员数据
●voidprocess();将字符串str2插入到字符串str1中
●voidprint();输出被插入后的字符串str1,并将插入后的字符串写入结果文件myf2.txt中
(3)在主函数中对该类进行测试。
参考答案
一、填空题
空号
答案
①
静态多态性
②
纯虚函数
③
A类的引用a(作为参数)
④
public
⑤
私有(或private)
⑥
1
⑦
引用传递
⑧
所有
⑨
this指针
⑩
该类的一个对象
二、单选题
题号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
答案
B
D
C
C
D
C
C
C
C
C
D
A
D
B
A
三、读程题
题号
空格号
答案
1
(1)
ABCDEFXHI
2
(2)
20
2
(3)
30
3
(4)
o
3
(5)
p
4
(6)
x=11
4
(7)
y=21
4
(8)
x=12
4
(9)
y=22
5
(10)
(1,2)
5
(11)
5,6
5
(12)
(6,9)
6
(13)
168
6
(14)
325
6
(15)
640
四、程序填空题
空格号
答案
⑴
usingnamespacestd
⑵
x[i]+a.x[i]
⑶
t
⑷
x[i]+a.x[i]
⑸
*this
五、编程题1
[程序]
#include
#include
usingnamespacestd;
classARRAY
{
private:
floatdata[10];
floatmax;
floatmin;
floataverage;
public:
ARRAY(floata[10])
{
for(inti=0;i<10;i++)
data[i]=a[i];
}
voidprocess()
{
floata,b,s;
a=b=s=data[0];
for(inti=1;i<10;i++)
{
s+=data[i];
if(aa=data[i];
if(b>data[i])
b=data[i];
}
max=a;
min=b;
average=s/10;
}
voidprint()
{
cout<<"max="<cout<<"min="<cout<<"average="<ofstreamfout("myf1.txt");
if(!
fout)
{
cout<<"Cannotopenthefilemyf1.txt."<return;
}
fout<<"max="<fout<<"min="<fout<<"average="<fout.close();
}
};
voidmain()
{
floata[10];
for(inti=0;i<10;i++)
scanf("%f",a+i);
ARRAYarr(a);
arr.process();
arr.print();
}
六、编程题2
[程序]
#include
#include
#include
usingnamespacestd;
classSTRING
{
private:
charstr1[80];
charstr2[40];
public:
STRING(char*s1,char*s2)
{
inti;
for(i=0;i<80;i++)
str1[i]=0;
for(i=0;i<40;i++)
str2[i]=0;
if(strlen(s1)<40)
strcpy(str1,s1);
if(strlen(s2)<40)
strcpy(str2,s2);
}
voidprocess()
{
inti,m,n;
m=strlen(str1);
n=strlen(str2);
for(i=m-1;i>=0;i--)
str1[2*i]=str1[i];
for(i=0;istr1[2*i+1]=str2[i];
}
voidprint()
{
cout<ofstreamfout("myf2.txt");
if(!
fout)
{
cout<<"Cannotopenthefilemyf2.txt."<return;
}
fout<fout.close();
}
};
voidmain()
{
chars1[40],s2[40];
scanf("%s%s",s1,s2);
STRINGstr(s1,s2);
str.process();
str.print();
}