上機考試試題答案與解析
一、程序改錯題
(1)應改為“classTC”。
(2)應改為“~TC(){}”。
(3)應改為“};”。
【解析】本題第1處的“classTC()”為類的定義,根據C++中類的定義格式,類名后面是沒有括號的,所以第1處應為“classTC”。第2處的“void~TC(){}”是析構函數,C++中析構函數的格式中是沒有函數類型說明的,所以修改為“~TC(){}”。根據C++中類的定義,第3個標識下類結束的“}”缺少分號,即修改為“};”。
二、簡單應用題
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,上界不變。
三、綜合應用題
(1)應添加“pParenl->next=telnp;”。
(2)應添加“pNext=pNext->next;”。
(3)將“while()”補充完整為“while(P->next!=NULL)”。
(4)將“TC*t1=;”補充完整為“TC*t1=P->next;”。
【解析】本題第1處要求“在父結點的Next中保存新插入的結點的指針”。對于指針的操作,pParent->next為pParent的子結點,在父結點的Next中保存新插入的結點的指針,即“pParent->next=temp;”。第2處要求“把pNext的子結點賦給pNext本身”。pNext->next為pNext的子結點,把pNext的子結點賦給pNext本身,即“pNext=pNext->next;”。注釋3下是判定P的子結點不為空。P的子結點是p->next。程序中的“while()”缺乏P的子結點不為空的判斷條件,所以修改為“while(P->next!=NULL)”。第4處要求“用t1保存動態(tài)申請內存結點的鏈表頭”。P為鏈表,P->next為鏈表頭。程序中的語句“TC*t1=;”中t1沒有被賦值,所以修改為“TC*t1=P->next;”。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |