摘要:希賽網(wǎng)為大家整理了2017下半年軟件設(shè)計(jì)師考試下午真題,以下為第二部分。
希賽網(wǎng)為大家整理了2017下半年軟件設(shè)計(jì)師考試下午真題,以下為第二部分。
【試題三】( 15 分)
閱讀下列說明,回答問題 1問題 3,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
某大學(xué)擬開發(fā)一個(gè)用于管理學(xué)術(shù)出版物(Pu blication) 的數(shù)字圖書館系統(tǒng),用戶可以從該系統(tǒng)查詢或下載己發(fā)表的學(xué)術(shù)出版物。系統(tǒng)的主要功能如下:
1.登錄系統(tǒng)。系統(tǒng)的用戶 (User)僅限于該大學(xué)的學(xué)生 (Student) 、教師(Faculty)和其他工作人員(Staff) 。在訪問系統(tǒng)之前,用戶必須使用其校園賬戶和密碼登錄系統(tǒng)。
2. 查詢某位作者 (Author)的所有出版物。系統(tǒng)中保存了會(huì)議文章 (ConfPaper)、期刊文章 (JurnalArticle)和校內(nèi)技術(shù)報(bào)告(TechReport )等學(xué)術(shù)出版物的信息,如題目、作者以及出版年份等。除此之外,系統(tǒng)還存儲(chǔ)了不同類型出版物的一些特有信息;
(1)對(duì)于會(huì)議文章,系統(tǒng)還記錄了會(huì)議名稱、召開時(shí)間以及召開地點(diǎn);
(2)對(duì)于期刊文章,系統(tǒng)還記錄了期刊名稱、出版月份、期號(hào)以及主辦單位;
(3)對(duì)于校內(nèi)技術(shù)報(bào)告,系統(tǒng)記錄了由學(xué)校分配的ID。
3. 查詢指定會(huì)議集(Proceedings)或某個(gè)期刊特定期(Edition) 的所有文章。會(huì)議集包含了發(fā)表在該會(huì)議(在某個(gè)特定時(shí)間段、特定地點(diǎn)召開)上的所有文章。期刊的每一期在特定時(shí)間發(fā)行,其中包含若干篇文章。
4.下載出版物。系統(tǒng)記錄每個(gè)出版物被下載的次數(shù)。
5.查詢引用了某篇出版物的所有出版物。在學(xué)術(shù)出版物中引用他人或早期的文獻(xiàn)作為相關(guān)工作或背景資料是很常見的現(xiàn)象。用戶也可以在系統(tǒng)中為某篇出版物注冊(cè)引用通知,若有新的出版物引用了該出版物,系統(tǒng)將發(fā)送電子郵件通知該用戶。
現(xiàn)在采用面向?qū)ο蠓椒▽?duì)該系統(tǒng)進(jìn)行開發(fā),得到系統(tǒng)的初始設(shè)計(jì)類圖如圖3-1所示。
【問題1】(9分)
根據(jù)說明中的描述,給出圖3-1中C1~C9所對(duì)應(yīng)的類名。
【問題2】(4分)
根據(jù)說明中的描述,給出圖3-1中類C6~C9的屬性。
【問題3】(2分)
圖3-1中包含了哪種設(shè)計(jì)模式?實(shí)現(xiàn)的是該系統(tǒng)的哪個(gè)功能?
試題四
閱讀下列說明和C代碼,回答問題 1 至問題 2,將解答寫在答題紙的對(duì)應(yīng)欄內(nèi)。
【說明】
一個(gè)無向連通圖G點(diǎn)上的哈密爾頓(Hamiltion)回路是指從圖G上的某個(gè)頂點(diǎn)出發(fā),經(jīng)過圖上所有其他頂點(diǎn)一次且僅一次,最后回到該頂點(diǎn)的路勁。一種求解無向圖上哈密爾頓回路算法的基礎(chǔ)私下如下:
假設(shè)圖G存在一個(gè)從頂點(diǎn)V0出發(fā)的哈密爾頓回路V1——V2——V3——…——Vn-1——V0。算法從頂點(diǎn)V0出發(fā),訪問該頂點(diǎn)的一個(gè)未被訪問的鄰接頂點(diǎn)V1,接著從頂點(diǎn)V1出發(fā),訪問V1一個(gè)未被訪問的鄰接頂點(diǎn)V2,。;對(duì)頂點(diǎn)Vi,重復(fù)進(jìn)行以下操作:訪問Vi的一個(gè)未被訪問的鄰接接點(diǎn)Vi+1;若Vi的所有鄰接頂點(diǎn)均已被訪問,則返回到頂點(diǎn)Vi-1,考慮Vi-1的下一個(gè)未被訪問的鄰接頂點(diǎn),仍記為Vi;知道找到一條哈密爾頓回路或者找不到哈密爾頓回路,算法結(jié)束。
【C代碼】
下面是算法的C語言實(shí)現(xiàn)。
(1)常量和變量說明
n :圖G中的頂點(diǎn)數(shù)
c[][]:圖G的鄰接矩陣
K:統(tǒng)計(jì)變量,當(dāng)期已經(jīng)訪問的定點(diǎn)數(shù)為k+1
x[k]:第k個(gè)訪問的頂點(diǎn)編號(hào),從0開始
Visited[x[k]]:第k個(gè)頂點(diǎn)的訪問標(biāo)志,0表示未訪問,1表示已訪問
⑵C程序
#include <stido.h>
#include <stidb.h>
#define MAX 100
Vido Hamilton(int n,int x[MAX,int c[MAX][MAX]){
in t ;
in t visited[MAX];
int k;
/*初始化x數(shù)組賀visited數(shù)組*/
for (i=0:i<n;i++){
x[i]=0;
visited [i]=0;
}
/*訪問起始頂點(diǎn)*/
k=0
( );
x[0]=0
K=k+1
/*訪問其他頂點(diǎn)*/
while(k>=0){
x[k]=x[k]+1;
while(x[k]><n){
if ( )&&c[x-[k-1]][x[k]=1){/*鄰接頂點(diǎn)x[k]未被訪問過*/
break;
}else{
x[k] = x[k] +1
}
}
if(x[k] <n-1&&( ){ /*找到一條哈密爾頓回路*/
for (k=0;k<n;k++){
prinf(〝%d--〝,x[k] ; /*輸出哈密爾頓回路*/
}
prinf(〝%d--〝,x[0] ;
return;
}else if x[k]<n&&k<n-1){/*設(shè)置當(dāng)期頂點(diǎn)的訪問標(biāo)志,繼續(xù)下一個(gè)頂點(diǎn)*/
( )
k=k+1;
}else{/*沒有未被訪問過的鄰接頂點(diǎn),回退到上一個(gè)頂點(diǎn)*/
x[k]=0;
visited x[k]=0;
( );
}
}
}
【問題1】(10分)
根據(jù)題干說明。填充C代碼中的空(1)~(5)。
【問題2】(5分)
根據(jù)題干說明和C代碼,算法采用的設(shè)計(jì)策略為( ),該方法在遍歷圖的頂點(diǎn)時(shí),采用的是( )方法(深度優(yōu)先或廣度優(yōu)先)。
返回目錄:2017下半年軟件設(shè)計(jì)師考試下午真題匯總
軟考備考資料免費(fèi)領(lǐng)取
去領(lǐng)取
共收錄117.93萬道題
已有25.02萬小伙伴參與做題