11.若已知a=10,b=20,则表达式!
a
【参考答案】
【12】1
12.友元类的所有成员函数都是另一个类的【13】。
【参考答案】
【13】友元函数
13.表达式x.operator++()还可写成【14】。
【参考答案】
【14】++x
14.若要在C盘根目录下作为二进制文件打开文件test.dat,则应该用的语句是:
【参考答案】
【15】ifstreamfin(″C:
\test.dat″,ios_binary);或ifstreamfin;fin.open(c:
\test.dat″,ios_bin
上机部分
一、改错题
使用VC6打开考生文件夹下的工程kt2_1,此工程包含一个源程序文件kt2_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Vehiclemessage
Carmessage
Vehiclemessage
源程序文件kt2_1.cpp清单如下:
#include
classvehicle
{
intwheels;
floatweight;
public:
voidmessage(void){cout<<"Vehiclemessage\n";}
};
classcar:
publicvehicle
{
intpassenger_load;
public:
voidmessage(void){cout>>"Carmessage\n";}
};
classtruck:
publicvehicle
{
intpassenger_load;
floatpayload;
public:
intpassengers(void){returnpassenger_load;}
};
voidmain()
{
vehicle*unicycle;
unicycle=newvehicle;
unicycle.message();
deleteunicycle;
unicycle=newcar;
unicycle->message();
deleteunicycle;
unicycle=newtruck;
unicycle->message();
deleteunicycle;
}
【参考答案】
(1)将voidmessage(void){cout<<"Vehiclemessage\n";}
改为:
virtualvoidmessage(void){cout<<"Vehiclemessage\n";}
(2)将voidmessage(void){cout>>"Carmessage\n";}
改为:
voidmessage(void){cout<<"Carmessage\n";}
(3)将unicycle.message();
改为:
unicycle->message();
【试题解析】
(1)主要考查对虚函数使用规则的掌握,要实现对函数message的动态联编应该使用虚函数,否则产生的是静态联编,调用的函数输出结果就与要求不符;
(2)主要考查对流输出操作的掌握,该处错误的使用了流输入操作;
(3)主要考查对象和对象指针的概念,对象指针使用"->"调用成员函数,而对象使用"."调用成员函数。
二、简单应用题
编写类AA的成员函数intCompare(AAb),该函数用于比较*this与b的大小,若两者含有元素的个数n相同,并且数组中前n个元素值对应相同,则认为两者相等返回1,否则返回0。
注意:
用数组方式及for循环来实现该函数。
输出结果如下:
a=b
a<>c
注意:
部分源程序已存在文件kt2_2.cpp中。
请勿修改主函数main和其他函数中的任何内容,仅在函数Compare的花括号中填写若干语句。
文件kt2_2.cpp的内容如下:
#include
#include
classAA{
int*a;
intn;
intMS;
public:
voidInitAA(intaa[],intnn,intms)
{
if(nn>ms)
{\cout<<"Error!
"< exit
(1);}
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;i }
intCompare(AAb);
};
intAA:
:
Compare(AAb)
{
}
voidmain()
{AAa,b,c;
intx[]={1,2,3,4,5};
inty[]={1,2,3,6,7};
intz[]={1,2,5,7,9};
a.InitAA(x,3,5);
b.InitAA(y,3,5);
c.InitAA(z,3,5);
if(a.Compare(b))
cout<<"a=b"< else
cout<<"a<>b"< if(a.Compare(c))
cout<<"a=c"< else
cout<<"a<>c"<【参考答案】
intAA:
:
Compare(AAb)
{if(n!
=b.n)return0;
for(inti=0;i if(a[i]!
=b.a[i])return0;
return1;}
【试题解析】
本题考查应用for循环、if条件控制语句等基本控制结构解决实际问题的能力。
3.综合应用题
使用VC6打开考生文件夹下的工程test17_3,此工程包含一个源程序文件kt2_3.cpp,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。
请按要求完成下列操作,将它们的定义补充完整。
(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。
请在注释“//**1**”之后添加适当的语句。
(2)完成类Text的构造函数Text(char*str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“//**2**”之后添加适当的语句。
(3)定义类CircleWithText的构造函数CircleWithText(intcx,intcy,char*msg),int型的cx和cy用于赋值给x和y,char型的指针*msg用于赋值给text,请在注释“//**3**”之后添加适当的语句。
输出结果如下: