一、改錯題
使用VC6打開考生文件夾下的工程kt13_1,此工程包含一個源程序文件kt13_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使該程序的輸出結果為:
5
5
源程序文件kt13_1.cpp清單如下:
#include
classA{
public:
/*****************found*****************/
staticintn=1;
A(){n++;};
~A(){n--;}; };
/*****************found*****************/
intn=0;
intmain(){
Aa;
Ab[3];
A*c=newA;
c=&a;
/*****************found*****************/
cout< cout< return0; }
【參考答案】
(1)將static int n=1;改為:static int n;
(2)將int n=0;改為:int A::n=0;
(3)將cout (1)在類的聲明中只能對靜態(tài)數(shù)據(jù)成員進行引用性聲明,不能進行靜態(tài)數(shù)據(jù)成員初始化;
(2)由于靜態(tài)數(shù)據(jù)成員是類的成員,所以在初始化時必須限定它所屬的類;
(3)c為類的對象指針,訪問類成員函數(shù)時使用符號“->”,而不能用“.”。
二、簡單應用題
請編寫一個函數(shù)sortnum(intnum),參數(shù)num是一個三位的整數(shù),該函數(shù)將num的百位、十位和個位的數(shù)字進行重排,并返回由上述的三個數(shù)字組成的的三位數(shù)。
注意:部分源程序已存在文件kt13_2.cpp中。
如輸入456后,輸出結果如下:
654
請勿修改主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)sortnum的花括號中填寫若干語句。
文件kt13_2.cpp的內(nèi)容如下:
#include
intsortnum(intnum)
{
}
voidmain()
{ intnum;
intresult=0;
cout<<"請輸入一個三位數(shù)";
cin>>num;
cout< 【參考答案】
int number[3],i,j,temp;
for(i=0;i<3;i++)
{ number[i]=num;
num=num/10; }
for (i=0;i<2;i++)
{ for (j=i+1;j<3;j++)
if (number[j]<=number[i])
{ temp=number[j];
number[j]=number[i];
number[i]=temp; } }
num=number[2]*100+number[1]*10+number[0];
return num;
【試題解析】
本題主要考查對基本控制結構和數(shù)組的訪問,以及根據(jù)實際需要建立模型,對數(shù)字進行排序的能力,答案中采用的是冒泡排序法。請注意程序中數(shù)組下標的范圍和兩層for循環(huán)嵌套中循環(huán)變量的取值情況。
三、綜合應用題
使用VC6打開考生文件夾下的工程kt13_3。此工程包含一個kt13_3.cpp,其中定義了類Person,但該類的定義并不完整。請按要求完成下列操作,將程序補充完整。
(1)定義類Person的私有數(shù)據(jù)成員forename、
surname和money,forename和surname都是char型的指針數(shù)據(jù),money是double型的
數(shù)據(jù)。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成類Person的帶三個參數(shù)的構造函數(shù)Person(char*f,char*s,doublem),分別為forename和surname申請新的空間來存儲參數(shù)f和s指針指向的內(nèi)容,注意空間的大小,最后把參數(shù)m的值賦給money,請在注釋“//**2**”之后添加適當?shù)恼Z句。
(3)完成類Person的析構函數(shù)的定義,把forename和surname指向的空間釋放,請在注釋“//**3**”之后添加適當?shù)恼Z句。
(4)完成類Person的成員函數(shù)display的定義,使其以格式"fornamesurnamehasmoney"的形式輸出內(nèi)容,請在注釋“//**4**”之后添加適當?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
輸出結果如下:
RichardBerkhas1000.56
Pressanykeytocontinue
源程序文件kt13_3.cpp清單如下:
#include
#include
classPerson
{ private:
//**1**
doublemoney;
public:
Person(char*f,char*s,doublem);
~Person();
voiddisplay(); };
Person::Person(char*f,char*s,doublem)
{ //**2**
strcpy(forename,f);
surname=newchar[strlen(s)+1];
strcpy(surname,s);
money=m; }
Person::~Person()
{ //**3** }
voidPerson::display()
{ //**4** }
voidmain()
{ Personp("Richard","Berk",1000.56);
p.display(); }
【參考答案】
(1)char *forename;
char *surname;
(2)forename = new char[strlen(f)+1];
(3)delete []forename;
delete []surname;
使用VC6打開考生文件夾下的工程kt13_1,此工程包含一個源程序文件kt13_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使該程序的輸出結果為:
5
5
源程序文件kt13_1.cpp清單如下:
#include
classA{
public:
/*****************found*****************/
staticintn=1;
A(){n++;};
~A(){n--;}; };
/*****************found*****************/
intn=0;
intmain(){
Aa;
Ab[3];
A*c=newA;
c=&a;
/*****************found*****************/
cout< cout< return0; }
【參考答案】
(1)將static int n=1;改為:static int n;
(2)將int n=0;改為:int A::n=0;
(3)將cout
(2)由于靜態(tài)數(shù)據(jù)成員是類的成員,所以在初始化時必須限定它所屬的類;
(3)c為類的對象指針,訪問類成員函數(shù)時使用符號“->”,而不能用“.”。
二、簡單應用題
請編寫一個函數(shù)sortnum(intnum),參數(shù)num是一個三位的整數(shù),該函數(shù)將num的百位、十位和個位的數(shù)字進行重排,并返回由上述的三個數(shù)字組成的的三位數(shù)。
注意:部分源程序已存在文件kt13_2.cpp中。
如輸入456后,輸出結果如下:
654
請勿修改主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)sortnum的花括號中填寫若干語句。
文件kt13_2.cpp的內(nèi)容如下:
#include
intsortnum(intnum)
{
}
voidmain()
{ intnum;
intresult=0;
cout<<"請輸入一個三位數(shù)";
cin>>num;
cout< 【參考答案】
int number[3],i,j,temp;
for(i=0;i<3;i++)
{ number[i]=num;
num=num/10; }
for (i=0;i<2;i++)
{ for (j=i+1;j<3;j++)
if (number[j]<=number[i])
{ temp=number[j];
number[j]=number[i];
number[i]=temp; } }
num=number[2]*100+number[1]*10+number[0];
return num;
【試題解析】
本題主要考查對基本控制結構和數(shù)組的訪問,以及根據(jù)實際需要建立模型,對數(shù)字進行排序的能力,答案中采用的是冒泡排序法。請注意程序中數(shù)組下標的范圍和兩層for循環(huán)嵌套中循環(huán)變量的取值情況。
三、綜合應用題
使用VC6打開考生文件夾下的工程kt13_3。此工程包含一個kt13_3.cpp,其中定義了類Person,但該類的定義并不完整。請按要求完成下列操作,將程序補充完整。
(1)定義類Person的私有數(shù)據(jù)成員forename、
surname和money,forename和surname都是char型的指針數(shù)據(jù),money是double型的
數(shù)據(jù)。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成類Person的帶三個參數(shù)的構造函數(shù)Person(char*f,char*s,doublem),分別為forename和surname申請新的空間來存儲參數(shù)f和s指針指向的內(nèi)容,注意空間的大小,最后把參數(shù)m的值賦給money,請在注釋“//**2**”之后添加適當?shù)恼Z句。
(3)完成類Person的析構函數(shù)的定義,把forename和surname指向的空間釋放,請在注釋“//**3**”之后添加適當?shù)恼Z句。
(4)完成類Person的成員函數(shù)display的定義,使其以格式"fornamesurnamehasmoney"的形式輸出內(nèi)容,請在注釋“//**4**”之后添加適當?shù)恼Z句。
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
輸出結果如下:
RichardBerkhas1000.56
Pressanykeytocontinue
源程序文件kt13_3.cpp清單如下:
#include
#include
classPerson
{ private:
//**1**
doublemoney;
public:
Person(char*f,char*s,doublem);
~Person();
voiddisplay(); };
Person::Person(char*f,char*s,doublem)
{ //**2**
strcpy(forename,f);
surname=newchar[strlen(s)+1];
strcpy(surname,s);
money=m; }
Person::~Person()
{ //**3** }
voidPerson::display()
{ //**4** }
voidmain()
{ Personp("Richard","Berk",1000.56);
p.display(); }
【參考答案】
(1)char *forename;
char *surname;
(2)forename = new char[strlen(f)+1];
(3)delete []forename;
delete []surname;

