2016年下半年軟件設(shè)計(jì)師考試真題之下午題(2)

軟件設(shè)計(jì)師 責(zé)任編輯:木木 2016-11-24

添加老師微信

備考咨詢

加我微信

摘要:2016年下半年軟件設(shè)計(jì)師考試下午真題第二部分。

       >>>【希賽】2016年下半年軟考分?jǐn)?shù)早知道,希賽網(wǎng)解析真題


       軟考?xì)v年真題是考生備考的法寶,希賽軟考網(wǎng)整理了2016年下半年軟件設(shè)計(jì)師考試真題之下午題,供大家參考學(xué)習(xí)。以下為2016年下半年軟件設(shè)計(jì)師下午真題第二部分。


       試題三(共15分)

       閱讀下列說(shuō)明,回答問(wèn)題1至問(wèn)題3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。

       【說(shuō)明】

       某種出售罐裝飲料的自動(dòng)售貨機(jī)(Vending Machine)的工作過(guò)程描述如下:

       (l)顧客選擇所需購(gòu)買(mǎi)的飲料及數(shù)量。

       (2)顧客從投幣口向自動(dòng)售貨機(jī)中投入硬幣(該自動(dòng)售貨機(jī)只接收硬幣)。硬幣器收集投入的硬幣并計(jì)算其對(duì)應(yīng)的價(jià)值。如果所投入的硬幣足夠購(gòu)買(mǎi)所需數(shù)量的這種飲料且飲料數(shù)量足夠,則推出飲料,計(jì)算找零,顧客取走飲料和找回的硬幣;如果投入的硬幣不夠或者所選購(gòu)的飲料數(shù)量不足,則提示用戶繼續(xù)投入硬幣或重新選擇飲料及數(shù)量。

       (3)一次購(gòu)買(mǎi)結(jié)束之后,將硬幣器中的硬幣移走(清空硬幣器),等待下一次交易。自動(dòng)售貨機(jī)還設(shè)有一個(gè)退幣按鈕,用于退還顧客所投入的硬幣。已經(jīng)成功購(gòu)買(mǎi)飲料的

       錢(qián)是不會(huì)被退回的。

3軟設(shè)1.png

       現(xiàn)采用面向?qū)ο蠓椒ǚ治龊驮O(shè)計(jì)該自動(dòng)售貨機(jī)的軟件系統(tǒng),得到如圖3-1所示的用例圖,其中,用例“購(gòu)買(mǎi)飲料”的用例規(guī)約描述如下。

       參與者:顧客。

       主要事件流:

       1.顧客選擇需要購(gòu)買(mǎi)的飲料和數(shù)量,投入硬幣;

       2.自動(dòng)售貨機(jī)檢查顧客是否投入足夠的硬幣;

       3.自動(dòng)售貨機(jī)檢查飲料信存?zhèn)}中所選購(gòu)的飲料是否足夠;

       4.自動(dòng)售貨機(jī)推出飲料;

       5.自動(dòng)售貨機(jī)返回找零。

       各選事件流:

       2a.若投入的硬幣不足,則給出提示并退回到1;

       3a.若所選購(gòu)的飲料數(shù)量不足j,則給出提示并退回到1。

       根據(jù)用例“購(gòu)買(mǎi)飲料”得到自動(dòng)售貨機(jī)的4個(gè)狀態(tài):“空閑”狀態(tài)、“準(zhǔn)備服務(wù)”狀態(tài)、“可購(gòu)買(mǎi)”狀態(tài)以及“飲料出售”狀態(tài),對(duì)應(yīng)的狀態(tài)圖如圖3-2所示。

3軟設(shè)2.png

       所設(shè)計(jì)的類圖如圖3-3所示。

       【問(wèn)題1】(6分)

       根據(jù)說(shuō)明中的描述,使用說(shuō)明中的術(shù)語(yǔ),給出圖3-2中的S1~S4所對(duì)應(yīng)的狀態(tài)名。

       【問(wèn)題2】(4分)

       根據(jù)說(shuō)明中的描述,使用說(shuō)明中的術(shù)語(yǔ),給出圖3-2中的E1~E4所對(duì)應(yīng)的事件名。

       【問(wèn)題3】(5分)

       根據(jù)說(shuō)明中的描述,使用說(shuō)明中的術(shù)語(yǔ),給出圖3-3中CI~C5所對(duì)應(yīng)的類名。


       試題四(共15分)

       閱讀下列說(shuō)明和C代碼,回答問(wèn)題1至問(wèn)題3,將解答寫(xiě)在答題紙的對(duì)應(yīng)欄內(nèi)。

       【說(shuō)明】

       模式匹配是指給定主串t和子串s,在主串t中尋找子串s的過(guò)程,其中s稱為模式。

       如果匹配成功,返回s在t中的位置,否則返回-1。

       KMP算法用next數(shù)組對(duì)匹配過(guò)程進(jìn)行了優(yōu)化。KMP算法的偽代碼描述如下:

       1.在串t和串s中,分別設(shè)比較的起始下標(biāo)i=J=O

       2.如果串t和串s都還有字符,則循環(huán)執(zhí)行下列操作:

       (1)如果j=-l或者t[i]-s[j],則將i和j分別加1,繼續(xù)比較t和s的下一個(gè)字符;

       (2)否則,將j向右滑動(dòng)到next[j]的位置,即j=next[J]

       3.如果s中所有字符均已比較完畢,則返回匹配的起始位置(從1開(kāi)始);否則返回一1.

       其中,next數(shù)組根據(jù)子串s求解。求解next數(shù)組的代碼已由get_next函數(shù)給出。

       【C代碼】

       (1)常量和變量說(shuō)明

       t,s:長(zhǎng)度為憫鉑Is的字符串

       next:next數(shù)組,長(zhǎng)度為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;

       【問(wèn)題1】(8分)

       根據(jù)題干說(shuō)明,填充C代碼中的空(1)~(4).

       【問(wèn)題2】(2分)

       根據(jù)題干說(shuō)明和C代碼,分析出kmp算法的時(shí)間復(fù)雜度為(5)(主串和子的長(zhǎng)度分別為It和Is,用O符號(hào)表示)。

       【問(wèn)題3】(5分)

       根據(jù)C代碼,字符串“BBABBCAC”的next數(shù)組元素值為(6)(直接寫(xiě)素值,之間用逗號(hào)隔開(kāi))。若主串為“AABBCBBABBCACCD”,子串為“BBABBCAC則函數(shù)Kmp的返回值是(7)。


       >>>返回目錄:2016年下半年軟件設(shè)計(jì)師考試真題(下午題)

       >>>2016年下半年軟件設(shè)計(jì)師考試下午真題答案與解析


       相關(guān)推薦:

       軟件設(shè)計(jì)師考試歷年真題答案與解析

       2017年軟件設(shè)計(jì)師考試輔導(dǎo)教材推薦

       軟件設(shè)計(jì)師考試培訓(xùn)視頻教程

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請(qǐng)考生以權(quán)威部門(mén)公布的內(nèi)容為準(zhǔn)!

軟考備考資料免費(fèi)領(lǐng)取

去領(lǐng)取

!
咨詢?cè)诰€老師!