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