软考软件设计师中级考试大纲(附题型举例)
軟件設計師考試大綱
一、考 試 說 明
1.考試目標
通過本考試的合格人員能根據軟件開發項目管理和軟件工程的要求,按照系統總體設計規格說明書進行軟件設計,編寫程序設計規格說明書等相應的文檔,組織和指導程序員編寫、調試程序,并對軟件進行優化和集成測試,開發出符合系統總體設計要求的高質量軟件;具有工程師的實際工作能力和業務水平。
2.考試要求
(1)掌握計算機內的數據表示、算術和邏輯運算方法;
(2)掌握相關的應用數學及離散數學基礎知識;
(3)掌握計算機體系結構以及各主要部件的性能和基本工作原理;
(4)掌握操作系統、程序設計語言的基礎知識,了解編譯程序的基本知識;
(5)熟練掌握常用數據結構和常用算法;
(6)熟悉數據庫、網絡和多媒體的基礎知識;
(7)掌握C程序設計語言,以及C++、Java中的一種程序設計語言;
(8)熟悉軟件工程、軟件過程改進和軟件開發項目管理的基礎知識;
(9)掌握軟件設計的方法和技術;
(10)了解信息化、常用信息技術標準、安全性,以及有關法律、法規的基礎知識;
(11)正確閱讀和理解計算機領域的英文資料。
3.考試科目設置
(1)計算機與軟件工程知識,考試時間為150分鐘,筆試,選擇題;
(2)軟件設計,考試時間為150分鐘,筆試,問答題。
二、考 試 范 圍
考試科目1:計算機與軟件工程知識
1.計算機科學基礎知識
1.1? 數制及其轉換
- 二進制、八進制、十進制和十六進制等常用數制及其相互轉換
1.2 ?計算機內數據的表示
- 數的表示
- 非數值表示(字符和漢字表示、聲音表示、圖像表示)
1.3? 算術運算和邏輯運算
- 計算機中的二進制數運算方法
- 邏輯代數的基本運算
1.4? 其他數學基礎知識
- 常用數值計算
- 排列組合,概率論應用,應用統計(數據的統計分析)
- 編碼基礎
- 命題邏輯、謂詞邏輯、形式邏輯的基礎知識
- 運籌基本方法
2.計算機系統知識
2.1? 計算機硬件基礎知識
? 2.1.1? 計算機系統的組成、體系結構分類及特性
- CPU、存儲器的組成、性能和基本工作原理
- 常用I/O設備、通信設備的性能以及基本工作原理
- I/O接口的功能、類型和特性
- CISC/RISC,流水線操作,多處理機,并行處理
? 2.1.2? 存儲系統
- 虛擬存儲器基本工作原理,多級存儲體系
- RAID類型和特性
? 2.1.3? 可靠性與系統性能評測基礎知識
- 診斷與容錯
- 系統可靠性分析評價
- 計算機系統性能評測方法
2.2? 計算機軟件知識
? 2.2.1? 數據結構與算法知識
- 數組
- 鏈表
- 隊列、棧
- 樹
- 圖的定義、存儲和基本操作
- 雜湊(Hash表)
- 常用的排序算法、查找算法、數值計算、字符串處理、數據壓縮算法、遞歸算法、圖的相關算法
- 算法描述和分析
? 2.2.2? 操作系統知識
- 操作系統的內核
- 處理機管理
- 存儲管理
- 設備管理
- 文件管理
- 作業管理
- 網絡操作系統和嵌入式操作系統基礎知識
- 操作系統的配置
? 2.2.3? 程序設計語言和語言處理程序知識
- 匯編、編譯、解釋系統的基礎知識和基本工作原理
- 程序設計語言的基本成分(數據、運算、控制和傳輸),程序調用的實現機制
- 各類程序設計語言的主要特點和適用情況
? 2.2.4? 數據庫知識
- 數據庫模型(概念模式、外模式、內模式)
- 數據模型,ER圖,規范化
- 數據操作
- 數據庫語言
- 數據庫管理系統的功能和特征
- 數據庫的控制功能
- 數據倉庫和分布式數據庫基礎知識
2.3? 計算機網絡知識
- 網絡體系結構
- 傳輸介質,傳輸技術,傳輸方法,傳輸控制
- 常用網絡設備和各類通信設備的特點
- Client-Server結構,Browser-Server結構
- LAN(拓撲,存取控制,組網,網間互連)
- Internet 和Intranet 基礎知識以及應用
- 網絡軟件
- 網絡管理,網絡性能分析
2.4? 多媒體基礎知識
- 多媒體系統基礎知識
- 簡單圖形的繪制,圖像文件的處理方法
- 音頻和視頻信息的應用
- 多媒體應用開發過程
3.系統開發和運行知識
3.1? 軟件工程知識
- 軟件生存周期與軟件生存周期模型
- 軟件開發方法
- 軟件開發項目管理
- 軟件工具與軟件開發環境
3.2? 系統分析基礎知識
- 系統分析的主要步驟
- 結構化分析方法
3.3? 系統設計基礎知識
- 概要設計與詳細設計的基本任務
- 系統設計的基本原理
- 系統模塊結構設計
- 結構化設計方法
- 面向數據結構的設計方法
- 系統詳細設計
3.4? 系統實施基礎知識
- 系統實施的基本內容
- 程序設計方法
- 程序設計的基本模塊
- 系統測試
- 系統轉換
3.5? 系統運行和維護基礎知識
- 系統可維護性的概念
- 系統維護的類型
- 系統評價的概念與類型
3.6? 軟件質量管理基礎知識
- 軟件質量特性(ISO/IEC 9126軟件質量模型)
- 軟件質量保證
- 軟件復雜性的概念及度量方法(McCabe度量法)
- 軟件評審(設計質量評審、程序質量評審)
- 軟件容錯技術
3.7? 軟件過程改進基礎知識
- 軟件能力成熟度模型CMM
- 統一過程(UP)與極限編程(XP)的基本概念
4.面向對象基礎知識
- 面向對象的基本概念
- 面向對象分析與設計知識
- 分析模式與設計模式知識
- 面向對象程序設計知識
- 面向對象數據庫、分布式對象基礎知識
5.信息安全知識
- 信息系統安全基礎知識
- 信息系統安全管理
- 保障完整性與可用性的措施
- 加密與解密機制基礎知識
- 風險管理(風險分析、風險類型、抗風險措施和內部控制)
- 計算機安全相關的法律、法規基礎知識
6.標準化、信息化和知識產權基礎知識
6.1? 標準化基礎知識
- 標準化意識,標準化組織機構,標準的內容、分類、代號與編號規定,標準制訂過程
- 國際標準、國家標準、行業標準、企業標準
- 代碼標準、文件格式標準、安全標準、互聯網相關標準、軟件開發規范和文檔標準、基于構件的軟件標準
6.2? 信息化基礎知識
- 全球信息化趨勢、國家信息化戰略、企業信息化戰略和策略
- 互聯網相關的法律、法規知識
- 個人信息保護規則
- 遠程教育、電子商務、電子政務等基礎知識
- 企業信息資源管理基礎知識
6.3? 知識產權基礎知識
- 保護知識產權有關的法律、法規
7.計算機專業英語
- 具有工程師所要求的英語閱讀水平
- 理解本領域的英語術語
考試科目2:軟件設計
1.外部設計
1.1 ?理解系統需求說明
1.2 ?準備進行系統開發
- 選擇開發方法、準備開發環境、制訂開發計劃
1.3 ?設計系統功能
- 選擇系統結構
- 設計各子系統的功能和接口
- 設計安全性策略、需求和實現方法
- 制訂詳細的工作流和數據流
1.4? 設計數據模型
- 設計ER模型及其他數據模型
1.5? 編寫外部設計文檔
- 系統配置圖、各子系統關系圖
- 系統流程圖、系統功能說明書
- 輸入輸出規格說明、數據規格說明、用戶手冊框架
- 設計系統測試要求
1.6 ?外部設計的評審
2.內部設計
2.1? 設計軟件結構
- 按構件分解,確定構件功能、規格以及構件之間的接口
- 數據結構與算法設計
- 采用中間件和工具
2.2? 設計輸入輸出
2.3? 設計物理數據
2.4? 構件的創建和重用
- 創建構件、重用構件
- 使用子程序庫或類庫
2.5? 編寫內部設計文檔
- 構件劃分圖、構件間的接口、構件處理說明
- 屏幕界面設計文檔、報表設計文檔、文件設計文檔、數據庫設計文檔
2.6 ?內部設計的評審
3.數據庫應用分析與設計
- 設計關系模式
- 數據庫語言(SQL)
- 數據庫訪問
4.程序設計
4.1? 模塊劃分
4.2? 編寫程序設計文檔
4.3? 程序設計評審
5.系統實施
5.1? 配置計算機系統及環境
5.2? 選擇合適的程序設計語言
5.3? 用C程序設計語言以及C++、Java中的任一種程序設計語言進行程序設計
5.4? 系統測試
- 指導程序員進行模塊測試,并進行驗收
- 準備系統集成測試環境和測試工具
- 準備測試數據
- 寫出測試報告
6.軟件工程應用
6.1 ?軟件開發周期模型
6.2 ?需求分析
6.3 ?軟件設計
- 軟件設計的基本原則
- 軟件設計方法
- 程序設計(結構化程序設計、面向對象程序設計)
6.4 ?軟件測試的原則與方法
6.5 ?軟件質量(軟件質量特性、軟件質量控制)
6.6 ?軟件過程評估基本方法、軟件能力成熟度評估基本方法
6.7 ?軟件開發環境和開發工具
6.8 ?面向對象技術
- 面向構件技術
- 統一建模語言(UML)
- 軟件過程改進模型和方法
6.9 ?網絡環境軟件技術
題型舉例
考試科目1:計算機與軟件工程知識
1.在計算機中,最適合進行數字加減運算的數字編碼是(1),最適合表示浮點數階碼的數字編碼是(2)
(1)A.原碼?????? B.反碼?????? ?C.補碼?????? ?D.移碼
(2)A.原碼?????? B.反碼?????? ?C.補碼?????? ?D.移碼
2.某計算機系統由下圖所示的部件構成,假定每個部件的千小時可靠度都為R,則該系統的千小時可靠度為(3)
(3)A.R+2R/4??? B.R+R2/4??????? C.R(1-(1-R)2)???? D.R(1-(1-R)2)2
3.指令系統中采用不同尋址方式的目的是(4)。
(4)A.提高從內存獲取數據的速度????? B.提高從外存獲取數據的速度
? ?C.降低操作碼的譯碼難度? ? ? ? ? D.擴大尋址空間并提高編程靈活性
4.用戶A從CA獲得用戶B的數字證書,并利用(5)驗證數字證書的真實性
(5)A.B的公鑰??????? B.B的私鑰?????? C.CA的公鑰??? D.CA的私鑰
5.模塊A直接訪問模塊B的內部數據,則模塊A和模塊B的耦合類型為(6)
(6)A.數據耦合?????? B.標記耦合?????? ?C.公共耦合?????? ?D.內容耦合
6.某軟件公司研發的財務軟件產品在行業中技術領先,具有很強的市場競爭優勢。為確保其軟件產品的技術領先及市場競爭優勢,公司采取相應的保密措施,以防止軟件技術秘密的外泄。并且,還為該軟件產品冠以“用友”商標,但未進行商標注冊。此情況下,公司僅享有該軟件產品的(7)。
(7)A.軟件著作權和專利權? ? ? ? ? ? ? B.商業秘密權和專利權
? ?C.軟件著作權和商業秘密權? ? ? ? ? ?D.軟件著作權和商標權
7.某進程有5個頁面,頁號為0~4,頁面變換表如下所示。表中狀態位等于0和1分別表示頁面不在內存或在內存。若系統給該進程分配了3個存儲塊,當訪問的頁面3不在內存時,應該淘汰表中頁號為(8)的頁面。假定頁面大小為4K,邏輯地址為十六進制2C25H,該地址經過變換后,其物理地址應為十六進制(9)。
(8)A.0 ? ? ? ?B.1??????? C.2??????? D.4
(9)A.2C25H ? ? B.4096H ? ? ? ?C.4C25H ? ? ? D.8C25H
8.假設某磁盤的每個磁道劃分成9個物理塊,每塊存放1個邏輯記錄。邏輯記錄RO,R1,…,R8存放在同一個磁道上,記錄的安排順序如下表所示:
如果磁盤的旋轉速度為27ms/周,磁頭當前處在RO的開始處。若系統順序處理這些記錄,使用單緩沖區,每個記錄處理時間為3ms,則處理這9個記錄的最長時間為(10);若對信息存儲進行優化分布后,處理9個記錄的最少時間為(11)。
(10)A.54ms??????? B.108ms??????? C.222ms??????? D.243ms
(11)A.27ms??????? B.54ms??????? ?C.108ms??????? D.216ms
9.下圖是一個軟件項目的活動圖,其中頂點表示項目里程碑,連接頂點的邊表示活動,邊的權重表示活動的持續時間,則里程碑(12)在關鍵路徑上?;顒覩H的松弛時間是(13)。
(12)A.B?????? B.E?????? C.C??????? D.K
(13)A.0?????? B.1?????? C.2??????? D.3
10.一個功能模塊M1中的函數F1有一個參數需要接收指向整型的指針,但是在功能模塊M2中調用F1時傳遞了一個整型值,在軟件測試中,(14)最可能測出這一問題。
(14)A.Ml的單元測試? ? ? ? ? ? ?B.M2的單元測試??
? ? C.Ml和M2的集成測試?????? ?D.確認測試
11.編譯程序對C語言源程序進行語法分析時,可以確定(15)。
(15)A.變量是否定義(或聲明)??????? B.變量的值是否正確
? ? C.循環語句的執行次數???????? D.循環條件是否正確
12.不同的對象收到同一消息可以產生完全不同的結果,這一現象叫作(16)。綁定是一個把過程調用和響應調用所需要執行的代碼加以結合的過程。在一般的程序設計語言中,綁定在編譯時進行,叫作(17);而(18)則在運行時進行,即一個給定的過程調用和執行代碼的結合直到調用發生時才進行。
(16)A.繼承??????? B.多態??????? ?C.動態綁定??????? ?D.靜態綁定
(17)A.繼承??????? B.多態??????? ?C.動態綁定??????? ?D.靜態綁定
(18)A.繼承??????? B.多態??????? ?C.動態綁定??????? ?D.靜態綁定
13.在統一建模語言(UML)中,(19)用于描述系統與外部系統及用戶之間的交互。
(19)A.類圖??????? ?B.用例圖??????? ?C.對象圖??????? ?D.協作圖
14.下列設計模式中,(20)模式既是類結構型模式又是對象結構型模式。此模式與(21)模式類似的特征是,都給另一個對象提供了一定程度上的間接性,都涉及從自身以外的一個接口向這個對象轉發請求
(20)A.橋接(Bridge)?? B.適配器(Adapter)?? C.組成(Composite)?? D.裝飾器(Decorator)
(21)A.橋接(Bridge)?? B.適配器(Adapter)?? C.組成(Composite)?? D.裝飾器(Decorator)
15.(22)表示了系統與參與者之間的接口。在每個用例中,該對象從參與者處收集信息,并將之轉換為一種被實體對象和控制對象使用的形式
(22)A.邊界對象?????? B.可視化對象????? C.抽象對象????? D.實體對象
16.如下UML類圖表示的是(23)設計模式。以下關于該設計模式的敘述中,錯誤的是(24)。
(23)A.工廠方法?????? B.策略??????? C.抽象工廠????? D.觀察者
(24)A.提供創建一系列相關或相互依賴的對象的接口,而無須指定這些對象所屬的具體類
? ?B.可應用于一個系統要由多個產品系列中的個來配置的時候
?? C.可應用于強調一系列相關產品對象的設計以便進行聯合使用的時候
?? D.可應用于希望使用已經存在的類,但其接口不符合需求的時候
17.UML中有多種類型的圖,其中,(25)對系統的使用方式進行分類,(26)顯示了類及其相互關系(27)顯示人或對象的活動,其方式類似于流程圖,通信圖顯示在某種情況下對象之間發送的消息,(28)與通信圖類似,但強調的是順序而不是連接。
(25)A.用例圖??????? B.順序圖??????? ?C.類圖??????? ?D.活動圖
(26)A.用例圖??????? B.順序圖??????? ?C.類圖??????? ?D.活動圖
(27)A.用例圖??????? B.順序圖??????? ?C.類圖??????? ?D.活動圖
(28)A.用例圖??????? B.順序圖的? ? ? ? ? C.類圖??????? ?D.活動圖
18.為了保證數據庫中數據的安全可靠和正確有效,系統在進行事務處理時,對數據的插入、刪除或修改的全部有關內容先寫入(29);當系統正常運行時,按一定的時間間隔,把數據庫緩沖區內容寫入(30);當發生故障時根據現場數據內容及相關文件來恢復系統的狀態
(29)A.索引文件?????? B.數據文件?????? ?C.日志文件?????? ?D.數據字典
(30)A.索引文件?????? B.數據文件??????? C.日志文件??????? D.數據字典
19.要使4個連續的C類網絡匯聚成一個超網,則子網掩碼應該為(31)。
(31)A.255.240.0.0 ? ? ?B.255.255.0.0 ? ?C.255.255.252.0 ? ? ? D.255.255.255.252
20.Ravi, like many project(32),had studied the waterfall model of softwaredevelopment as theprimary software life-cycle(33).He was allset to use it for an upcoming project, his first assignment. However, Ravifound that the waterfall model couldnot be used because the customer wanted thesoftware delivered in stages, something that implied that the system had to bedelivered and built in(34)and not as(35).
The situationin many other projects is not very different.The real world rarely presents aproblem in which a standard process, or the process used in a previous project,is the best choice. To be the most suitable, an existing process must be(36)to the new problem.
A developmentprocess, even after tailoring, generally cannot handle change requests.Toaccommodate change requests without losing control of the project, you mustsupplement the development process with a requirement change managementprocess.
(32)A.customers ? ? ? ? B.managers ????????C.users ?????????D.administrators
(33)A.activity ? ? ? ? B.procedure?????? ??C.process ? ? ? ? ? D.progress
(34)A.parts ? ? ? ? ? B.modules ? ? ? ? ? ? C.software ? ? ? ? ? D.a whole
(35)A.parts ? ? ? ? ? B.modules ? ? ? ? ? ? C.software ? ? ? ? ? D.a whole
(36)A.modified ? ? ? ? B.used ? ? ? ? ? ? ? C.suited ? ? ? ? ? ?D.tailored
考試科目2:軟件設計
試題一(15分)
閱讀以下說明和數據流圖,回答問題1至問題4,將解答填入答題紙的對應欄內。
【說明】
某慕課教育平臺欲添加在線作業批改系統,以實現高效的作業提交與批改,并進行統計。學生和講師的基本信息已經初始化為數據庫中的學生表和講師表。系統的主要功能如下。
(1)提交作業。驗證學生標識后,學生將電子作業通過在線的方式提交,并進行存儲。系統給學生發送通知表明提交成功,通知中包含唯一編號,并通知講師有作業提交
(2)下載未批改作業。驗證講師標識后,講師從系統中下載學生提交的作業。下載的作業將顯示在屏幕上。
(3)批改作業。講師按格式為每個題目進行批改打分并進行整體評價
(4)上傳批改后的作業。將批改后的作業(包括分數和評價)返回給系統,進行存儲
(5)記錄分數和評價。將批改后的作業的分數和評價記錄在學生信息中,并通知學生作業已批改
(6)獲取已批改作業。根據學生標識,給學生查看批改后的作業,包括提交的作業、分數和評價
(7)作業抽檢。根據教務人員標識抽取批改后的作業樣本,給出抽檢意見,并形成抽檢報告給講師。
現采用結構化方法對在線作業批改系統進行分析與設計,獲得如圖1-1所示的上下文數據流圖和圖1-2所示的0層數據流圖。
?
【問題1】(3分)
使用說明中的詞語,給出圖1-1中的實體E1~E3的名稱
【問題2】(4分)
使用說明中的詞語,給出圖1-2中的數據存儲D1~D4的名稱
【問題3】(6分)
根據說明和圖中術語,補充圖1-2中缺失的數據流及其起點和終點
【問題4】(2分)
若發送給學生和講師的通知是通過第三方Email系統進行的,則需要對圖1-1和圖1-2進行哪些修改?用100字以內文字加以說明
試題二(共15分)
閱讀下列說明,回答問題1至問題3,將解答填入答題紙的對應欄內
【說明】
某集團公司在全國不同城市擁有多個大型超市,為有效管理各個超市的業務工作,需要構建一個超市信息管理系統
【需求分析結果】
(1)超市信息包括:超市名稱、地址、經理和電話,其中超市名稱唯一確定超市關系的每一個元組。每個超市只有一名經理
(2)超市設有計劃部、財務部、銷售部等多個部門,每個部門只有一名部門經理,有多名員工,每個員工只屬于一個部門。部門信息包括:超市名稱、部門名稱、部門經理和聯系電話。超市名稱、部門名稱唯一確定部門關系的每一個元組
(3)員工信息包括:員工號、姓名、超市名稱、部門名稱、職位、聯系方式和工資。其中職位信息包括:經理、部門經理、業務員等。員工號唯一確定員工關系的每一個元組
(4)商品信息包括:商品號、商品名稱、型號、單價和數量。商品號唯一確定商品關系的每一個元組。一名業務員可以負責超市內多種商品的配給種商品可以由多名業務員配給
【概念模型設計】
根據需求分析階段收集的信息,設計的實體聯系圖和關系模式(不完整)如下:
【關系模式設計】
超市(超市名稱,經理,地址,電話)
部門( ?(a) ,?? 部門經理,聯系電話)
員工( ?(b) ,??? 姓名,聯系方式,職位,工資)
商品( 商品號,商品名稱,型號,單價,數量)
配給( ?(c)? ,?? 配給時間,配給數量,業務員)
【問題1】(4分)
根據問題描述,補充四個聯系,完善圖2-1的實體聯系圖。聯系名可用聯系1、聯系2、聯系3和聯系4代替,聯系的類型分為1:1、1:n和mn(或1:1、1:*和*:*)
【問題2】(7分)
(1)根據實體聯系圖,將關系模式中的空(a) ~(c)補充完整
(2)給出部門和配給關系模式的主鍵和外鍵
【問題3】(4分)
(1)超市關系的地址可以進一步分為郵編、省、市、街道,那么該屬性是屬于簡單屬性還是復合屬性?請用100字以內文字說明
(2)假設超市需要增設一個經理的職位,那么超市與經理之間的聯系類型應修改為?? (d)?? ,超市關系應修改為?? ?(e)? ?.
試題三(共15分)
閱讀以下說明和圖,回答問題1至問題3,將解答填入答題紙的對應欄內
【說明】
某物品拍賣網站為參與者提供物品拍賣平臺,組織拍賣過程,提供在線或線下交易服務。網站主要功能描述如下:
(1)拍賣參與者分為個人參與者和團體參與者兩種。不同的團體也可以組成新的團體參與拍賣活動。網站記錄每個參與者的名稱
(2)一次拍賣中,參與者或者是買方,或者是賣方。
(3)一次拍賣只拍出來自一個賣方的一件拍賣品;多個買方可以出價;賣方接受其中一個出價作為成交價,拍賣過程結束。
(4)在拍賣結算階段,買賣雙方可以選擇兩種成交方式:線下成交,買賣雙方在事先約定好的成交地點,當面完成物價款的支付和拍賣品的交付;在線成交,買方通過網上支付平臺支付物價款,拍賣品由賣方通過快遞郵寄給買方。
一次拍賣過程的基本事件流描述如下:
(1)賣方在網站上發起一次拍賣,并設置本次拍賣的起拍價
(2)確定拍賣標的以及拍賣標的保留價(若在拍賣時間結束時,所有出價均低于拍賣標的保留價,則本次拍賣失敗)
(3)在網站上發布本次拍賣品的介紹
(4)買方參與拍賣,給出競拍價。
(5)賣方選擇接受一個競拍價作為成交價,結束拍賣。
(6)系統記錄拍賣成交價,進入拍賣結算階段。
(7)賣方和買方協商拍賣品成交方式,并完成成交
現采用面向對象方法對系統進行分析與設計,得到如表3-1所示的類列表以及如圖3-1所示的類圖,類中關鍵屬性與方法如表3-2所示
?
【問題1】(7分)
根據說明中的描述,給出圖3-1中(1) ~(7)所對應的類名(類名使用表3-1中給出的序號)。
【問題2】(5分)
根據說明中的描述,確定表3-2中的屬性/方法分別屬于哪個類(類名、方法/屬性名使用表3-1、3-2中給出的序號)。
【問題3】(3分)
在圖3-1采用了何種設計模式?以100字以內文字說明采用這種設計模式的原因
試題四(共15分)
閱讀下列說明和C代碼,回答問題1至問題3,將解答寫在答題紙的對應欄內
【說明】
計算一個整數數組a的最長遞增子序列長度的方法描述如下:
假設數組a的長度為n,用數組b的元素b[i]記錄以a[i] (0≤i≤n)為結尾元素的最長遞增子序列的長度,則數組a的最長遞增子序列的長度為;其中b[i]滿足最優子結構,可遞歸定義為:?
?
【C代碼】
下面是算法的C語言實現
(1)常量和變量說明
a:長度為n的整數數組,待求其最長遞增子序列
b:長度為n的數組,b[i]記錄以a[i](0≤i<n)為結尾元素的最長遞增子序列的長度,其中0≤i<n
len:最長遞增子序列的長度
i,j:循環變量
tmp:臨時變量
(2)C程序
#include<stdio.h>
Int maxL(int*b,int n){
??? inti, temp=0;
??? for(i=0;i<n; i++){
???? if(b[i]> temp)
???? ?temp=b[i];
?? }
? returntemp;
}
int main(){
???? intn, a[100], ?b[100] , ?i, ?j, len;
???? scanf(%"d", &n);
???? for(i=0;?i<n; ?i++){
??????scanf(%"d", &a[i]);
?????}
??? ???( 1)? ?;
???? for(i=0; i<n; i++){
?????for(j=0, len=0;??(2)? ; j++){
?????if( ??(3) ??&&len<b[j] )
???? ???len=b[i];
????}
???? ?(4)? ??;
?}
?? printf("len:%d\n" , ?maxl(b,n));
?printf("\n");
?}
【問題1】(8分)
根據說明和C代碼,填充C代碼中的空(1)~(4)。
【問題2】(4分)
根據說明和C代碼,算法采用了? ( 5 )? 設計策略,時間復雜度為? ( 6 ) ?(用O符號表示)
【問題3】(3分)
已知數組a={3,10,5,15,6,8},根據說明和C代碼,給出數組b的元素值
面向對象程序設計樣題【從試題五、六中任選一題】
試題五(共15分)
閱讀下列說明和C代碼,將應填入(n)處的字句寫在答題紙的對應欄內。
【說明】
某圖書管理系統中管理著兩種類型的文獻:圖書和論文?,F在要求統計所有館藏文獻的總頁碼(假設圖書館中有一本540頁的圖書和兩篇各25頁的論文,那么館藏文獻的總頁碼就是590頁)。采用Visitor(訪問者)模式實現該要求到如圖5-1所示的類圖。
【C++代碼】
class ?Libraryvisitor;
class ?LibraryItemInterface?{
public:
?? (1)? ;
class?Article?:?public?LibraryItemInterface{
private:
? string?m_title;??? //論文名
? string?m_?author?;?//論文作者
? int?m_start_page;
? intm_?end_?page;
Public:
? Article?(?string?p_author?,?string?p_title?,?intp_start_page?,?int?p_end_page?);
int ??getNumber0fpages();
void?accept?(?Libraryvisitor?*?visitor?)?;
};
class?Book?: public? LibraryItemInterface?{
private:
string?m_title;?????????//書名
string?m_author;?????? //作者
string?m_pages;?????? //頁數
public:
?Book?(?string?p_author?,?string?p_title,int p_pages?);
? intgetNumberOfpages?();
? void?accept?(?libraryvisitor*visitor);
?};
class?Libraryvisitor{
public:
?? ?(2)? ?;
?? ?(3)? ?;
Virtual void printSum()=0;
};
class?LibrarySumPrintVisitor?:?public
Libraryvisitor {? //打印總頁數
Private:
? intsum;
public:
??? LibrarySumPrintVisitor();
?? ?void?visit?(?Book?*?p_?book?);
??? void?visit?(?Article?*?p_article?)?;
???void printSum();
? }
//visitor?.?cpp
int?Article?:?:getNumberofpages?(?){
? return?m_end_page?-?m_start_page;
}
void?Article?:?accept?(?Libraryvisitor?*?visitor)
{ ?(4)?;}
Book?:?Book?(?string?p_author?,?string?p_title?,?intp_pages){
??? m_title=p_title;
??? m_author=p_author;
? ??m_pages=p_pages;
}
int Book::getNumberOfPages(){ ?return m_pages; }
void Book:accept( Libraryvisitor*visitor)
{ ??(5) ?;?}?? //其余代碼省略
試題六(共15分)
閱讀下列說明和Java代碼,將應填入(n) 處的字句寫在答題紙的對應欄內。
【說明】
某圖書管理系統中管理著兩種類型的文獻:圖書和論文。現在要求統計所有館藏文獻的總頁碼(假設圖書館中有一本540頁的圖書和兩篇各25頁的論文,那么館藏文獻的總頁碼就是590頁)。采用Visitor(訪問者)模式實現該要求得到如圖6-1所示的類圖。
【Java? 代碼】
import? java?.?util.*;
interface? Libraryvisitor?{
??(1)? ?;
??(2)? ?;
?voidprintSum();
}
class?LibrarySumPrintVisitor?implements
Libraryvisitor {? //打印總頁數
?? private?int?sum?=?0;
??public void visit(Book p_book){
?? sum?=?sum+?p_book?.?getnumberOfpages();
? }
public?void?visit?(?Article?p_article){
??? sum?=?sum?+?p_article?.?getnumberOfPages?(?);
?? }
public?void?printsum?() {
????system?out?printin?("?SUM?="+?sum?);
? }
}
interface?LibraryItemInterface {
?? (3)?? ;
}
class?Article?implements?LibraryItemInterface{
?? private?string?m_title;? ?????/?/?論文名
?? private?string?m_author;?? ?/?/?論文作者
?? private?int?m_start_page
?? private?Int?m_end_page
?? public?Article?(?String?p_author?,?Stringp?_?title?,?int?p_start_page?,?int?p_end_page?){
? ????????m_title=p_title;
? ????????m_author=p_author;
?? ???????m_start_page=p_start_page;
??????? ??m_end_page-p_end_page;
??????? ??}
?? ??????public int getNumberOfPages(){
?? ??????return m_end_page-m_statr_page;
? ???????}
????? ??public void accept (LibraryVisitor visitor){
? ????????(4)??? ?;
?? ??}
}
class Book implementsLibrarryItemInterface{
?private? String m_title;?? //書名
? private? String m_author;?? //書作者
?private? int m_pages;?????? //頁數
? publicBook(String p_author,? String p_title,? int p_pages ){
? m_title=p_title;
? m_author=p_author;
? m_pages=p_pages;
? }
? publicint getNumberOfPages(){
? returnm_pages;
? }
? publicvoid accept(LibraryVisitor Visitor){
??? ?(5)?? ?;
??}
}
總結
以上是生活随笔為你收集整理的软考软件设计师中级考试大纲(附题型举例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R语言绘制gif动图
- 下一篇: sockscap+Bitvise Tun