8[單選題] 下列敘述中正確的是( )。
A.循環(huán)隊列有隊頭和隊尾兩個指針,因此循環(huán)隊列是非線性結(jié)構(gòu)
B.在循環(huán)隊列中,只需要隊頭指針就能反映隊列中元素的動態(tài)變化情況
C.在循環(huán)隊列中,只需要隊尾指針就能反映隊列中元素的動態(tài)變化情況
D.循環(huán)隊列中元素的個數(shù)是由隊頭指針和隊尾指針共同決定
參考答案:D
參考解析:循環(huán)隊列中元素的個數(shù)是由隊首指針和隊尾指針共同決定的,元素的動態(tài)變化也是通過隊首指針和隊尾指針來反映的,當隊首等于隊尾時,隊列為空。
9[簡答題]使用VC++6.0打開考生文件夾下的源程序文件1.cpp,該程序運行時有錯誤,請改正其中的錯誤,使得程序正確運行。
程序輸出:
s1:n=20
s2:n=10
執(zhí)行s3.add(s1,s2)
s3:n=30
s4:n=30
注意:不要改動main函數(shù),不能增加或刪除行,也不能更改程序的結(jié)構(gòu),錯誤的語句在//******error******的下面。
試題程序:
#include
classTC
{
intn;
public:
TC(){}
TC(intm)
{
n=m:
}
//********error********
TCadd(TCs1,s2)
{
this->n=s1.n+s2.n;
//********error********
return(this);
}
voiddisp()
{
cout<<"n一="<
}
//********error********
}
voidmain()
{
TCs1(20),s2(10),s3,s4;
cout<<"s1:";
s1.disp();
cout<<"s2:";
s2.disp();
s4=s3.add(s1,s2);
cout<("執(zhí)行s3.add(s1,s2)\ns3:";
s3.disp();
COUt<<"s4:";s4.disp();
}
參考解析:
(1)應改為“TCadd(TCs1,TCs2)”。
(2)應改為“return(*this);”。
(3)應改為“};”。
【解析】本題中的變量“s2”沒有聲明類型,所以補充“s2”的類型,即“TCadd(TCs1,TCs2)”,“this->n=s1.n+s2.n;”語句中的this變量為指針變量,所以第2處的“return(this);”返回語句中的this變量,應該返回指針型,所以修改為“return(*this);”。C++中類的定義格式應為“class類名{};”,以分號為結(jié)尾,所以在第3處的類結(jié)尾處補充分號“;”,即修改為“};”。
10[簡答題]使用VC++6.0打開考生文件夾下的源程序文件2.cpp。請完成函數(shù)fun(char*str,charch)的定義,本函數(shù)采用二分法,在已按字母次序從小到大排序的字符數(shù)組str中,查找字符ch,若ch在數(shù)組中,函數(shù)返回字符ch在數(shù)組中的下標,否則返回1。
二分法查找的思想是初始查找區(qū)間的下界為0,上界為len-1,查找區(qū)間的中部后,k=(下界+上界)/2;若list[k]等于ch,查找成功;若list[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。在新區(qū)間內(nèi)繼續(xù)用二分法查找。
注意:請勿改動主函數(shù)main與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include(iostream.h>
intfun(char*str,charch)
{
}
voidmain()
{
charstr[]={'a','b','C','d','e','f','9','h','i,'
j','k');
charch;
cout<<"請輸入一個字符:"<
cin>>ch;
cout<<"輸入字符的位置是:"<
return;
}
參考解析:
intlow=0;//初始查找區(qū)間的下界
inthigh;
intk;
for(high=0;str[high]!=0;high++)//求字符串長度
while(10w
{
k=(low+high)/2;
if(str[k]==ch)
returnk;
elseif(str[k]>ch)
high=k-l:
elselow=k+1:
}
if(str[low]==ch)
returnlow;
return-1:
【解析】本題首先初始查找區(qū)間的下界為0,然后求得字符串長度len,上界為len-1,查找區(qū)間的中部后,k=(下界+上界)/2;若list[k]等于ch,查找成功。若list[k]>ch,則新的查找區(qū)間的下界不變,上界改為k-1;否則新的查找區(qū)間的下界改為k+1,上界不變。
相關(guān)推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |