- 試題排行
- 最新熱點(diǎn)
- 最新推薦
2
3
4
5
6
7
8
9
10
2008年上半年軟考軟件設(shè)計(jì)師考試試題(上午)
2008年上半年軟考網(wǎng)絡(luò)工程師考試試題(下午)
2008年上半年軟考軟件設(shè)計(jì)師考試試題(下午)
2008年上半年軟件水平考試程序員考試試題(上
2008年下半年軟考網(wǎng)絡(luò)工程師預(yù)測試題及答案
2008年上半年軟件水平考試程序員考試試題(下
2008下半年軟件水平考試軟件設(shè)計(jì)師押題試卷
08年上半年軟考數(shù)據(jù)庫系統(tǒng)工程師考試試題(上
2008下半年軟件水平考試程序員模擬試題及答
【問題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ì)列已空!”);
}
}
答 案
轉(zhuǎn)帖于:軟件水平考試_考試吧
- 推薦給朋友
- 收藏此頁
·2008年下半年軟考信息系統(tǒng)項(xiàng)目管理師試題(下午II) (2008-12-21 22:39:30)
·2008年下半年計(jì)算機(jī)軟考網(wǎng)絡(luò)工程師試題(下午) (2008-12-21 22:26:13)
·2008下半年軟考系統(tǒng)分析師考試試題(下午)II (2008-12-21 22:20:49)
·2008年下半年計(jì)算機(jī)軟考程序員試題(下午) (2008-12-21 22:18:18)
·2008年下半年計(jì)算機(jī)軟考程序員試題(上午) (2008-12-21 22:11:38)
如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。