女人久久久www免费人成看片,国内自拍偷拍网,国产一区二区三区免费在线观看,欧美精品三区四区,91久久国产综合久久91,欧美成人精品第一区二区三区 ,美女成人在线观看

軟題庫 學習課程
試卷年份2005年下半年
試題題型【分析簡答題】
試題內(nèi)容

試題六
閱讀以下說明和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),能夠正確編譯通過。
[Java代碼]
//Subject.java 文件
public interface 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 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);
}
public 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 DocExplorer implements   (4)  {
public void update(  (5)  ){
//更新DocExplorer自身的狀態(tài),代碼省略
}
}

查看答案

相關試題

3題:

試題三
閱讀下列說明和圖,回答問題1至問題4,將解答填入答題紙的對應欄內(nèi)。
[說明]
某公司計劃與客戶通過Internet交換電子郵件和數(shù)據(jù)(以下統(tǒng)一稱為“消息”)。為保障安全,在對傳輸?shù)臄?shù)據(jù)進行加密的同時,還要對參與通信的實體進行身份認證。因此,需同時使用對稱與非對稱密鑰體系。圖3-1描述了接收者B使用非對稱密鑰體系對發(fā)送者A進行認證的過程。
[圖3-1]

圖3-2描述了發(fā)送和接收消息的過程,其中的認證過程使用了圖3-1中的方法。圖3—1中的方框a和方框b與圖3-2中的方框a和方框b相同。
[圖3-2]
圖3-2中發(fā)送和接收消息的過程是:
1)發(fā)送者A使用與接收者B共享的對稱密鑰體系的密鑰加密將要發(fā)送的消息。
2)為了實現(xiàn)身份認證,A使用與B共享的摘要算法生成消息摘要,并使用公鑰密碼體系把生成的消息摘要加密后發(fā)送給B(這里假設A和B都能通過安全的方法獲得對方的公鑰)。
3)B使用非對稱密鑰體系解密收到的消息摘要,使用與A共享的對稱密鑰體系的密鑰解密加密后的消息,再使用與A共享的摘要算法針對解密后的消息生成消息摘要。
4)B對比自己生成的消息摘要與接收到的A發(fā)送的消息摘要是否相同,從而驗證發(fā)送者A的身份。

[問題1]
請在下列選項中選擇合適的答案,填入圖3-1、圖3-2的方框a和方框b。
B的公鑰,B的私鑰,摘要算法,A的私鑰,A的公鑰,會話密鑰
[問題2]
請在下列選項中選擇合適的答案,填入圖3-2的方框c至方框f。
B的公鑰,B的私鑰,摘要算法,A的私鑰,A的公鑰,會話密鑰
[問題3]
按照圖3-2中的方法發(fā)送郵件時,使用不同的密碼體制加密消息和消息摘要,請用 150字以內(nèi)文字簡要說明這樣做的理由。
[問題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ù)。

答案解析與討論:m.xiexiliangjiufa.com/st/2453128972.html

4題:

試題四
閱讀下列函數(shù)說明、圖和C代碼,將應填入  (n)  處的字句。
[說明]
散列文件的存儲單位稱為桶(BUCKET)。假如一個桶能存放m個記錄,當桶中已有 m個同義詞(散列函數(shù)值相同)的記錄時,存放第m+1個同義詞會發(fā)生“溢出”。此時需要將第m+1個同義詞存放到另一個稱為“溢出桶”的桶中。相對地,稱存放前m個同義詞的桶為“基桶”。溢出桶和基桶大小相同,用指針鏈接。查找指定元素記錄時,首先在基桶中查找。若找到,則成功返回,否則沿指針到溢出桶中進行查找。
例如:設散列函數(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ù)InsertToHashTable(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 KcyData[ITEMS];
struct BucketNode *Link;
}BUCKET;
BUCKET Bucket[P];             /*基桶空間定義*/
[函數(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; i<ITEMS;i++)/*在基桶查找空閑單元,若找到則將元素存入*/
if(Bucket[Index].KeyData[i]=NULLKEY){
Bucket[Index].KeyData[i]=NewElemKey;  break;
}
if(  (2)  ) return 0;
/*若基桶已滿,則在溢出桶中查找空閑單元,若找不到則申請新的溢出桶*/
(3)  ;        t=Bucket[Index].Link;
if(t!=NULL)   {/*有溢出桶*/
while (t!=NULL){
for(k=0; k<ITEMS; k++)
if(t->KeyData[k]=NULLKEY){/*在溢出桶鏈表中找到空閑單元*/
t->KeyData[k]=NewElemKey;   break;
}/*if*/
front=t;
if(  (4)  )t=t->Link;
else break;
}/*while*/
}/*if*/
if(  (5)  ) {/*申請新溢出桶并將元素存入*/
s=(BUCKET*)malloe(sizeof(BUCKET));
if(!s)  return-1;
s->Link=NULL;
for(k=0; k<ITEMS; k++)
s->KeyData[k]=NULLKEY;
s->KeyData[0]=NewElemKey;
(6)  ;
}/*if*/
return 0;
}/*InsertToHashTable*/



答案解析與討論:m.xiexiliangjiufa.com/st/2453217604.html

5題:

試題五
閱讀以下說明和C++代碼,將應填入  (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)的 DocExplorcr對象都將得到通知,這種應用被稱為觀察者模式。以下代碼寫在一個C++源文件中,能夠正確編譯通過。
[C++代碼]
#include <iostream>
const OBS_MAXNUM=20;//最多與OfficeDoc對象相關聯(lián)的DocExplorer對象的個數(shù)
(1)  ;
class DocExplorer{  //關注OfficeDoc公文對象的類
public:
DocExplorer(  (2)   *doc);  //構造函數(shù)
(3)   void update(OfficeDoc *doc)=0;//更新自身狀態(tài)的函數(shù)
//其他相關屬性和方法省略
};
class OfficeDoc{  //公文類
private:
DocExplorer *myObs[OBS_MAXNUM];
//關注此公文類的DocExplorer類對象指針數(shù)組
int index; //與OfficeDoc對象關聯(lián)的DocExplorer對象的個數(shù)
public:
OfficeDoe()
index=0;
}
void  attach(DocExplorer *o){
//將一DoeExplorer對象與OfficeDoe對象相關聯(lián)
if(index >=OBS_MAXNUM ||o=NULL)return;
for(int loop=0; loop<index; loop++)
if(myObs[loop]==o) return;
myObs[index]=o;
index++;
}
void  detaeh(DocExplorer *o){
//接觸某DoeExplorer對象與OfficeDoc對象的關聯(lián)
if(0==NULL) return;
for(int loop=0; loop<index; loop++){
if(myObs[loop]==o){
if(loop<=index-2)myObs[loop]=myObs[index-1];
myObs[index-1]=NULL;
index--;
break;
}
}
}
private:
void notifyObs(){   //通知所有的DocExplorer對象更改自身狀態(tài)
for(int loop=0; loop<index; loop++){
myObs[loop]->  (4)  ;    //DocExplorer對象更新自身狀態(tài)
}
}
//其他公文類的相關屬性和方法
};
DocExplorer::DocExplorer(OfficeDoc *doc){//DocExplorer 類對象的構造函數(shù)
doc->  (5)  ;  //將此DocExplorer對象與doc對象相關聯(lián)
}

答案解析與討論:m.xiexiliangjiufa.com/st/2453319636.html

7題:

試題七
閱讀以下說明和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結構都將被更新,這種應用被稱為觀察者模式。以下代碼采用C語言實現(xiàn),能夠正確編譯通過。
[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)  myObs[OBS_MAXNUM];
/*存儲所有與OfficeDoc相關聯(lián)的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->myObs[loop]==ob)return;
doc->myObs[doe->index]=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->myObs[loop]==ob){
if(loop<=doc->index-2)
doe->myObs[loop]=doc->myObs[  (3)  ];
doc->myObs[doe->indox-1]=NULL;
doe->index--;
break;
}
}
}
void updatel(struct 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->myObs[loop])->update(  (4)  );
}
}
void 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與doc對象*/
attach(&doc,&explorer2);/*關聯(lián)explorer2與doc對象*/
/*其他代碼省略*/
(5)  ;/*通知與OfficeDoc相關的所有DocExplorer變量*/
return;
}

答案解析與討論:m.xiexiliangjiufa.com/st/245356842.html