摘要:2016年下半年軟件設計師考試下午真題第二部分。
>>>【希賽】2016年下半年軟考分數(shù)早知道,希賽網解析真題
軟考歷年真題是考生備考的法寶,希賽軟考網整理了2016年下半年軟件設計師考試真題之下午題,供大家參考學習。以下為2016年下半年軟件設計師下午真題第二部分。
試題三(共15分)
閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內。
【說明】
某種出售罐裝飲料的自動售貨機(Vending Machine)的工作過程描述如下:
(l)顧客選擇所需購買的飲料及數(shù)量。
(2)顧客從投幣口向自動售貨機中投入硬幣(該自動售貨機只接收硬幣)。硬幣器收集投入的硬幣并計算其對應的價值。如果所投入的硬幣足夠購買所需數(shù)量的這種飲料且飲料數(shù)量足夠,則推出飲料,計算找零,顧客取走飲料和找回的硬幣;如果投入的硬幣不夠或者所選購的飲料數(shù)量不足,則提示用戶繼續(xù)投入硬幣或重新選擇飲料及數(shù)量。
(3)一次購買結束之后,將硬幣器中的硬幣移走(清空硬幣器),等待下一次交易。自動售貨機還設有一個退幣按鈕,用于退還顧客所投入的硬幣。已經成功購買飲料的
錢是不會被退回的。
現(xiàn)采用面向對象方法分析和設計該自動售貨機的軟件系統(tǒng),得到如圖3-1所示的用例圖,其中,用例“購買飲料”的用例規(guī)約描述如下。
參與者:顧客。
主要事件流:
1.顧客選擇需要購買的飲料和數(shù)量,投入硬幣;
2.自動售貨機檢查顧客是否投入足夠的硬幣;
3.自動售貨機檢查飲料信存?zhèn)}中所選購的飲料是否足夠;
4.自動售貨機推出飲料;
5.自動售貨機返回找零。
各選事件流:
2a.若投入的硬幣不足,則給出提示并退回到1;
3a.若所選購的飲料數(shù)量不足j,則給出提示并退回到1。
根據(jù)用例“購買飲料”得到自動售貨機的4個狀態(tài):“空閑”狀態(tài)、“準備服務”狀態(tài)、“可購買”狀態(tài)以及“飲料出售”狀態(tài),對應的狀態(tài)圖如圖3-2所示。
所設計的類圖如圖3-3所示。
【問題1】(6分)
根據(jù)說明中的描述,使用說明中的術語,給出圖3-2中的S1~S4所對應的狀態(tài)名。
【問題2】(4分)
根據(jù)說明中的描述,使用說明中的術語,給出圖3-2中的E1~E4所對應的事件名。
【問題3】(5分)
根據(jù)說明中的描述,使用說明中的術語,給出圖3-3中CI~C5所對應的類名。
試題四(共15分)
閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內。
【說明】
模式匹配是指給定主串t和子串s,在主串t中尋找子串s的過程,其中s稱為模式。
如果匹配成功,返回s在t中的位置,否則返回-1。
KMP算法用next數(shù)組對匹配過程進行了優(yōu)化。KMP算法的偽代碼描述如下:
1.在串t和串s中,分別設比較的起始下標i=J=O
2.如果串t和串s都還有字符,則循環(huán)執(zhí)行下列操作:
(1)如果j=-l或者t[i]-s[j],則將i和j分別加1,繼續(xù)比較t和s的下一個字符;
(2)否則,將j向右滑動到next[j]的位置,即j=next[J]
3.如果s中所有字符均已比較完畢,則返回匹配的起始位置(從1開始);否則返回一1.
其中,next數(shù)組根據(jù)子串s求解。求解next數(shù)組的代碼已由get_next函數(shù)給出。
【C代碼】
(1)常量和變量說明
t,s:長度為憫鉑Is的字符串
next:next數(shù)組,長度為Is
(2)C程序
#include<stdio.h>
#nclude<stdliB.h>
#include<string.h>
/*求next[]的值*/
void get_next(int *next,char *s,int Is){
int i=0,j=-1;
next[0]=-1;/*初始化next[0]*/
while(i<ls){/*還有字符*/
if(j=-1 || s[i]=s[j]){/*匹配*/
j++;
i++;
if(s[i]一s[jl)
next[i]-next[j];
else
Next[i]=j;
}
else
J=next[j];
}
}
int kmp(int*next,char*t,char*s,int.lt,int Is)
{
inti=0,j=0;
while(i<lt &&(1){
if(j=-1 II 2_){
i++;
j++;
}else
(3):
}
if(j>=ls)
Return(4)
else.
return -1;
【問題1】(8分)
根據(jù)題干說明,填充C代碼中的空(1)~(4).
【問題2】(2分)
根據(jù)題干說明和C代碼,分析出kmp算法的時間復雜度為(5)(主串和子的長度分別為It和Is,用O符號表示)。
【問題3】(5分)
根據(jù)C代碼,字符串“BBABBCAC”的next數(shù)組元素值為(6)(直接寫素值,之間用逗號隔開)。若主串為“AABBCBBABBCACCD”,子串為“BBABBCAC則函數(shù)Kmp的返回值是(7)。
>>>返回目錄:2016年下半年軟件設計師考試真題(下午題)
相關推薦:
軟考備考資料免費領取
去領取