版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 軟件設計師考試模擬題及答案-試題一 閱讀下列說明和圖,回答問題1問題3。說明 某公司的主要業(yè)務是出租圖書和唱碟。由于業(yè)務需求,該公司委托軟件開發(fā)公司A開發(fā)一套信息管理系統(tǒng)。該系統(tǒng)將記錄所有的圖書信息、唱碟信息、用戶信息、用戶租借信息等。A公司決定采用面向對象的分析和設計方法開發(fā)此系統(tǒng)。圖1-1所示為某類圖書或唱碟被借閱時應記錄的信息,圖1-2描述了系統(tǒng)定義的兩個類Book和CD,分別表示圖書和唱碟的信息。 1、問題1 經(jīng)過進一步分析,設計人員決定定義一個類Items on loan,以表示類Book和CD的共有屬性和方法。請采用圖1-2中屬性和方法的名稱給出類Items_on_loan應該具
2、有的屬性和方法(注意:不同名稱的屬性和方法表示不同的含義,如CD中的composer與 Book甲的author無任何關系)。2、問題2 為了記錄每種圖書或唱碟租借的歷史記錄,引入類CirculationHistory,類中存儲的信息是圖1-1中所表示的內(nèi)容。請采用UML表示法將下列四個類間的關系表示出來。 3、問題3 現(xiàn)需了解十大最暢銷(借出次數(shù)最多)圖書或唱碟。為此,引入TenPopulate類以存儲所有十大暢銷圖書或CD的名稱及其被借出的次數(shù)。下列順序圖描述了某類圖書或唱碟被借出后成為十大暢銷圖書或唱碟時對象間的消息交互。系統(tǒng)在一次運行過程中,應有 (1) 個TenPopulate實例對
3、象最合適,一個TenPopulate類實例對象最多需要和 (2) 個Items_on_loan實例對象交互。 試題二試題二 閱讀下列說明和圖,回答問題1至問題3。說明 某企業(yè)決定開發(fā)一個企業(yè)倉儲管理系統(tǒng),山李工承擔系統(tǒng)的設計工作。該系統(tǒng)的網(wǎng)絡連接如圖2-1所示。圖2-1 該企業(yè)有多個倉庫,圖2-1所示的中心數(shù)據(jù)庫存儲了各個倉庫中每種貨物的庫存信息。每個倉庫配備一臺前端機,進出貨物均由前端機輔助實現(xiàn)。管理員每天上班時,通過前端機從中心數(shù)據(jù)庫的庫存表中讀取本倉庫各種貨物的庫存數(shù),每個倉庫的當日業(yè)務數(shù)據(jù)也都暫存在前端機,當天業(yè)務結束后,再將前端機中存儲的數(shù)據(jù)傳輸?shù)街鳈C進行存儲與匯總。 每個倉庫可以存
4、放多種貨物,但同一種貨物不能存放在不同的倉庫中。每個倉庫有多個管理員,但每個管理員只管理一個倉庫。貨物出庫/入庫時,由倉庫管理員將貨物的條碼通過閱讀器輸入前端機中,貨物數(shù)量的默認值為1,可以由管理員修改。前端機根據(jù)輸入的貨物信息,打印“出庫/入庫”清單。出庫/入庫單中同一種貨物最多只出現(xiàn)一次,每份出庫/入庫單由流水號唯一標識。圖2-2是一個出庫單的實例。圖2-2 流水號;08080001300101 時間:2005-10-01 13:22貨物編碼貨物名稱單價數(shù)量6900100180988全自動洗衣機1680.0026690010017065532寸彩色電視機7580.0020690110016
5、01261P空調1360.0060 管理員:01105 出庫/入庫:出庫 該系統(tǒng)處理業(yè)務的過程如下。 1初始化:前端機根據(jù)倉庫號從貨物表中讀取本倉庫中每種貨物的貨物編碼、庫存量、貨物名稱和單價; 2登記出庫/入庫信息:由前端機存儲每一筆“出庫從庫”記錄: 3匯總:在每個工作日結束前匯總當日各種貨物的“出庫/入庫”量至日匯總表; 4更新庫存表:根據(jù)當日的匯總信息更新貨物的庫存。 李工經(jīng)過分析,設計出如圖2-3所示的關系模式。圖2-3 出入庫單(流水號,出入庫標志,管理員號,時間) 出入庫記錄(貨物編碼,數(shù)量,流水號) 日匯總表(日期,貨物編碼,數(shù)量,出入庫標志) 倉庫(倉庫號,倉庫名,倉庫電話)
6、 管理員(管理員號,姓名,倉庫號) 貨物( (a) ) 注:時間格式為年-月-日時:分;日期格式為年-月-日。 賣體聯(lián)系圖的表示方法如圖2-4所示,其中方框表示實體,菱形表示聯(lián)系,聯(lián)系的類型在實體與聯(lián)系的邊上標出。圖2-5為與該系統(tǒng)對應的實體聯(lián)系圖。圖2-4 圖2-5 4、問題1 根據(jù)題意,補充圖2-3中(a)處的空缺,即貨物關系模式的屬性。5、問題2 根據(jù)題意,補充圖2-5中缺失的聯(lián)系和聯(lián)系的類型,使其成為完善的實體聯(lián)系圖。其中,聯(lián)系名分別取名為聯(lián)系1,聯(lián)系2,聯(lián)系3,。6、問題3 寫出每種關系模式的主鍵。試題三試題三 閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內(nèi)。說明
7、某公司計劃與客戶通過Internet交換電子郵件和數(shù)據(jù)(以下統(tǒng)一稱為“消息”)。為保障安全,在對傳輸?shù)臄?shù)據(jù)進行加密的同時,還要對參與通信的實體進行身份認證。因此,需同時使用對稱與非對稱密鑰體系。圖3-1描述了接收者B使用非對稱密鑰體系對發(fā)送者A進行認證的過程。圖3-1 圖3-2描述了發(fā)送和接收消息的過程,其中的認證過程使用了圖3-1中的方法。圖31中的方框a和方框b與圖3-2中的方框a和方框b相同。圖3-2 圖3-2中發(fā)送和接收消息的過程是: 1)發(fā)送者A使用與接收者B共享的對稱密鑰體系的密鑰加密將要發(fā)送的消息。 2)為了實現(xiàn)身份認證,A使用與B共享的摘要算法生成消息摘要,并使用公鑰密碼體系把
8、生成的消息摘要加密后發(fā)送給B(這里假設A和B都能通過安全的方法獲得對方的公鑰)。 3)B使用非對稱密鑰體系解密收到的消息摘要,使用與A共享的對稱密鑰體系的密鑰解密加密后的消息,再使用與A共享的摘要算法針對解密后的消息生成消息摘要。 4)B對比自己生成的消息摘要與接收到的A發(fā)送的消息摘要是否相同,從而驗證發(fā)送者A的身份。 7、問題1 請在下列選項中選擇合適的答案,填入圖3-1、圖3-2的方框a和方框b。 B的公鑰,B的私鑰,摘要算法,A的私鑰,A的公鑰,會話密鑰8、問題2 請在下列選項中選擇合適的答案,填入圖3-2的方框c至方框f。 B的公鑰,B的私鑰,摘要算法,A的私鑰,A的公鑰,會話密鑰9、
9、問題3 按照圖3-2中的方法發(fā)送郵件時,使用不同的密碼體制加密消息和消息摘要,請用 150字以內(nèi)文字簡要說明這樣做的理由。10、問題4 請從下面關于摘要函數(shù)的說法中選出所有正確的描述。 a很容易使不同的輸入數(shù)據(jù)生成相同的輸出數(shù)據(jù)。 b根據(jù)輸入數(shù)據(jù)獲取輸出數(shù)據(jù)的時間非常短。 c根據(jù)輸入數(shù)據(jù)獲取輸出數(shù)據(jù)的時間非常長。 d輸出數(shù)據(jù)的長度比輸入數(shù)據(jù)的長度要長。 e根據(jù)輸出數(shù)據(jù)無法還原出輸入數(shù)據(jù)。試題四試題四 閱讀下列函數(shù)說明、圖和C代碼,將應填入 (n) 處的字句。說明 散列文件的存儲單位稱為桶(BUCKET)。假如一個桶能存放m個記錄,當桶中已有 m個同義詞(散列函數(shù)值相同)的記錄時,存放第m+1個
10、同義詞會發(fā)生“溢出”。此時需要將第m+1個同義詞存放到另一個稱為“溢出桶”的桶中。相對地,稱存放前m個同義詞的桶為“基桶”。溢出桶和基桶大小相同,用指針鏈接。查找指定元素記錄時,首先在基桶中查找。若找到,則成功返回,否則沿指針到溢出桶中進行查找。11、例如:設散列函數(shù)為Hash(Key)=Key mod 7,記錄的關鍵字序列為15,14,21,87,97,293,35,24,149,19,63,16,103,77,5,153,145,356,51,68,705,453,建立的散列文件內(nèi)容如圖4-1所示。圖4-1 為簡化起見,散列文件的存儲單位以內(nèi)存單元表示。 函數(shù)InsertToHashTab
11、le(int NewElemKey)的功能是:將元素NewEIemKey插入散列桶中,若插入成功則返回0,否則返回-1。 采用的散列函數(shù)為Hash(NewElemKey)=NewElemKey % P,其中P為設定的基桶數(shù)目。 函數(shù)中使用的預定義符號如下: #define NULLKEY -1 /*散列桶的空閑單元標識*/ #define P 7 /*散列文件中基桶的數(shù)目*/ #define ITEMS 3 /*基桶和溢出桶的容量*/ typedef struct BucketNode /*基桶和溢出桶的類型定義*/ int KcyDataITEMS; struct BucketNode *L
12、ink; BUCKET; BUCKET BucketP; /*基桶空間定義*/函數(shù) int lnsertToHashTable(int NewElemKey) /*將元素NewElemKey插入散列桶中,若插入成功則返回0,否則返回-1*/ /*設插入第一個元素前基桶的所有KeyData、Link域已分別初始化為NULLKEY、 NULL*/ int Index; /*基桶編號*/ int i,k; BUCKET *s,*front,*t; (1) ; for(i=0; iITEMS;i+)/*在基桶查找空閑單元,若找到則將元素存入*/ if(BucketIndex.KeyDatai=NULL
13、KEY) BucketIndex.KeyDatai=NewElemKey; break; if( (2) ) return 0; /*若基桶已滿,則在溢出桶中查找空閑單元,若找不到則申請新的溢出桶*/ (3) ; t=BucketIndex.Link; if(t!=NULL) /*有溢出桶*/ while (t!=NULL) for(k=0; kITEMS; k+) if(t-KeyDatak=NULLKEY)/*在溢出桶鏈表中找到空閑單元*/ t-KeyDatak=NewElemKey; break; /*if*/ front=t; if( (4) )t=t-Link; else break
14、; /*while*/ /*if*/ if( (5) ) /*申請新溢出桶并將元素存入*/ s=(BUCKET*)malloe(sizeof(BUCKET); if(!s) return-1; s-Link=NULL; for(k=0; kITEMS; k+) s-KeyDatak=NULLKEY; s-KeyData0=NewElemKey; (6) ; /*if*/ return 0; /*InsertToHashTable*/試題五試題五 閱讀以下說明和C+代碼,將應填入 (n) 處。說明 在一公文處理系統(tǒng)中,開發(fā)者定義了一個公文類OfficeDoc,其中定義了公文具有的屬性和處理公文的
15、相應方法。當公文的內(nèi)容或狀態(tài)發(fā)生變化時,關注此OfficeDoc類對象的相應的DocExplorer對象都要更新其自身的狀態(tài)。一個OfficeDoc對象能夠關聯(lián)一組 DocExplorer對象。當OfficeDoc對象的內(nèi)容或狀態(tài)發(fā)生變化時,所有與之相關聯(lián)的 DocExplorcr對象都將得到通知,這種應用被稱為觀察者模式。以下代碼寫在一個C+源文件中,能夠正確編譯通過。12、C+代碼 #include iostream const OBS_MAXNUM=20;/最多與OfficeDoc對象相關聯(lián)的DocExplorer對象的個數(shù) (1) ; class DocExplorer /關注Offi
16、ceDoc公文對象的類 public: DocExplorer( (2) *doc); /構造函數(shù) (3) void update(OfficeDoc *doc)=0;/更新自身狀態(tài)的函數(shù) /其他相關屬性和方法省略 ; class OfficeDoc /公文類 private: DocExplorer *myObsOBS_MAXNUM; /關注此公文類的DocExplorer類對象指針數(shù)組 int index; /與OfficeDoc對象關聯(lián)的DocExplorer對象的個數(shù) public: OfficeDoe() index=0; void attach(DocExplorer *o) /將
17、一DoeExplorer對象與OfficeDoe對象相關聯(lián) if(index =OBS_MAXNUM |o=NULL)return; for(int loop=0; loopindex; loop+) if(myObsloop=o) return; myObsindex=o; index+; void detaeh(DocExplorer *o) /接觸某DoeExplorer對象與OfficeDoc對象的關聯(lián) if(0=NULL) return; for(int loop=0; loopindex; loop+) if(myObsloop=o) if(loop=index-2)myObslo
18、op=myObsindex-1; myObsindex-1=NULL; index-; break; private: void notifyObs() /通知所有的DocExplorer對象更改自身狀態(tài) for(int loop=0; loopindex; loop+) myObsloop- (4) ; /DocExplorer對象更新自身狀態(tài) /其他公文類的相關屬性和方法 ; DocExplorer:DocExplorer(OfficeDoc *doc)/DocExplorer 類對象的構造函數(shù) doc- (5) ; /將此DocExplorer對象與doc對象相關聯(lián) 試題六試題六 閱讀以
19、下說明和Java代碼,將應填入 (n) 處。說明 在一公文處理系統(tǒng)中,開發(fā)者定義了一個公文類OfficeDoc,其中定義了公文具有的屬性和處理公文的相應方法。當公文的內(nèi)容或狀態(tài)發(fā)生變化時,關注此OfficeDoc類對象的相應的DocExplorer對象都要更新其自身的狀態(tài)。一個OfficeDoc對象能夠關聯(lián)一組 DocExplorer對象。當OfficeDoc對象的內(nèi)容或狀態(tài)發(fā)生變化時,所有與之相關聯(lián)的 DocExplorer對象都將得到通知,這種應用被稱為觀察者模式。以下代碼采用Java語言實現(xiàn),能夠正確編譯通過。13、Java代碼 /Subject.java 文件 public inter
20、face Subject public void attach(Observer DocExplorer); public void detach(Observer DocExplorer); void notifyObservers(); /Observer.java 文件 public interface Observer void update( (1) ); /OfficeDoc.java 文件 import java.util.*; public class OfficeDoc implements Subject(/OfficeDoc 類實現(xiàn) Subject 接口 private
21、Vector ObserverVeetor=new java.util.Vector(); /存儲與OfficeDoc相關聯(lián)的DocExplorer 對象 public void attach(Observer observer) /將某 DocExplorer 對象與OfficeDoc 相關聯(lián) ObserverVector.addElement(observer); public void detach(Observer observer) /解除某DocExplorer 對象與OfficeDoc的關聯(lián)關系 ObserverVector.removeElement(observer); pu
22、blic void notifyObservers() /當OfficeDoc對象狀態(tài)已發(fā)生變化時,通知所有的DocExplorer對象 Enumeration enumeration= (2) ; while (enumeration.hasMoreElements() (Observer)enumeration.nextElement(). (3) ; public Enumeration Observers() return ObserverVector.elements(); /其他公文類的屬性和方法省略 /DoeExplorer.java 文件 public class DocExp
23、lorer implements (4) public void update( (5) ) /更新DocExplorer自身的狀態(tài),代碼省略 試題七試題七 閱讀以下說明和C代碼,將應填入 (n) 處。說明 在一公文處理系統(tǒng)中,開發(fā)者定義了一個公文結構OfficeDoc,其中定義了公文應該具有的屬性(字段)。當公文的內(nèi)容或狀態(tài)發(fā)生變化時,與之相關聯(lián)的DocExplorer結構的值都需要發(fā)生改變。一個OfficeDoc結構能夠關聯(lián)一組DocExplorer結構。當OfficeDoc結構的內(nèi)容或狀態(tài)發(fā)生變化時,所有與之相關聯(lián)的DocExplorer結構都將被更新,這種應用被稱為觀察者模式。以下代碼
24、采用C語言實現(xiàn),能夠正確編譯通過。14、C代碼 #include stdio.h #define OBS_MAXNUM 20 /*一個OfficeDoc變量最多能夠關聯(lián)的*/ /*DoeExplorer變量的個數(shù)*/ typedef void( (1) )(struct OfficeDoc*,street DocExplorer*); struct DocExplorer func update;/* DocExplorer結構采用的更新函數(shù)*/ /*其他的結構字段省略*/ ; struct OfficeDoc (2) myObsOBS_MAXNUM; /*存儲所有與OfficeDoc相關聯(lián)的
25、DoeExplorer結構指針*/ int index;/*與OfficeDoc結構變量相關聯(lián)的DocExplorer結構變量的個數(shù)*/ ; void attach(struet OfficeDoc *doc, struet DocExplorer *ob) /*關聯(lián)Obersver結構ob與OfficeDoe結構doc*/ int loop=0; if(doc-index =OBS_MAXNUM | ob=NULL) return; for(loop=0; loop doc-index; loop+) if(doc-myObsloop=ob)return; doc-myObsdoe-inde
26、x=ob; doc-index+; ) void detach(struct OfficeDoc *doc, struct DocExplorer *ob) /*解除doc結構與ob結構間的關系*/ int loop; if(ob=NULL)return; for(loop=0; loop doc-index; loop6+) if(doc-myObsloop=ob) if(loop=doc-index-2) doe-myObsloop=doc-myObs (3) ; doc-myObsdoe-indox-1=NULL; doe-index-; break; void updatel(stru
27、ct OfficeDoc *doc,struct DocExplorer *ob) /*更新ob結構的值,更新代碼省略*/ void update2(stmct OfficeDoc *doc, struct DocExplorer *ob) /*更新ob結構的值,更新代碼省略*/ void notifyObs(struet OfficeDoc *doc) /*當doc結構的值發(fā)生變化時,通知與之關聯(lián)的所有DocExplorer結構變量*/ int loop; for(loop=0; loop doc-index; loop+) (doc-myObsloop)-update( (4) ); vo
28、id main() stmct OfficeDoc doc;/*定義一OfficeDoc變量*/ struct DocExplorer explorer1, explorer2;/*定義兩個DocExplorer變量*/ /*初始化與OfficeDoc變量相關的DocExplorer變量個數(shù)為0*/ doc.index=0; explorer1.update=update1;/*設置explorer1變量的更新函數(shù)*/ explorer2.update=update2;/*設置explorer2變量的更新函數(shù)*/ attaeh(&doc,&explorer1);/*關聯(lián)explorer1與do
29、c對象*/ attach(&doc,&explorer2);/*關聯(lián)explorer2與doc對象*/ /*其他代碼省略*/ (5) ;/*通知與OfficeDoc相關的所有DocExplorer變量*/ return; 答案:試題一1、問題1 屬性:title 方法:Reference Title解析 如果要求設計一個類表示Book和CD的共有屬性和方法,那么就需要從Book和 CD中找出相同的屬性和方法,Book和CD都有title屬性和reference title方法,所以 Item on loan的屬性為title,方法為reference title。 Book和CD應該繼承ite
30、m_on_loan類,所以它們之間的關系是繼承關系,而CirculationHistory表示對象的租借次數(shù),它不屬于Item_on_loan的屬性,但Item_on_loan應該能夠查詢到CirculationHistory記錄的信息,所以它們之間是聚集關系。 Tenpopulate類存儲十大暢銷圖書或CD的名稱及其被借出的次數(shù),順序圖中明確的給出了其對象,通常整個系統(tǒng)中有一個對象就可以了,但是為了記錄圖書或唱片的借出信息,每當有圖書或唱片被借出時,都需要和TenPopulate類的對象發(fā)生交互。因此有可能所有的圖書和唱片都要和TenPopulate類對象發(fā)生交互。2、問題2 其中,類Ite
31、ms_on_loan與CirculationHistory之間是聚集關系;Book、CD與 Items_on_loan之間是繼承關系。 3、問題3 (1)1 (2)圖書和唱碟種類數(shù) 試題二4、問題1 貨物編碼,貨物名稱,單價,倉庫號,庫存量解析 貨物關系模式要保存貨物的信息,因此需要有貨物編碼,這是貨物的唯一標識,由于其他的關系模式中未出現(xiàn)貨物名稱和單價,因此關系模式需要有單價和貨物名稱兩項,因為每一種貨物只能放在一個倉庫中,因此需要有倉庫號信息,每天前端機獲取貨物的庫存信息,還需要有庫存量屬性,因此,(a)處應填寫: 貨物編碼,貨物名稱,單價,倉庫號,庫存量5、問題2 其中,聯(lián)系名中的序號可
32、任意排列。 若聯(lián)系3建立在出入庫單和日匯總表之間也正確,或者同時建立兩個聯(lián)系也正確。解析 根據(jù)題目說明部分的描述,一張出/入庫單上有多條出庫記錄,而每條出庫記錄只能在一張出庫單上顯示,一條出庫記錄只能表示一種貨物的出庫或入庫,而一種貨物可以出、入庫多次。因此出入庫單與出入庫記錄之間的聯(lián)系是一對多(1:n),貨物與出入庫記錄之間的聯(lián)系是一對多(1:n)。同時,每條出/入庫記錄只能匯總到一條日匯總表記錄,而一張日匯總表記錄對應了多條出入庫記錄,因此日匯總表與出入庫記錄之間的聯(lián)系是一對多(1:n)。由于每種貨物只能放在一個倉庫中,而一個倉庫可以存放多種貨物,因此倉庫與貨物之間的聯(lián)系是一對多(1:n)
33、。每個倉庫可以有多個管理員,而一個管理員只能管理一個倉庫,因此倉庫與管理員之間的聯(lián)系是(1n)。ER圖見參考答案。6、問題3 出入庫單的主鍵:流水號 出入庫記錄的主鍵:流水號,貨物編碼 日匯總表的主鍵:日期,貨物編碼,出入庫標志 倉庫的主鍵:倉庫號 管理員的主鍵:管理員號 貨物的主鍵:貨物編碼解析 分析出入庫單(流水號,出入庫標志,管理員號,時間)的屬性可知,只有流水號可以標識唯一的一張出入庫單,因此出入庫單的主鍵為流水號。在出入庫記錄(貨物編碼,數(shù)量,流水號)中,流水號加貨物編碼可以唯一地標識一條出入庫記錄,因此出入庫記錄的主鍵為流水號和貨物編碼。在日匯總表(日期,貨物編碼,數(shù)量,出入庫標志
34、)中,同一貨物可在多條記錄中出現(xiàn),在同一時間,相同貨物可在多條記錄中出現(xiàn),因此日期、貨物編碼和出入庫標志標識一張日匯總表的一條記錄,即日匯總表的主鍵為日期、貨物編碼和出入庫標志。顯然,從管理的角度出發(fā),一個倉庫號唯一標識一個倉庫,每名管理員被分配唯一的管理員號,每種貨物都分配了唯一的貨物編碼。試題三7、問題1 方框a:A的私鑰,方框b:A的公鑰解析 本題考查有關安全和密碼的知識。 這里主要解決發(fā)送方和接收方的認證問題。發(fā)送方應該使用只有自己才掌握的私鑰對數(shù)據(jù)進行加密,這樣才能確保在認證過程中對發(fā)送方的認證。接收方應使用發(fā)送方的公鑰對認證數(shù)據(jù)進行解密,以達到認證目的,因此方框a和b分別為,A的私
35、鑰,A的公鑰。8、問題2 方框c:摘要算法 方框d:會話密鑰 方框e:會話密鑰 方框f:摘要算法解析 在傳輸大量數(shù)據(jù)時,會由發(fā)送方和接收方協(xié)商會話密鑰,使用會話密鑰對數(shù)據(jù)進行加解密。與此同時,使用摘要算法對數(shù)據(jù)生成摘要進行認證,因此方框c、d、e、f分別為摘要算法、會話密鑰、會話密鑰、摘要算法。9、問題3 對稱密鑰體系的加解密效率非常高,適合于加解密大量的數(shù)據(jù),因此可用于加密消息。公鑰密碼體系的加解密效率較低,更適合用于加密少量數(shù)據(jù)的場合,因此可用于加密消息摘要和會話密鑰。解析 對稱密鑰體系的加解密效率非常高,適合于加解密大量的數(shù)據(jù),因此可用于加密消息。公鑰密碼體系的加解密效率較低,更適合用于
36、加密少量數(shù)據(jù)的場合,因此可用于加密消息摘要和會話密鑰。10、問題4 b根據(jù)輸入數(shù)據(jù)獲取輸出數(shù)據(jù)的時間非常短 e根據(jù)輸出數(shù)據(jù)無法還原出輸入數(shù)據(jù)解析 摘要函數(shù)具有如下特點:根據(jù)輸入數(shù)據(jù)獲取輸出數(shù)據(jù)的時間非常短,并且根據(jù)輸出數(shù)據(jù)無法還原出輸入數(shù)據(jù)。試題四11、(1) Index=NewElemKey % P (2) iITEMS (3) front=&BucketIndex (4) k=ITEMS (5) t=NULL,或!t (6) front-Link=s解析 本題考查元素的散列存儲。 元素作散列存儲時,首先用設定的散列函數(shù)計算元素的存儲位置。在本題中,將元素存儲在預先設定的基桶或根據(jù)需要申請的
37、溢出桶中,只要基桶中有空閑單元,就將新元素NewElemKey插入在基桶中,若基桶中無空閑單元,則看是否存在溢出桶,若存在,則在溢出桶中查找空閑單元,若不存在溢出桶或溢出桶中無空閑單元,則申請一個溢出桶并存入新元素。 在基桶查找空閑單元時使用的桶號為Index,可知空(1)處應填入“Index= NewElemKey % P”。顯然,一旦在基桶中找到空閑單元,即“BucketIndex.KeyDatai= NULLKEY”(0iITEMS),則可將元素NewElemKey放入BucketIndex.KeyDatai,至此元素已經(jīng)插入散列桶中,函數(shù)可返回,因此空(2)處應填入“iITEMS”;反
38、之,若在基桶中沒有找到空閑單元,則需查找溢出桶?!皌=BucketIndex.Link”,指針t首先指向桶號Index的第一個溢出桶。下面的代碼即為在溢出桶中查找空閑單元。 if(t!=NULL) /*有溢出桶*/ while(t!=NULL) for(k=0; kITEMS;k+) if(t-KeyDatak=NULLKEY)/*在溢出桶鏈表中找到空閑單元*/ t-KeyDatak=NewElemKey; break; /*if*/ front=t; if( (4) )t=t-Link; else break; /*while*/ /*if*/ 由于每個溢出桶都可以存儲ITEMS個元素,所以
39、在溢出桶中查找空閑單元與在基桶中的查找過程相同,代碼如下。 for(k=0;kITEMS;k+) if(t-KcyDatak=NULLKEY)/*在溢出桶鏈表中找到空閑單元*/ t-KeyDatak=NewElemKey; break; /*if*/ 若在指針t指向的溢出桶中找到空閑單元則插入元素,否則,由“t=t-Link”得到下一個溢出桶的指針,因此“kITEMS”可作為是否在當前溢出桶中找到空閑單元的判定條件。 顯然,在桶號Index的基桶和其所有溢出桶都已滿的情況下,t的值為空指針。此時才需要申請新的溢出桶并建立鏈接關系,因此在上面查找溢出桶中空閑單元時,進行指針t的后移“t=t-Li
40、nk”前應先用front記錄t的值,以便于后面建立鏈接關系。所以空(3)處應給front置初值,即“front=&BucketIndex”,空(4)填入“k=ITEMS”,空(5)填入“tNULL”???6)處建立新申請溢出桶的鏈接關系“front-Link=s”。試題五12、(1) class OfficeDoc (2) OfficeDoc (3) virtual (4) update(this) (5) attach(this)解析 首先,DocExplorer需要知道OfficeDoc是一個類,但因為OfficeDoc定義在 DocExplorer之后,所以需要在DocExplorer類的定義前加上class OfficeDoc的聲明,因此(1)空處應該填寫class OfficeDoc 第(2)空可根據(jù)程序最后的構造函數(shù)的實現(xiàn)知道,應該填寫Offic
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全員A證考試能力提升試題打?。ㄖ攸c)附答案詳解
- 2025年唐山市公務員考試行測試卷歷年真題及參考答案詳解
- 安全員A證考試能力測試備考題附完整答案詳解(考點梳理)
- 安全員A證考試考試綜合練習含答案詳解【a卷】
- 2025年裁判員高分題庫及答案詳解(新)
- 安全員A證考試考前沖刺分析附參考答案詳解【模擬題】
- 安全員A證考試全真模擬模擬題帶答案詳解(綜合題)
- 未來五年城市垃圾中轉服務企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略分析研究報告
- 未來五年型模底板企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報告
- 未來五年蝎子養(yǎng)殖企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略分析研究報告
- 高三英語一輪復習北師大版選擇性單詞默寫本
- JB-T 10833-2017 起重機用聚氨酯緩沖器
- 項目二 模塊四 波音737-800飛機乘務員控制面板及娛樂系統(tǒng)的操作方法課件講解
- 2022年新疆維吾爾自治區(qū)新疆生產(chǎn)建設兵團中考數(shù)學試題(無答案)
- 福建省福州市2023-2024學年高一上學期期末考試物理試卷2
- 鋼結構生產(chǎn)工藝流程
- 2022-2023學年四川省宜賓市高一(下)期末數(shù)學試卷(含解析)
- 教你填《廣東省普通高中學生檔案》精編版
- 大學生兼職家教個人簡歷
- 轉動極板技術簡介
- 《人類行為與社會環(huán)境》課件
評論
0/150
提交評論