三、簡(jiǎn)單應(yīng)用題
編寫(xiě)類(lèi)AA的成員函數(shù)intCompare(AAb),該函數(shù)用于比較*this與b的大小,若兩者含有元素的個(gè)數(shù)n相同,并且數(shù)組中前n個(gè)元素值對(duì)應(yīng)相同,則認(rèn)為兩者相等返回1,否則返回0。注意:用數(shù)組方式及for循環(huán)來(lái)實(shí)現(xiàn)該函數(shù)。輸出結(jié)果如下:
a=b
a<>c
注意:部分源程序已存在文件kt2_2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)Compare的花括號(hào)中填寫(xiě)若干語(yǔ)句。
文件kt2_2.cpp的內(nèi)容如下:
#include
#include
classAA{
int*a;
intn;
intMS;
public:
voidInitAA(intaa[],intnn,intms)
{
if(nn>ms)
{\cout<<"Error!"<< p>
exit(1);}
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;i< p>
}
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"<< p>
else
cout<<"a<>b"<< p>
if(a.Compare(c))
cout<<"a=c"<< p>
else
cout<<"a<>c"<< p>
【參考答案】
int AA::Compare(AA b)
{if(n!=b.n) return 0;
for(int i=0; i<>
if(a[i]!=b.a[i]) return 0;
return 1;}
【試題解析】
本題考查應(yīng)用for循環(huán)、if條件控制語(yǔ)句等基本控制結(jié)構(gòu)解決實(shí)際問(wèn)題的能力。
四.綜合應(yīng)用題
使用VC6打開(kāi)考生文件夾下的工程test17_3,此工程包含一個(gè)源程序文件kt2_3.cpp,其中定義了用于表示點(diǎn)的類(lèi)Point和表示內(nèi)容的類(lèi)Text以及二者的派生類(lèi)CircleWithText,但它們的定義并不完整。請(qǐng)按要求完成下列操作,將它們的定義補(bǔ)充完整。
(1)定義類(lèi)Point的構(gòu)造函數(shù),請(qǐng)使用參數(shù)列表的形式將成員函數(shù)x和y分別初始化為參數(shù)x1和y1的值。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)完成類(lèi)Text的構(gòu)造函數(shù)Text(char*str)的定義,將char型的str指向的內(nèi)容賦值給text并且輸出str所指向的內(nèi)容,請(qǐng)?jiān)谧⑨尅?/**2**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)定義類(lèi)CircleWithText的構(gòu)造函數(shù)CircleWithText(intcx,intcy,char*msg),int型的cx和cy用于賦值給x和y,char型的指針*msg用于賦值給text,請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
輸出結(jié)果如下:
Point:34
hello
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
源程序如下:
#include
#include
classPoint
{intx,y;
public:
//**1**
{cout<<"Point:"<<<''''<<<''\N'';}< p>
~Point(){}};
classText
{chartext[100];
public:
Text(char*str)
{//**2**}
~Text(){}};
classCircleWithText:publicPoint,publicText
{public:
//**3**
{}
~CircleWithText(){}};
voidmain()
{CircleWithTextcm(3,4,"hello");}
【參考答案】
(1)Point(int x1=0, int y1=0) :x(x1), y(y1)
(2)strcpy(text,str);
cout<<<"\N";< p>
(3)CircleWithText(int cx,int cy, char *msg):Point(cx,cy),Text(msg)
【試題解析】
本題主要考查考生對(duì)于多繼承中類(lèi)的定義和派生類(lèi)構(gòu)造函數(shù)的定義的掌握。注意學(xué)會(huì)使用參數(shù)列表的形式定義派生類(lèi)的構(gòu)造函數(shù),在列表中的格式是基類(lèi)名1(向基類(lèi)傳遞的參數(shù)列表),基類(lèi)名2(向基類(lèi)傳遞的參數(shù)列表)。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |