2017下半年軟件設計師考試下午真題(2)

軟件設計師 責任編輯:胡媛 2017-11-17

添加老師微信

備考咨詢

加我微信

摘要:希賽網(wǎng)為大家整理了2017下半年軟件設計師考試下午真題,以下為第二部分。

希賽網(wǎng)為大家整理了2017下半年軟件設計師考試下午真題,以下為第二部分。


【試題三】( 15 分)
閱讀下列說明,回答問題 1問題 3,將解答填入答題紙的對應欄內。
【說明】
某大學擬開發(fā)一個用于管理學術出版物(Pu blication) 的數(shù)字圖書館系統(tǒng),用戶可以從該系統(tǒng)查詢或下載己發(fā)表的學術出版物。系統(tǒng)的主要功能如下:
1.登錄系統(tǒng)。系統(tǒng)的用戶 (User)僅限于該大學的學生 (Student) 、教師(Faculty)和其他工作人員(Staff) 。在訪問系統(tǒng)之前,用戶必須使用其校園賬戶和密碼登錄系統(tǒng)。
2. 查詢某位作者 (Author)的所有出版物。系統(tǒng)中保存了會議文章 (ConfPaper)、期刊文章 (JurnalArticle)和校內技術報告(TechReport )等學術出版物的信息,如題目、作者以及出版年份等。除此之外,系統(tǒng)還存儲了不同類型出版物的一些特有信息;
(1)對于會議文章,系統(tǒng)還記錄了會議名稱、召開時間以及召開地點;
(2)對于期刊文章,系統(tǒng)還記錄了期刊名稱、出版月份、期號以及主辦單位;
(3)對于校內技術報告,系統(tǒng)記錄了由學校分配的ID。
3. 查詢指定會議集(Proceedings)或某個期刊特定期(Edition) 的所有文章。會議集包含了發(fā)表在該會議(在某個特定時間段、特定地點召開)上的所有文章。期刊的每一期在特定時間發(fā)行,其中包含若干篇文章。
4.下載出版物。系統(tǒng)記錄每個出版物被下載的次數(shù)。
5.查詢引用了某篇出版物的所有出版物。在學術出版物中引用他人或早期的文獻作為相關工作或背景資料是很常見的現(xiàn)象。用戶也可以在系統(tǒng)中為某篇出版物注冊引用通知,若有新的出版物引用了該出版物,系統(tǒng)將發(fā)送電子郵件通知該用戶。
現(xiàn)在采用面向對象方法對該系統(tǒng)進行開發(fā),得到系統(tǒng)的初始設計類圖如圖3-1所示。

2017下半年軟件設計師考試下午真題(2)


【問題1】(9分)
根據(jù)說明中的描述,給出圖3-1中C1~C9所對應的類名。
【問題2】(4分)
根據(jù)說明中的描述,給出圖3-1中類C6~C9的屬性。
【問題3】(2分)
圖3-1中包含了哪種設計模式?實現(xiàn)的是該系統(tǒng)的哪個功能?


試題四
閱讀下列說明和C代碼,回答問題 1 至問題 2,將解答寫在答題紙的對應欄內。
【說明】
一個無向連通圖G點上的哈密爾頓(Hamiltion)回路是指從圖G上的某個頂點出發(fā),經(jīng)過圖上所有其他頂點一次且僅一次,最后回到該頂點的路勁。一種求解無向圖上哈密爾頓回路算法的基礎私下如下:
假設圖G存在一個從頂點V0出發(fā)的哈密爾頓回路V1——V2——V3——…——Vn-1——V0。算法從頂點V0出發(fā),訪問該頂點的一個未被訪問的鄰接頂點V1,接著從頂點V1出發(fā),訪問V1一個未被訪問的鄰接頂點V2,。;對頂點Vi,重復進行以下操作:訪問Vi的一個未被訪問的鄰接接點Vi+1;若Vi的所有鄰接頂點均已被訪問,則返回到頂點Vi-1,考慮Vi-1的下一個未被訪問的鄰接頂點,仍記為Vi;知道找到一條哈密爾頓回路或者找不到哈密爾頓回路,算法結束。
【C代碼】
下面是算法的C語言實現(xiàn)。
(1)常量和變量說明
n :圖G中的頂點數(shù)
c[][]:圖G的鄰接矩陣
K:統(tǒng)計變量,當期已經(jīng)訪問的定點數(shù)為k+1
x[k]:第k個訪問的頂點編號,從0開始
Visited[x[k]]:第k個頂點的訪問標志,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;

/*訪問起始頂點*/
k=0
(  );
x[0]=0
K=k+1
/*訪問其他頂點*/
while(k>=0){
x[k]=x[k]+1;
while(x[k]><n){
if (  )&&c[x-[k-1]][x[k]=1){/*鄰接頂點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){/*設置當期頂點的訪問標志,繼續(xù)下一個頂點*/
(  )
k=k+1;
}else{/*沒有未被訪問過的鄰接頂點,回退到上一個頂點*/
x[k]=0;
visited x[k]=0;
(  );



【問題1】(10分)
根據(jù)題干說明。填充C代碼中的空(1)~(5)。
【問題2】(5分)
根據(jù)題干說明和C代碼,算法采用的設計策略為(  ),該方法在遍歷圖的頂點時,采用的是(  )方法(深度優(yōu)先或廣度優(yōu)先)。


返回目錄:2017下半年軟件設計師考試下午真題匯總

點擊查看:2017下半年軟考真題參考答案+解析

在線估分:2017下半年軟件設計師下午真題答案和解析

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

軟考備考資料免費領取

去領取

!
咨詢在線老師!