一、改錯(cuò)題
使用VC6打開(kāi)考生文件夾下的工程kt15_1,此工程包含一個(gè)源程序文件kt15_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:
Previous=9,Next=11
源程序文件kt15_1.cpp清單如下:
#include
/*****************found*****************/
intmain()
{ intx=10,y,z;
prevnext(x,y,z);
cout<<"Previous="< return0; }
/*****************found*****************/
voidprevnext(intx,intprev,intnext)
{ /*****************found*****************/
prev=x--;
next=++x; }
【參考答案】
(1)在main()函數(shù)前缺少prevnext函數(shù)聲明
應(yīng)添加:void prevnext (int,int &,int &);
(2)將void prevnext (int x, int prev,int next)
改為:void prevnext (int x, int &prev,int &next)
(3)將prev=x--;改為:prev=x-1;
【試題解析】
(1)函數(shù)在使用前必須已經(jīng)被定義,main()中調(diào)用prevnext函數(shù),而該函數(shù)的實(shí)現(xiàn)在main()之后,所以在main()之前必須添加該函數(shù)的聲明;
(2)由運(yùn)行結(jié)果可知,通過(guò)函數(shù)prevnext調(diào)動(dòng)要改變main()中的實(shí)參值,所以prev和next都應(yīng)為引用型參數(shù);
(3)由運(yùn)行結(jié)果prev=x-1,而源程序的prev=x,x=x-1,這里涉及運(yùn)算符的優(yōu)先級(jí)問(wèn)題。
二、簡(jiǎn)單應(yīng)用題
請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(intx,intn),該函數(shù)返回x的n次冪的值,其中x和n都是非負(fù)整數(shù)。x的n次冪的計(jì)算方法是1與x相乘n次,如x的20次冪的計(jì)算為1與x相乘20次。
注意:部分源程序已存在文件kt15_2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填寫(xiě)若干語(yǔ)句。
如輸入3和4,輸出結(jié)果如下:
34
81
文件kt15_2.cpp清單如下:
#include
doublefun(intx,intn)
{
}
voidmain()
{ intx,n;
cin>>x>>n;
cout<
【參考答案】
if(x==0) return 0;
if(n==0) return 1;
int y=1;
for(int i=0;i
return y;
【試題解析】
本題主要考查用基本控制結(jié)構(gòu)與函數(shù)知識(shí)解決實(shí)際問(wèn)題的能力。求x的n次冪是數(shù)學(xué)中常用的運(yùn)算,編程時(shí)在x=0與n=0時(shí)需特殊處理。
三、綜合應(yīng)用題
使用VC6打開(kāi)考生文件夾下的工程kt15_3。此工程包含一個(gè)kt15_3.cpp,其中定義了
類(lèi)A、A1和A2,其中A1類(lèi)由A類(lèi)公有派生,A2類(lèi)由A1類(lèi)公有派生。上述三個(gè)類(lèi)的定義并不完整,請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義類(lèi)A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)定義類(lèi)A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個(gè)整型參數(shù)x和y,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員b,將y作為基類(lèi)A構(gòu)造函數(shù)的參數(shù)值傳入。請(qǐng)?jiān)谧⑨尅?/**2**”后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)定義類(lèi)A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有三個(gè)整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類(lèi)A1構(gòu)造函數(shù)的參數(shù)x和y。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成類(lèi)A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類(lèi)成員函數(shù),輸出基類(lèi)數(shù)據(jù)成員a和b及類(lèi)A2自身的數(shù)據(jù)成員c的值,上述三個(gè)值在輸出時(shí)以空格隔開(kāi)。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
程序輸出結(jié)果如下:
9
6
962
源程序文件kt15_3.cpp清單如下:
#include
classA
{ inta;
public:
//**1**
intgeta(){returna;} };
classA1:publicA
{ intb;
public:
//**2**
intgetb(){returnb;} };
classA2:publicA1
{ intc;
public:
//**3**
voidshow()
{ //**4** } };
voidmain()
{ A2a(2,6,9);
cout<
cout<
a.show(); }
【參考答案】
(1)A(int x) {a=x;}
(2)A1(int x,int y) : A(y){b=x;}
(3)A2(int x,int y,int z):A1(y,z){c=x;}
(4)cout<
【試題解析】
本題主要考查對(duì)繼承和派生的掌握程度,涉及派生類(lèi)構(gòu)造函數(shù)的定義、基類(lèi)成員函數(shù)的訪問(wèn)等內(nèi)容。派生類(lèi)的構(gòu)造函數(shù)的格式請(qǐng)牢記,另外派生類(lèi)構(gòu)造函數(shù)及析構(gòu)函數(shù)的執(zhí)行順序也是需要掌握的。
使用VC6打開(kāi)考生文件夾下的工程kt15_1,此工程包含一個(gè)源程序文件kt15_1.cpp,但該程序運(yùn)行有問(wèn)題,請(qǐng)改正程序中的錯(cuò)誤,使該程序的輸出結(jié)果為:
Previous=9,Next=11
源程序文件kt15_1.cpp清單如下:
#include
/*****************found*****************/
intmain()
{ intx=10,y,z;
prevnext(x,y,z);
cout<<"Previous="<
/*****************found*****************/
voidprevnext(intx,intprev,intnext)
{ /*****************found*****************/
prev=x--;
next=++x; }
【參考答案】
(1)在main()函數(shù)前缺少prevnext函數(shù)聲明
應(yīng)添加:void prevnext (int,int &,int &);
(2)將void prevnext (int x, int prev,int next)
改為:void prevnext (int x, int &prev,int &next)
(3)將prev=x--;改為:prev=x-1;
【試題解析】
(1)函數(shù)在使用前必須已經(jīng)被定義,main()中調(diào)用prevnext函數(shù),而該函數(shù)的實(shí)現(xiàn)在main()之后,所以在main()之前必須添加該函數(shù)的聲明;
(2)由運(yùn)行結(jié)果可知,通過(guò)函數(shù)prevnext調(diào)動(dòng)要改變main()中的實(shí)參值,所以prev和next都應(yīng)為引用型參數(shù);
(3)由運(yùn)行結(jié)果prev=x-1,而源程序的prev=x,x=x-1,這里涉及運(yùn)算符的優(yōu)先級(jí)問(wèn)題。
二、簡(jiǎn)單應(yīng)用題
請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(intx,intn),該函數(shù)返回x的n次冪的值,其中x和n都是非負(fù)整數(shù)。x的n次冪的計(jì)算方法是1與x相乘n次,如x的20次冪的計(jì)算為1與x相乘20次。
注意:部分源程序已存在文件kt15_2.cpp中。
請(qǐng)勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填寫(xiě)若干語(yǔ)句。
如輸入3和4,輸出結(jié)果如下:
34
81
文件kt15_2.cpp清單如下:
#include
doublefun(intx,intn)
{
}
voidmain()
{ intx,n;
cin>>x>>n;
cout<
【參考答案】
if(x==0) return 0;
if(n==0) return 1;
int y=1;
for(int i=0;i
return y;
【試題解析】
本題主要考查用基本控制結(jié)構(gòu)與函數(shù)知識(shí)解決實(shí)際問(wèn)題的能力。求x的n次冪是數(shù)學(xué)中常用的運(yùn)算,編程時(shí)在x=0與n=0時(shí)需特殊處理。
三、綜合應(yīng)用題
使用VC6打開(kāi)考生文件夾下的工程kt15_3。此工程包含一個(gè)kt15_3.cpp,其中定義了
類(lèi)A、A1和A2,其中A1類(lèi)由A類(lèi)公有派生,A2類(lèi)由A1類(lèi)公有派生。上述三個(gè)類(lèi)的定義并不完整,請(qǐng)按要求完成下列操作,將程序補(bǔ)充完整。
(1)定義類(lèi)A的構(gòu)造函數(shù),該構(gòu)造函數(shù)有一個(gè)整型的參數(shù)x,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員a。請(qǐng)?jiān)谧⑨尅?/**1**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(2)定義類(lèi)A1的構(gòu)造函數(shù),該構(gòu)造函數(shù)有兩個(gè)整型參數(shù)x和y,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員b,將y作為基類(lèi)A構(gòu)造函數(shù)的參數(shù)值傳入。請(qǐng)?jiān)谧⑨尅?/**2**”后添加適當(dāng)?shù)恼Z(yǔ)句。
(3)定義類(lèi)A2的構(gòu)造函數(shù),該構(gòu)造函數(shù)有三個(gè)整型的參數(shù)x,y和z,在構(gòu)造函數(shù)中請(qǐng)將x賦值給數(shù)據(jù)成員c,將y和z分別賦值給基類(lèi)A1構(gòu)造函數(shù)的參數(shù)x和y。請(qǐng)?jiān)谧⑨尅?/**3**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
(4)完成類(lèi)A2的成員函數(shù)show的定義,該函數(shù)調(diào)用基類(lèi)成員函數(shù),輸出基類(lèi)數(shù)據(jù)成員a和b及類(lèi)A2自身的數(shù)據(jù)成員c的值,上述三個(gè)值在輸出時(shí)以空格隔開(kāi)。請(qǐng)?jiān)谧⑨尅?/**4**”之后添加適當(dāng)?shù)恼Z(yǔ)句。
注意:除在指定位置添加語(yǔ)句之外,請(qǐng)不要改動(dòng)程序中的其他內(nèi)容。
程序輸出結(jié)果如下:
9
6
962
源程序文件kt15_3.cpp清單如下:
#include
classA
{ inta;
public:
//**1**
intgeta(){returna;} };
classA1:publicA
{ intb;
public:
//**2**
intgetb(){returnb;} };
classA2:publicA1
{ intc;
public:
//**3**
voidshow()
{ //**4** } };
voidmain()
{ A2a(2,6,9);
cout<
cout<
a.show(); }
【參考答案】
(1)A(int x) {a=x;}
(2)A1(int x,int y) : A(y){b=x;}
(3)A2(int x,int y,int z):A1(y,z){c=x;}
(4)cout<
【試題解析】
本題主要考查對(duì)繼承和派生的掌握程度,涉及派生類(lèi)構(gòu)造函數(shù)的定義、基類(lèi)成員函數(shù)的訪問(wèn)等內(nèi)容。派生類(lèi)的構(gòu)造函數(shù)的格式請(qǐng)牢記,另外派生類(lèi)構(gòu)造函數(shù)及析構(gòu)函數(shù)的執(zhí)行順序也是需要掌握的。