查看全部128種考試
軟件水平考試
 考試動(dòng)態(tài) 報(bào)考指南 歷年真題 模擬試題 復(fù)習(xí)資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
 程序員 軟件設(shè)計(jì)師 網(wǎng)絡(luò)管理員 網(wǎng)絡(luò)工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
1
2
3
4
5
6
7
8
9
10
xihuyu2000  
【字體: 2004年下半年軟件設(shè)計(jì)師下午試題和答案
2004年下半年軟件設(shè)計(jì)師下午試題和答案
spks.exam8.com 來源:考試吧(m.1glr.cn) 更新:2005-5-8 9:51:00 軟件水平考試 考試論壇


 【問題2】(5分)

  若系統(tǒng)中有多個(gè)發(fā)送進(jìn)程和接收進(jìn)程,進(jìn)程間的工作流程如圖4-2所示,其中空(1)~(4)的內(nèi)容與圖4-1相同。發(fā)送進(jìn)程產(chǎn)生消息并順序地寫入環(huán)形緩沖區(qū)BUFFER,接受者進(jìn)程順序地從BUFFER中取消息,且每條消息只能讀取一次。為了保證進(jìn)程間的正常通訊,增加了信號量SA和SB。

 、 請說明信號量SA和SB的物理意義,并在圖4-2中的空(5)和空(6)處填入正確的內(nèi)容。

 、 請從圖4-2的(a)~(1)中選擇四個(gè)位置正確地插入P(SA)、V(SA)、P(SB)、V(SB)。

 【圖4-2]】


 【問題3】(6分)

  設(shè)系統(tǒng)中只有進(jìn)程A和進(jìn)程B,除了互斥地使用CPU和打印機(jī)R外,進(jìn)程A和B不使用其他資源。另外,進(jìn)程B的優(yōu)先級比A高,而進(jìn)程A先于B準(zhǔn)備好。進(jìn)程A和B的執(zhí)行情況如圖4-3所示,其中粗實(shí)線表示進(jìn)程在執(zhí)行中,細(xì)實(shí)線表示打印機(jī)R在使用中。(每個(gè)進(jìn)程具有三種狀態(tài):運(yùn)行,就緒和阻塞)

  請說明進(jìn)程A和B在圖4-3所示的T1、T2、T3、T4時(shí)刻所處的狀態(tài);若是阻塞狀態(tài),請說明阻塞原因。

 【圖4-3】

試題五(15分,每空3分)

  閱讀下列函數(shù)說明和C代碼,將應(yīng)填入(n)處的字句寫在答題紙的對應(yīng)欄內(nèi)。

 【說明】

  函數(shù)int Toplogical (LinkedWDigraph G)的功能是對圖G中的頂點(diǎn)進(jìn)行拓?fù)渑判,并返回關(guān)鍵路徑的長度。其中圖G表示一個(gè)具有n個(gè)頂點(diǎn)的AOE-網(wǎng),圖中頂點(diǎn)從1~n依次編號,圖G的存儲結(jié)構(gòu)采用鄰接表表示,其數(shù)據(jù)類型定義如下:

  typedef struct Gnode{     /*鄰接表的表結(jié)點(diǎn)類型*/
   int adjvex;        /*鄰接頂點(diǎn)編號*/
   int weight;        /*弧上的權(quán)值*/
   struct Gonde*nextare;    /*指示下一個(gè)弧的結(jié)點(diǎn)*/
  }Gnode;

  typedef struct Adjlist{    /*鄰接表的頭結(jié)點(diǎn)類型*/
   char vdata;          /*頂點(diǎn)的數(shù)據(jù)信息*/
   struct Gnode*Firstadj;   /*指向鄰接表的第一個(gè)表結(jié)點(diǎn)*/
  }Adjlist;

  typedef struct LinkedWDigraph{  /*圖的類型*/
   int n ,e;          /*圖中頂點(diǎn)個(gè)數(shù)和邊數(shù)*/
   struct Adjlist head;     /*指向圖中第一個(gè)頂點(diǎn)的鄰接表的頭結(jié)點(diǎn)*/
  }LinkedWDigraph;
  例如,某AOE-網(wǎng)如圖5-1所示,其鄰接表存儲結(jié)構(gòu)如圖5-2所示。

  【函數(shù)】
  int Toplogical(LinkedWDigraph G)
  {Gnode *p;
      int j,w,top=0;
      int Stack,ve,*indegree;
      ve=(int )mallloc(G.n+1)*sizeof(int));
      indegree=(int*)malloc((G.n+1)*sizeof(int)); /*存儲網(wǎng)中個(gè)頂點(diǎn)的入度*/
      Stack=(int*)malloc((G.n+1)*sizeof(int));   /*存儲入度為0的頂點(diǎn)的編號*/
      If (!ve||!indegree||!Stack)            exit(0);
      for (j=1;j<=G.n;j++){
     ve[j]=0;indegree[j]=0;
    }                /*for*/
    for (j=1;j<=G.n;j++) {      /*求網(wǎng)中各頂點(diǎn)的入度*/
       p=G.head[j].Firstadj;
       while (p) {
      __(1)__;          p=p->nextarc;
     }               /*while*/
    }         /*for*/
    for (j=1;j<=G.n;j++)                         /求網(wǎng)中入度為0的頂點(diǎn)并保存其編號*/
    if (!indegree[j]) Stack[++top]=j;
    while (top>0){
     w=__(2)__;
     printf(“%c”,G.head[w].vdata);
     p=G.head[w].Firstadj;
     while (p) {
      __(3)__;
      if (!indegree[p->adjvex])
       Stack[++top]=p->adjvex;
      If(__(4)__)
       Ve[p->adjvex]=ve[w]+p->weight;
      P=p->nextarc;
     }/*while*/
     return(5);
    }       /*Toplogical*/

試題六(15分,每空3分)

  閱讀下列函數(shù)說明和C++代碼,將應(yīng)填入(__n__)處的字句寫在答題紙的對應(yīng)欄內(nèi)。

 【說明】

  通常情況下,用戶可以對應(yīng)用系統(tǒng)進(jìn)行配置,并將配置信息保存在配置文件中,應(yīng)用系統(tǒng)在啟動(dòng)時(shí)首先將配置文件加載到內(nèi)存中,這些內(nèi)存配置信息應(yīng)該有且僅有一份。

  下面的代碼應(yīng)用了單身模式(Singleton)以保證Configure類只能有一個(gè)實(shí)例。這樣,Configure類的使用者無法定義該類的多個(gè)實(shí)例,否則會(huì)產(chǎn)生編譯錯(cuò)誤。

 【C++代碼】
  #include <iostream.h>
  class Configure {
   __(1)__;
   Configure() {};            //構(gòu)造函數(shù)
   Public;
   Static Configure*Instance();
   Public;
   Int GetConfigureData() {return data;} //獲取配置信息
   Int SetConfigureDate(int m_data)
   { data=m_data;       return data; }   //設(shè)置配置信息
   private:
   static Configure*_instance;
   int data;                          //配置信息
  };
  __(2)__=NULL;
  Configure * Configure;;Instance() {
   If (_instance= =NULL) {
    _instance=__(3)__;
   //加載配置文件并設(shè)置內(nèi)存配置信息,此處省略
   }
   return__(4)__;
  }
  void main() {
   Configure*t=NULL;
   t=__(5)__;
   int d=t->GetConfigureData();
   //獲取配置信息后進(jìn)行其它工作,此處省略
  }

試題七(15分,每空3分)

 【說明】

  類Queue表示隊(duì)列,類中的方法如下表所示。

isEmpty()

判斷隊(duì)列是否為空。如果隊(duì)列不為空,返回true;否則,返回false。

Enpueue(object newNode)

入隊(duì)操作。

Dequeue()

出隊(duì)操作。如果隊(duì)列為空,則拋出異常。

  類Node表示隊(duì)列中的元素;類emptyQueueException給出了隊(duì)列操作中的異常處理操作。

 【JAVA代碼】
  public class testmain { //主類
   public static viod main (string args[]){
    Queue q= new queue;
    q.enqueue(“first!”);
    q.enqueue(“second!”);
    q.enqueue(“third!”);
    __(1)__  {
     while(true)
     system.out.println(q.dequeue());
    }
    catch(__(2)__){}
   }

   public class queue {   //隊(duì)列
    node m_firstnode;
    public queue(){m_firstnode=null;}
    public Boolean isempty(){
    if (m_firstnode= =null) return true;
    else return false;
    }
    public viod enqueue(object newnode){  //入隊(duì)操作
    node next = m_firstnode;
    if (next = = null) m_firstnode=new node(newnode);
    else {
     while(next.getnext()!=null) next=next.getnext();
     next.setnext(new node(newnode));
    }
   }
   public object dequeue() __(3)__ {      //出隊(duì)操作
    object node;
    if (is empty())
    __(4)__;                 //隊(duì)列為空,拋出異常
    else {
     node =m_firstnode.getobject();
     m_firstnode=m_firstnode.getnext();
     return node;
    }
   }
  }

  public class node{
   object m_data;
   node m_next;
   public node(object data)     {m_data=data;  m_next=null;}
   public node(object data,node next)   {m_data=data;  m_next=next;}
   public void setobject(object data)   {m_data=data; }
   public object getobject(object data)  {return m_data;}
   public void setnext(node next)   {m_next=next;}
   public node getnext()     {return m_next;}
  }
  public class emptyqueueexception extends   (5)  {
   public emptyqueueexception() {
     system.out.println(“隊(duì)列已空!”);
   }
  }

                    答  案

 

上一頁  [1] [2] [3] [4] 下一頁

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評論)查看全部評論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營許可證號:京ICP060677