二、簡單應用題
請編寫一個函數(shù)intSeqSearch(intlist[],intstart,intn,intkey),該函數(shù)從start開始,在大小為n的數(shù)組list中查找key值,返回最先找到的key值的位置,如果沒有找到則返回-1。請使用for循環(huán)實現(xiàn)。
注意:部分源程序已存在文件kt4_2.cpp中。
請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)SeqSearch的花括號中填寫若干語句。
文件kt4_2.cpp的內(nèi)容如下:
#include
intSeqSearch(intlist[],intstart,intn,intkey)
{
}
voidmain()
{
intA[10];
intkey,count=0,pos;
cout<<"Enteralistof10integers:";
for(pos=0;pos<10;pos++)
{
cin>>A[pos];
}
cout<<"Enterakey:";
cin>>key;
pos=0;
while((pos=SeqSearch(A,pos,10,key))!=-1)
{
count++;
pos++;
}
cout<
}
【參考答案】
int SeqSearch(int list[], int start, int n, int key)
{
for(int i=start;i
{
if(list[i]==key)
{
return i;
}
}
return -1;
}
【試題解析】
本題考查的是考生使用for和if等基本控制結(jié)構(gòu)的綜合水平,查找一個數(shù)組中的指定元素并返回序號是一個基本操作,注意一維數(shù)組的實參格式。
三、綜合應用題
使用VC6打開考生文件夾下的工程kt4_3,此工程包含一個源程序文件kt4_3.cpp,其中定義了用于表示向量的類vector,但類vector的定義并不完整。請按要求完成下列操作,將類vector的定義補充完整。
(1)補充類vector的構(gòu)造函數(shù),該函數(shù)有參數(shù)x和y,它們都是int型的數(shù)據(jù),默認值都為0。請使用參數(shù)列表的形式分別將類的數(shù)據(jù)成員a和b分別初始化為參數(shù)x和y的值。請在注釋“//**1**”之后添加適當?shù)恼Z句。
(2)完成類vector的成員函數(shù)input(intx,inty)的定義,將int型的參數(shù)x和y分別賦值給數(shù)據(jù)成員a和b,請在注釋“//**2**”之后添加適當?shù)恼Z句。
(3)完成類vector的友元函數(shù)frienddoubleMultiply(vector&x,vector&y)的定義,先定義double型的臨時變量c,然后將參數(shù)對象x和對象y的數(shù)據(jù)成員a與b分別相乘再相加后賦值給c,最后返回c的值,將請在注釋“//**3**”之后添加適當?shù)恼Z句。輸出結(jié)果如下:
(10,20)
(2,3)
80
注意:除在指定位置添加語句之外,請不要改動程序中的其他內(nèi)容。
源程序如下:
#include
classvector
{
inta;
intb;
public:
//**1**
voidinput(intx,inty)
{//**2**}
voidoutput()
{cout<<''(''<
frienddoubleMultiply(vector&x,vector&y);
};
doubleMultiply(vector&x,vector&y)
{
//**3**
c=x.a*y.a+x.b*y.b;
returnc;
}
voidmain()
{
vectorx(10,20),y;
doubled;
y.input(2,3);
d=Multiply(x,y);
x.output();
y.output();
cout<
}
【參考答案】
(1)vector (int x=0,int y=0):a(x),b(y){}
(2)a=x; b=y;
(3)double c;
【試題解析】
本題主要考查類的定義和友元函數(shù)定義,其中(1)中的參數(shù)列表形式和(3)中對象訪問成員使用“.”操作符。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |