四川省第31次計算機二級考試(C語言)培訓(xùn)資料_第1頁
四川省第31次計算機二級考試(C語言)培訓(xùn)資料_第2頁
四川省第31次計算機二級考試(C語言)培訓(xùn)資料_第3頁
四川省第31次計算機二級考試(C語言)培訓(xùn)資料_第4頁
四川省第31次計算機二級考試(C語言)培訓(xùn)資料_第5頁
已閱讀5頁,還剩120頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

四川省第31次計算機二級考試(C語言)培訓(xùn)資料成都理工大學(xué)工程技術(shù)學(xué)院計算機科學(xué)與技術(shù)系2009年9月21日目錄TOC\o"1-5"\h\z第一部分、軟件技術(shù)基礎(chǔ)資料 -1-C 語 言 部 分-1-基本要求 -1-考試內(nèi)容 -1-軟件工程基礎(chǔ)部分 -4-面向?qū)ο蟪绦蛟O(shè)計 -4-結(jié)構(gòu)化設(shè)計方法 -6-數(shù)據(jù)結(jié)構(gòu)與算法 -10-算法 -10-數(shù)據(jù)結(jié)構(gòu)的基本概念 -11-線性表及其順序存儲結(jié)構(gòu) -12-查找技術(shù) -15-排序技術(shù) -16-數(shù)據(jù)庫系統(tǒng)的基本概念 -16-數(shù)據(jù)模型 -18-關(guān)系代數(shù) -20-數(shù)據(jù)庫設(shè)計與管理 -20-第二部分、C考試真題 -23-真題一 -23-真題二 -39-真題三 -61-真題四 -82-第三部分、上機考試真題示例 -103-四川省第29次等級考試(第一套) -103-四川省第29次等級考試(第二套) -107-四川省第29次等級考試(第三套) -110-四川省第28次等級考試(第一套) -113-四川省第28次等級考試(第二套) -116-四川省第27次等級考試(第一套) -119-四川省第27次等級考試(第二套) -121-四川省第27次等級考試(第三套) -123-第一部分、軟件技術(shù)基礎(chǔ)資料L1C語言部分基本要求.熟悉TURBOC集成環(huán)境。.熟練掌握結(jié)構(gòu)化程序設(shè)計的方法,具有良好的程序設(shè)計風格。.掌握程序設(shè)計中簡單的數(shù)據(jù)結(jié)構(gòu)和算法。.TURBOC的集成環(huán)境下,能夠編寫簡單的C程序,并具有基本的糾錯和調(diào)試程序的能力??荚噧?nèi)容一、C語言的結(jié)構(gòu).程序的構(gòu)成,MAIN函數(shù)和其他函數(shù)。.頭文件,數(shù)據(jù)說明,函數(shù)的開始和結(jié)束標志。.源程序的書寫格式.C語言的風格。二、數(shù)據(jù)類型及其運算.C的數(shù)據(jù)類型(基本類型,構(gòu)造類型,指針類型,空類型)及其定義方法。.C運算符的種類、運算優(yōu)先級和結(jié)合性。.不同類型數(shù)據(jù)間的轉(zhuǎn)換與運算。.C表達式類型(賦值表達式、算術(shù)表達式、關(guān)系表達式、邏輯表達式、條件表達式、逗號表達式)和求值規(guī)則。三、基本語句.表達式語句,空語句,復(fù)合語句。.數(shù)據(jù)的輸入和輸出,輸入輸出函數(shù)的調(diào)用。.復(fù)合語句。.語句標號的使用。四、選擇結(jié)構(gòu)程序設(shè)計.用if語句實現(xiàn)選擇結(jié)構(gòu)。.用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)。.選擇結(jié)構(gòu)的嵌套。五、循環(huán)結(jié)構(gòu)程序設(shè)計.for循環(huán)結(jié)構(gòu)。.while和dowhile循環(huán)結(jié)構(gòu)。.continue語句和break語句。.循環(huán)的嵌套。衣數(shù)組的定義和引用.一維數(shù)組和多維數(shù)組的定義、初始化和引用。.字符串與字符數(shù)組。七、函數(shù).庫函數(shù)的正確調(diào)用。.函數(shù)的定義方法。.函數(shù)的類型和返回值。.形式參數(shù)與實在參數(shù),參數(shù)值的傳遞。.函數(shù)的正確調(diào)用,嵌套調(diào)用,遞歸調(diào)用。.局部變量和全局變量。.變量的存儲類別(自動、靜態(tài)、寄存器、外部),變量的作用域和生存期。.內(nèi)部函數(shù)與外部函數(shù)。人、編譯預(yù)處理L宏定義:不帶參數(shù)的宏定義;帶參數(shù)的宏定義。.“文件包含”處理。九、指針.指針與指針變量的概念,指針與地址運算符。.變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針以及指向變量、數(shù)組、字符串、函數(shù)、結(jié)構(gòu)體的指針變量。通過指針引用以上各類型數(shù)據(jù)。.用指針作函數(shù)參數(shù)。.返回指針值的指針函數(shù)。.指針數(shù)組,指向指針的指針,MAIN函數(shù)的命令行參數(shù)。十、結(jié)構(gòu)例即“結(jié)構(gòu),與共用體(即“聯(lián)合).結(jié)構(gòu)體和共用體類型數(shù)據(jù)的定義方法和引用方法。.用指針和結(jié)構(gòu)體構(gòu)成鏈表,單向鏈表的建立、輸出、刪除與插入。十一、位運算.位運算符的含義及使用。.簡單的位運算。十二、文件操作只要求緩沖文件系統(tǒng)(即高級磁盤I/O系統(tǒng)),對非標準緩沖文件系統(tǒng)(即低級磁盤I/O系統(tǒng))不要求。L文件類型指針(FILE類型指針)。.文件的打開與關(guān)閉(fopen,fclose)。.文件的讀寫(fputc,fgetc,fputs,fgets,fread,frwite,fprintf,fscanf函數(shù)),文件的定位(rewind,fseek函數(shù))。1.2軟件工程基礎(chǔ)部分面向?qū)ο蟪绦蛟O(shè)計計算機軟件是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。軟件的特點包括:軟件是一種邏輯實體;軟件的生產(chǎn)與硬件不同,它沒有明顯的制作過程;軟件在運行、使用期間不存在磨損、老化問題;軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題;軟件復(fù)雜性高,成本昂貴;軟件開發(fā)涉及諸多的社會因素。軟件按功能分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。軟件危機主要表現(xiàn)在成本、質(zhì)量、生產(chǎn)率等問題。軟件工程是應(yīng)用于計算機軟件的定義、開發(fā)和維護的一整套方法、工具、文檔、實踐標準和工序。軟件工程包括3個要素:方法、工具和過程。軟件工程過程是把軟件轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動,包含4種基本活動:(1)P一一軟件規(guī)格說明;2)D一一軟件開發(fā);3)C 軟件確認;(4)A一一軟件演進。軟件周期:軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程。軟件生命周期三個階段:軟件定義、軟件開發(fā)、運行維護,主要活動階段是:(1)可行性研究與計劃制定;(2)需求分析;(3)軟件設(shè)計;(4)軟件實現(xiàn);(5)軟件測試;(6)運行和維護。軟件工程的目標和與原則:在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品?;灸繕耍焊冻鲚^低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)軟件易于移植;需要較低的費用;能按時完成開發(fā),及時交付使用。基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。軟件工程的理論和技術(shù)性研究的內(nèi)容主要包括:軟件開發(fā)技術(shù)和軟件工程管理。軟件開發(fā)技術(shù)包括:軟件開發(fā)方法學(xué)、開發(fā)過程、開發(fā)工具和軟件工程環(huán)境。軟件工程管理包括:軟件管理學(xué)、軟件工程經(jīng)濟學(xué)、軟件心理學(xué)等內(nèi)容。軟件管理學(xué)包括人員組織、進度安排、質(zhì)量保證、配置管理、項目計劃等。軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。結(jié)構(gòu)化設(shè)計方法軟件設(shè)計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預(yù)定的任務(wù),軟件設(shè)計是確定系統(tǒng)的物理模型。軟件設(shè)計是開發(fā)階段最重要的步驟,是將需求準確地轉(zhuǎn)化為完整的軟件產(chǎn)品或系統(tǒng)的唯一途徑。從技術(shù)觀點來看,軟件設(shè)計包括軟件結(jié)構(gòu)設(shè)計、數(shù)據(jù)設(shè)計、接口設(shè)計、過程設(shè)計。結(jié)構(gòu)設(shè)計:定義軟件系統(tǒng)各主要部件之間的關(guān)系。數(shù)據(jù)設(shè)計:將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。接口設(shè)計:描述軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。過程設(shè)計:把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過程描述。從工程管理角度來看:概要設(shè)計和詳細設(shè)計。軟件設(shè)計的一般過程:軟件設(shè)計是一個迭代的過程;先進行高層次的結(jié)構(gòu)設(shè)計;后進行低層次的過程設(shè)計;穿插進行數(shù)據(jù)設(shè)計和接口設(shè)計。衡量軟件模塊獨立性使用耦合性和內(nèi)聚性兩個定性的度量標準。在程序結(jié)構(gòu)中各模塊的內(nèi)聚性越強,則耦合性越弱。優(yōu)秀軟件應(yīng)高內(nèi)聚,低耦合。軟件概要設(shè)計的基本任務(wù)是:(1)設(shè)計軟件系統(tǒng)結(jié)構(gòu);(2)數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計;(3)編寫概要設(shè)計文檔;(4)概要設(shè)計文檔評審。模塊用一個矩形表示,箭頭表示模塊間的調(diào)用關(guān)系。在結(jié)構(gòu)圖中還可以用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息。還可用帶實心圓的箭頭表示傳遞的是控制信息,空心圓箭心表示傳遞的是數(shù)據(jù)。結(jié)構(gòu)圖的基本形式:基本形式、順序形式、重復(fù)形式、選擇形式。結(jié)構(gòu)圖有四種模塊類型:傳入模塊、傳出模塊、變換模塊和協(xié)調(diào)模塊。典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換、輸出三部分組成。事務(wù)型數(shù)據(jù)流的特點是:接受一項事務(wù),根據(jù)事務(wù)處理的特點和性質(zhì),選擇分派一個適當?shù)奶幚韱卧缓蠼o出結(jié)果。詳細設(shè)計:是為軟件結(jié)構(gòu)圖中的每一個模塊確定實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細節(jié)。常見的過程設(shè)計工具有:圖形工具(程序流程圖)、表格工具(判定表)、語言工具(PDL)o軟件測試軟件測試定義:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。軟件測試的目的:發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件測試方法:靜態(tài)測試和動態(tài)測試。靜態(tài)測試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量。不實際運行軟件,主要通過人工進行。動態(tài)測試:是基本計算機的測試,主要包括白盒測試方法和黑盒測試方法。白盒測試:在程序內(nèi)部進行,主要用于完成軟件內(nèi)部操作的驗證。主要方法有邏輯覆蓋、基本基路徑測試。黑盒測試:主要診斷功能不對或遺漏、界面錯誤、數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)庫訪問錯誤、性能錯誤、初始化和終止條件錯,用于軟件確認。主要方法有等價類劃分法、邊界值分析法、錯誤推測法、因果圖等。軟件測試過程一般按4個步驟進行:單元測試、集成測試、驗收測試(確認測試)和系統(tǒng)測試。程序的調(diào)試程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤,主要在開發(fā)階段進行。程序調(diào)試的基本步驟:(1)錯誤定位;(2)修改設(shè)計和代碼,以排除錯誤;(3)進行回歸測試,防止引進新的錯誤。軟件調(diào)試可分表靜態(tài)調(diào)試和動態(tài)調(diào)試。靜態(tài)調(diào)試主要是指通過人的思維來分析源程序代碼和排錯,是主要的設(shè)計手段,而動態(tài)調(diào)試是輔助靜態(tài)調(diào)試。主要調(diào)試方法有:(1)強行排錯法;(2)回溯法;(3)原因排除法。.3數(shù)據(jù)結(jié)構(gòu)與算法算法算法:是指解題方案的準確而完整的描述。算法不等于程序,也不等于計算機方法,程序的編制不可能優(yōu)于算法的設(shè)計。算法的基本特征:是一組嚴謹?shù)囟x運算順序的規(guī)則,每一個規(guī)則都是有效的,是明確的,此順序?qū)⒃谟邢薜拇螖?shù)下終止。特征包括;(1)可行性;(2)確定性,算法中每一步驟都必須有明確定義,不允許有模棱兩可的解釋,不允許有多義性;(3)有窮性,算法必須能在有限的時間內(nèi)做完,取能在執(zhí)行有限個步驟后終止,包括合理的執(zhí)行時間的含義;(4)擁有足夠的情報。算法的基本要素:一是對數(shù)據(jù)對象的運算和操作;二是算法的控制結(jié)構(gòu)。指令系統(tǒng):一個計算機系統(tǒng)能執(zhí)行的所有指令的集合?;具\算和操作包括:算術(shù)運算、邏輯運算、關(guān)系運算、數(shù)據(jù)傳輸。算法的控制結(jié)構(gòu):列舉法、歸納法、遞推、遞歸、減斗遞推技術(shù)、回溯法。算法復(fù)雜度:算法時間復(fù)雜和算法空間復(fù)雜度。算法時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。算法空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。數(shù)據(jù)結(jié)構(gòu)的基本概念數(shù)據(jù)結(jié)構(gòu)研究的三個方面:(1)數(shù)據(jù)集合中和數(shù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);(2)在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);(3)對各種數(shù)據(jù)結(jié)構(gòu)進行的運算。數(shù)據(jù)結(jié)構(gòu)是指相互有關(guān)聯(lián)的數(shù)據(jù)元素的集合。數(shù)據(jù)的邏輯結(jié)構(gòu)包含:(1)表示數(shù)據(jù)元素的信息;(2)表示各數(shù)據(jù)元素之間的前后件關(guān)系。數(shù)據(jù)的存儲結(jié)構(gòu)有順序、鏈接、索引等。線性結(jié)構(gòu)條件:(1)有且只有一個根結(jié)點;(2)每一個結(jié)點最多有一個前件,也最多有一個后件。非線性結(jié)構(gòu):不滿足線性結(jié)構(gòu)條件的數(shù)據(jù)結(jié)構(gòu)。線性表及其順序存儲結(jié)構(gòu)線性表由一組數(shù)據(jù)元素構(gòu)成,數(shù)據(jù)元素的位置只取決于自己的序號,元素之間的相對位置是線性的。在復(fù)雜線性表中,由若干數(shù)據(jù)元素組成的數(shù)據(jù)元素稱為記錄,而由多個記錄構(gòu)成的線性表又稱為文件。非空線性表的結(jié)構(gòu)特征:(1)且只有一個根結(jié)點a,它無前件;(2)有且只有一個終端點a,它無后件;(3)除根結(jié)點與終端結(jié)點外,其他所有結(jié)點有且只有一個前件,也有且只有一個后件。結(jié)點個數(shù)n稱為線性表的長度,當n=0時,稱為空表。線性表的順序儲結(jié)構(gòu)具有以下兩個基本特點:(1)線性表中所有元素的所占的存儲空間是連續(xù)的;(2)線性表中各數(shù)元素在存儲空間中是按邏輯順序依次存放的oa的存儲地址為:ADR(a)=ADR(a)+(i-1)k,ADR(a)為第一個元素的地址,k代表每個元素占的字節(jié)數(shù)。順序表的運算:插入、刪除。棧和隊列棧是限定在一端進行插入與刪除的線性表,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧按照“先進后出〃(FILO)或“后進先出〃(LIFO)組織數(shù)據(jù),棧具有記憶作用。用top表示棧頂位置,用bottom表示棧底。棧的基本運算:(1)插入元素稱為入棧運算;(2)刪除元素稱為退棧運算;讀棧頂元素是將棧頂元素給一個指定的變量,此時指針無變化。隊列是指允許在一端(隊尾)進入插入,而在另一端(隊頭)進行刪除的線性表。Rear指針指向隊尾,front指針指向隊頭。隊列是“先進先出"(FIFO)或"后進后出"(LILO)的線性表。隊列運算包括(1)入隊運算:從隊尾插入一個元素;(2)退隊運算:從隊頭刪除一個元素。線性鏈表數(shù)據(jù)結(jié)構(gòu)中的每一個結(jié)點對應(yīng)于一個存儲單元,這種存儲單元稱為存儲結(jié)點,簡稱結(jié)點。結(jié)點由兩部分組成:(1)用于存儲據(jù)元素值,稱為數(shù)據(jù)域;(2)用于存放指針,稱為指針域,用于指向前一個或后一個結(jié)點。鏈式存儲結(jié)構(gòu)中,存儲數(shù)據(jù)結(jié)構(gòu)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。鏈式存儲方式即可用于表示線性結(jié)構(gòu),也可用于表示非線性結(jié)構(gòu)。線性鏈表,HEAD稱為頭指針,HEAD=NULL(或0)稱為空表,如果是兩指針:左指針(Llink)指向前件結(jié)點,右指針(Rlink)指向后件結(jié)點。線性鏈表的基本運算:查找、插入、刪除。樹與二叉樹樹是一種簡單的非線性結(jié)構(gòu),所有元素之間具有明顯的層次特性。在樹結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父結(jié)點,沒有前件的結(jié)點只有一個,稱為樹的根結(jié)點,簡稱樹的根。每一個結(jié)點可以有多個后件,稱為該結(jié)點的子結(jié)點。沒有后件的結(jié)點稱為葉子結(jié)點。在樹結(jié)構(gòu)中,一個結(jié)點所擁有的后件的個數(shù)稱為該結(jié)點的度,所有結(jié)點中最大的度稱為樹的度。樹的最大層次稱為樹的深度。二叉樹的基本性質(zhì):(1)在二叉樹的第k層上,最多有2(kl)個結(jié)點;(2)深度為m的二叉樹最多有2-1個結(jié)點;(3)度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個;(4)具有n個結(jié)點的二叉樹,其深度至少為[?n]+l,其中[?n]表示?。縩的整數(shù)部分;(5)具有n個結(jié)點的完全二叉樹的深度為[?n]+l;(6)設(shè)完全二叉樹共有n個結(jié)點。如果從根結(jié)點開始,按層序(每一層從左到右)用自然數(shù)1,2 n給結(jié)點進行編號(k=l,2......n),有以下結(jié)論:①若k=l,則結(jié)點為根結(jié)點,它沒有父結(jié)點;若k>l,則該結(jié)點的父結(jié)點編號為INT(k/2);②若2kn,則編號為k的結(jié)點左子編號為2k;否則該結(jié)點無左子結(jié)點(也無右子結(jié)點);③若2k+ln,則編號為k的結(jié)點的右子結(jié)點編號為2k+l;否則該結(jié)點無右子結(jié)點。滿二叉樹是指除最后一層外,每一層上的所有結(jié)點有兩個子結(jié)點,則k層上有2個結(jié)點深度為m的滿二叉樹有2-1個結(jié)點。完全二叉樹是指除最后一層外,每一層上的結(jié)點數(shù)均達到最大值,在最后一層上只缺少右邊的若干結(jié)點。二叉樹存儲結(jié)構(gòu)采用鏈式存儲結(jié)構(gòu),對于滿二叉樹與完全二叉樹可以按層序進行順序存儲。二叉樹的遍歷:(1)前序遍歷(DLR),首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹;(2)中序遍歷(LDR),首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;(3)后序遍歷(LRD),首先遍歷左子樹,然后訪問遍歷右子樹,最后訪問根結(jié)點。查找技術(shù)順序查找的使用情況:(1)線性表為無序表;(2)表采用鏈式存儲結(jié)構(gòu)。二分法查找只適用于順序存儲的有序表,對于長度為n的序線性表,最壞情況只需比較?n次。排序技術(shù)排序是指將一個無序序列整理成按值的有序表,對于長度為n的有序線性表,最壞情況只需比較?n次。交換類排序法:(1)冒泡排序法,需要比較的次數(shù)為n(n-l)/2;(2)快速排序法。插入類排序法:(1)簡單插入排序法,最壞情況需要n(n-l)分次比較;(2)希爾排序法,最壞情況需要O(n)次比較。選擇類排序法:(1)簡單選擇排序法,最壞情況需要n(n-l)啟次比較;(2)堆排序法,最壞情況需要O(nlogn)次比較。.4數(shù)據(jù)庫系統(tǒng)的基本概念數(shù)據(jù):實際上就是描述事物的符號記錄。數(shù)據(jù)的特點:有一定的結(jié)構(gòu),有型與值之分,如整型、實型、字符型等。而數(shù)據(jù)的值給出了符合定型的值,如整型值15。數(shù)據(jù)庫:是數(shù)據(jù)的集合,具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序共享。數(shù)據(jù)庫存放數(shù)據(jù)是按數(shù)據(jù)所提供的數(shù)據(jù)模式存放的,具有集成與共享的特點。數(shù)據(jù)庫管理系統(tǒng):一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等,是數(shù)據(jù)庫的核心。數(shù)據(jù)庫管理系統(tǒng)功能:1)數(shù)據(jù)模式定義:即為數(shù)據(jù)庫構(gòu)建其數(shù)據(jù)框架;(2)數(shù)據(jù)存取的物理構(gòu)建:為數(shù)據(jù)模式的物理存取與構(gòu)建提供有效的存取方法與手段;(3)數(shù)據(jù)操縱:為用戶使用數(shù)據(jù)庫的數(shù)據(jù)提供方便,如查詢、插入、修改、刪除等以及簡單的算術(shù)運算及統(tǒng)計;(4)數(shù)據(jù)的完整性、安生性定義與檢查;(5)數(shù)據(jù)庫的并發(fā)控制與故障恢復(fù);(6)數(shù)據(jù)的服務(wù):如拷貝、轉(zhuǎn)存、重組、性能監(jiān)測、分析等。為完成以上六個功能,數(shù)據(jù)庫管理系統(tǒng)提供以下的數(shù)據(jù)語言:(1)數(shù)據(jù)定義語言:負責數(shù)據(jù)的模式定義與數(shù)據(jù)的物理存取構(gòu)建;(2)數(shù)據(jù)操縱語言:負責數(shù)據(jù)的操縱,如查詢與增、刪、改等;(3)數(shù)據(jù)控制語言:負責數(shù)據(jù)完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等。數(shù)據(jù)語言按其使用方式具有兩種結(jié)構(gòu)形式:交互式命令(又稱自含型或自主型語言)宿主型語言(一般可嵌入某些宿主語言中)。數(shù)據(jù)庫管理員:對數(shù)據(jù)庫進行規(guī)劃、設(shè)計、維護、監(jiān)視等的專業(yè)管理人員。數(shù)據(jù)庫系統(tǒng):由數(shù)據(jù)庫(數(shù)據(jù))、數(shù)據(jù)庫管理系統(tǒng)(軟件)、數(shù)據(jù)庫管理員(人員)、硬件平臺(硬件)、軟件平臺(軟件)五個部分構(gòu)成的運行實體。數(shù)據(jù)庫應(yīng)用系統(tǒng):由數(shù)據(jù)庫系統(tǒng)、應(yīng)用軟件及應(yīng)用界面三者組成。文件系統(tǒng)階段:提供了簡單的數(shù)據(jù)共享與數(shù)據(jù)管理能力,但是它無法提供完整的、統(tǒng)一的、管理和數(shù)據(jù)共享的能力。層次數(shù)據(jù)庫與網(wǎng)狀數(shù)據(jù)庫系統(tǒng)階段:為統(tǒng)一與共享數(shù)據(jù)提供了有力支撐。關(guān)系數(shù)據(jù)庫系統(tǒng)階段數(shù)據(jù)庫系統(tǒng)的基本特點:數(shù)據(jù)的集成性、數(shù)據(jù)的高共享性與低冗余性、數(shù)據(jù)獨立性(物理獨立性與邏輯獨立性)、數(shù)據(jù)統(tǒng)一管理與控制。數(shù)據(jù)庫系統(tǒng)的三級模式:(1)概念模式:數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯結(jié)構(gòu)的描述,全體用戶公共數(shù)據(jù)視圖;(2)外模式:也稱子模式與用戶模式。是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;(3)內(nèi)模式:又稱物理模式,它給出了數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法。數(shù)據(jù)庫系統(tǒng)的兩級映射:(1)概念模式到內(nèi)模式的映射;(2)外模式到概念模式的映射。數(shù)據(jù)模型數(shù)據(jù)模型的概念:是數(shù)據(jù)特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為和約束條件,為數(shù)據(jù)庫系統(tǒng)的信息表與操作提供一個抽象的框架。描述了數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作及數(shù)據(jù)約束。E-R模型的基本概念(1)實體:現(xiàn)實世界中的事物;(2)屬性:事物的特性;(3)聯(lián)系:現(xiàn)實世界中事物間的關(guān)系。實體集的關(guān)系有一對一、一對多、多對多的聯(lián)系。E-R模型三個基本概念之間的聯(lián)接關(guān)系:實體是概念世界中的基本單位,屬性有屬性域,每個實體可取屬性域內(nèi)的值。一個實體的所有屬性值叫元組。E-R模型的圖示法:(1)實體集表示法;(2)屬性表法;(3)聯(lián)系表示法。層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),具有以下特點:(1)每棵樹有且僅有一個無雙親結(jié)點,稱為根;(2)樹中除根外所有結(jié)點有且僅有一個雙親;從圖論上看,網(wǎng)狀模型是一個不加任何條件限制的無向圖。關(guān)系模型采用二維表來表示,簡稱表,由表框架及表的元組組成。一個二維表就是一個關(guān)系。在二維表中凡能唯一標識元組的最小屬性稱為鍵或碼。從所有侯選健中選取一個作為用戶使用的鍵稱主鍵。表A中的某屬性是某表B的鍵,則稱該屬性集為A的外鍵或外碼。關(guān)系中的數(shù)據(jù)約束:(1)實體完整性約束:約束關(guān)系的主鍵中屬性值不能為空值;(2)參照完全性約束:是關(guān)系之間的基本約束;(3)用戶定義的完整性約束:它反映了具體應(yīng)用中數(shù)據(jù)的語義要求。關(guān)系代數(shù)系統(tǒng)的特點之一是它建立在數(shù)據(jù)理論的基礎(chǔ)之上,有很多數(shù)據(jù)理論可以表示關(guān)系模型的數(shù)據(jù)操作,其中最為著名的是關(guān)系代數(shù)與關(guān)系演算。關(guān)系模型的基本運算:(1)插入(2)刪除(3)修改(4)查詢(包括投影、選擇、笛卡爾積運算)數(shù)據(jù)庫設(shè)計與管理數(shù)據(jù)庫設(shè)計是數(shù)據(jù)應(yīng)用的核心。數(shù)據(jù)庫設(shè)計的兩種方法:(1)面向數(shù)據(jù):以信息需求為主,兼顧處理需求;(2)面向過程:以處理需求為主,兼顧信息需求。數(shù)據(jù)庫的生命周期:需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段、編碼階段、測試階段、運行階段、進一步修改階段。需求分析常用結(jié)構(gòu)析方法和面向?qū)ο蟮姆椒?。結(jié)構(gòu)化分析(簡稱SA)方法用自頂向下、逐層分解的方式分析系統(tǒng)。用數(shù)據(jù)流圖表達數(shù)據(jù)和處理過程的關(guān)系。對數(shù)據(jù)庫設(shè)計來講,數(shù)據(jù)字典是進行詳細的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果。數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,包括5個部分:數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流(可以是數(shù)據(jù)項,也可以是數(shù)據(jù)結(jié)構(gòu))、數(shù)據(jù)存儲、處理過程。數(shù)據(jù)庫概念設(shè)計的目的是分析數(shù)據(jù)內(nèi)在語義關(guān)系。設(shè)計的方法有兩:(1)集中式模式設(shè)計法(適用于小型或并不復(fù)雜的單位或部門);(2)視圖集成設(shè)計法。設(shè)計方法:E-R模型與視圖集成。視圖設(shè)計一般有三種設(shè)計次序:自頂向下、由底向上、由內(nèi)向外。視圖集成的幾種沖突:命名沖突、概念沖突、域沖突、約束沖突。關(guān)系視圖設(shè)計:關(guān)系視圖的設(shè)計又稱外模式設(shè)計。關(guān)系視圖的主要作用:(1)提供數(shù)據(jù)邏輯獨立性;(2)能適應(yīng)用戶對數(shù)據(jù)的不同需求;(3)有一定數(shù)據(jù)保密功能。數(shù)據(jù)庫的物理設(shè)計主要目標是對數(shù)據(jù)內(nèi)部物理結(jié)構(gòu)作調(diào)整并選擇合理的存取路徑,以提高數(shù)據(jù)庫訪問速度有效利用存儲空間。一般RDBMS中留給用戶參與物理設(shè)計的內(nèi)容大致有索引設(shè)計、集成簇設(shè)計和分區(qū)設(shè)計。數(shù)據(jù)庫管理的內(nèi)容:(1)數(shù)據(jù)庫的建立;(2)數(shù)據(jù)庫的調(diào)整;(3)數(shù)據(jù)庫的重組;(4)數(shù)據(jù)庫安全性與完整性控制;(5)數(shù)據(jù)庫的故障恢復(fù);(6)數(shù)據(jù)庫監(jiān)控。第二部分、C考試真題真題一一、選擇題(每小題1分,共10分)若有以下說明和語句,且0<=i<10,則c是對數(shù)組元素的錯誤引用。inta[10],*p=a;A*(a+i)Ba[p-a]Cp+lDp[i].現(xiàn)已定義:charb[6],*p=b;選擇正確的賦值語句C。Ab=wchinawB*b=wchinawCp=/,chinawD*p=HchinaH.運行下列程序后,全局變量t.x和t.s的正確結(jié)果為_Bostructtree{intx;char*s;);fun(structtreet)(t.x=10;t.s=wcomputerw;return(O);main()structtreet;t.x=l;t.s=wminicomputerM;fun(t);printf("%d,%s\n”,t.x,t.s);}A10,computer B^minicomputerC1,computer D10,minicomputer.若fp是指向某文件的指針,且已讀到文件的末尾,則表達式feof(fp)的返回值是—COAOB-lC非零值DNULL.正確的指針數(shù)組的描述是一C0Aint(*a)[10]Binta[i][j]Cint**a[10]D指針數(shù)組表示一個指針指向數(shù)組.如下,哪個是c語言繪圖時必須使用的語句—CoA#include<conio.h> Bttinclude<stdio.h>Cgdriver=VGA Dwindow(20,5,50;20);10.main()intx=3,y=2,z=l;printf(M%s=%d\nVx/y&zw,x/y&z);)程序的輸出結(jié)果是:―BoAx/y&z=OBx/y&z=lCxAy&z=ODxAy&~z=l.定義一個返回值為整型的函數(shù)指針變量,下列哪一個是正確的_C_0Aint*p()Bint(*p)[]Cint(*p)()Dintp().main()(intij;do{if(j%5==0)i++;j++;}while(i!=5))程序運行結(jié)束后j的值為OA25 B20 C26D2110.若intx=2,y=l,z=0,下列幾個表達式的值分別為A。(l)x|y&&z(2)x!=y!=z (3)~x>yA0,1,0B0,1,1C0,0,0D1,1,0二讀程序,并選出正確的答案(每空3分,共45分)#include<stdio.h>intfind(char*sl,char*s2)(intt;char*pl,*p2;for(t=0;sl[t];t++){pl=&sl[t];p2=s2;while{*p2&&*p2==*pl)(pl++;P2++;)if(!*p2)return(t);)return-1;)main()(if(find(McisLI:printf(wisw);if(find(Mcisfun","Basic")!=-l)L2:printf(wbasic\n/,);}(11)行LI輸出的結(jié)果為AoAisBiCcisfun D沒有輸出(12)行L2輸出的結(jié)果為D-oABasicBcisfunCbasicD沒有輸出main()(intw=2,k;for(k=0;k<3;k++)(w=f(w);printf("%d\n",w);}}f(intx)(inty=0;staticz=3;y++;z++;return(x+y+z);}程序結(jié)束后,y的值為—B。AOBlC2D3程序結(jié)束后,w的值為A20B7C28D13intxl=30,x2=40;main()(intx3=10,x4=20;sub(x3,x4);sub(x2,xl);Ll:printf("%d,%d,%d,%d\n”,x3,x4,xl,x2);}sub(intx,inty)(xl=x;x=y;y=xl;L2:printf("%d,%d\n”,x,y);}LI行輸出結(jié)果為DoA10,20,30,40 B10,20,40,10C20,10,40,30 D10,20,40,40L2行輸出結(jié)果為Bo

(16)A10,20B20,10C10,20D20,1040,1010,4010,40(16)A10,20B20,10C10,20D20,1040,1010,4010,4040,10main()intx=l,i=l;for(;x<50;i++)if(x%2!=2){x+=3;continue;}x-=l;print*"%d\n",x);17print*"%d\n",x);17該語句輸出為—D18該語句輸出為A11B14CIOD12A7B8C9DIOA11B14CIOD12A7B8C9DIO以下程序不用第三個變量實現(xiàn)兩個數(shù)對調(diào)的操作。程序中(19),(20)為BJ21)為B#includ<stdio.h>main()inta,b;scanf("%d,%d"a,b);a= ;(19)b= ;(20)a= ;(21)printf("%d,%d",a,b);(19)Aa+bBa-bCa*bDa/b(20)Aa+bBa-bCb-aDa*b(21)Aa+bBa-bCb*aDa/b#include<stdio.h>voidstringcat(char*s,char*t)(inti=0,j=0;while{*(s+i))i++;while(s[i++]=t[j++]);)main()(chars[]="[23",t3="456";stringcat(s,t);printf(M%s\nw,s);程序運行結(jié)果為:D_oA123 B456 C123456 D456123在程序中,若將指針改為數(shù)組,stringcat函數(shù)的形式為:voidstringcat(chars[],chart[])(inti=0,j=0;while(s[i]!=,\0,)i++;while(s[i++]=t[j++]);}則程序運行后的結(jié)果為一C_oA123 B456C123456D456123main()(intx=10,y;y=x++;printf(“%d,%d\n”,(++x,y),y++);}則程序運行后的結(jié)果為一B—oA11,11B10,10C10,11D11,10main()structdatainti;floatf;doubled;unionu{charul[5];longu2[2];}ud;};printf(M%d\nM,sizeof(structsata));}程序運行結(jié)果為:―C。A27 B25C22 D19三程序填空(每小題2分,共30分).下面程序刪除字符串中的所有空格(包括TAB符,回車符、換行符)。請在程序的對應(yīng)位置處填入。(函數(shù)isspace()用于測試字符是否為空格)#include<stdio.h>#include<ctype.h>main()(charstr[81]={rtl23456789”};delspace(str);puts(str);delspace(char*str)(inti,t;charts[81];for(i=0,t=0;str[i]_;i++_)if(!isspace( str[i]))ts[t]=str[i];strcpy(str,ts);)從鍵盤輸入五個字符組成的單詞,判斷該單詞是不是hello,并顯示結(jié)果。#include<stdio.h>main()(staticcharstr[]={'h','e',T,T,'o'};charstrl[5];inti,flag;for(i=0;i<5;i++)strl[i]=getchar();flag=O;for(i=0;i<5;i++)if(strl[i]!=_str[i]_)(flag=l;break;}if(flag)printf(/zThiswordisnothello");elseprintf(/zThiswordidshello");).以下程序把從鍵盤輸入的字符存放到一個文件中,用作為結(jié)束符。請按題意要求填空完善程序。#include<stdio.h>main()(FILE*fp;charch,fname[10];printf(Mlnputthefilename:\n");gets(fname);if(_fp=openf(fname,"w")(32)==NULL)printf(rtcannotopenfile\nH);exit(O);}whiIe(ch=getchar())!='#')fputc(ch,fp_(34));fclose(fp);).該程序是完成文件的換名拷貝操作(類似于DOS的COPY命令)。請將程序補充完善。#include<stdio.h>mainfintargc,char*argv[])(intc;FILE*fprz*fw;if(argc!=3)(puts(H\>Usage:copyfilefilenamelfilenameZ");exit(O);}if((fpr=fopen(_argvl/,r" (35)))==NULL)printf("\>file%sCannotopen\n",argv[l]);exit(l);if((fpr=fopen(argv[2]/_"w"_(36)))==NULL)(printf("\>file%sCannotopen\n",argv[2]);exit(2);}while((c=_getc_(fpr))!=EOF)fputc(c,_fpw);fclose(fpr);fclose(fpw);).該程序是利用折半查找法在一個數(shù)組中進行數(shù)據(jù)檢索。當查找到時,給出數(shù)據(jù)在數(shù)組中的位置;查找不到,給出數(shù)據(jù)不在數(shù)組中的信息。請將程序完善。#definen10inta[]={l,2,3,4,5,6,7,8,9,10};charss(x,m)intx,m;{charz;if(x==a[m])z='t';elseif(x<a[m])z='p';elsez='r';return(z);)mian()(intp,r,m,loop,x;charc;scanf("%d",&x);p=O;r=n-l;m=(r-p)/2;loop=1;while(loop&&(r-p)){c=ss{x,m);if(c=='t')(loop=0;printf("元素在數(shù)組中,其位置為:%d\n”,m);)elseif(c==,p,){P=P;(39);m=(r-p)/2+p;}else{ (40);r=r;m=(r-p)/2+p;})if(loop)printf(w%d數(shù)據(jù)不在數(shù)組中\(zhòng)n”,x);}答案:選擇題(1)C(2)C(3)B(4)C(5)C(6)C(7)B(8)C(9)C(10)A二、選擇題(11)A(12)D(13)B(14)A(15)D(16)B(17)D(18)D(19)A(20)B(21)B(22)C(23)C(24)D(25)C三、程序填空(26)str[i]^str[i]!=NULL或str[i]=O(27)++i或i++(28)*(str+i)或str[i](29)flag(30)getchar() (31)str[i](32)fp=fopen(fname,Mww)(33)ch=getchar()(34)fp (35)argv[l]/,r/, (36)“w" (37)fgetc(38)fpw(39)r=m(40)p=m+l真題二第一部分軟件技術(shù)基礎(chǔ)(共15分)一、是非判斷題(每小題1分,共10分)(判斷下列各題是否正確,如正確,在客觀答題紙上對應(yīng)編號選A,否則選B)1、C++語言中所定義的類實際上也是一種數(shù)據(jù)類型。2、數(shù)據(jù)結(jié)構(gòu)的表示包括數(shù)據(jù)邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)兩方面的表示。3、冒泡排序算法是一種只能實現(xiàn)升序排序,而不能實現(xiàn)降序排序的算法。4、線形表采用鏈式存儲時,結(jié)點的存儲地址必須是連續(xù)的。5、棧頂?shù)奈恢檬请S著進棧和退棧操作而變化的。6、在軟件生存期內(nèi),軟件必須進行維護,維護不會產(chǎn)生副作用。7、采用動態(tài)重定位進行地址轉(zhuǎn)換,允許程序在執(zhí)行過程中在內(nèi)存中移動。而靜態(tài)重定位則不可以。8、在軟件的需求分析階段,要直接面向用戶,主要考慮用戶的經(jīng)濟承受能力和費用的支付問題。9、需求分析階段的抓哦任務(wù)應(yīng)由系統(tǒng)分析員主持完成。10、操作系統(tǒng)是最重要的系統(tǒng)軟件。二、選擇題(每小題1分,共5分)1、以下特種中哪個不是算法的特征()A、可行性B、確定性C、有窮性D、唯一性2、在多道程序設(shè)計系統(tǒng)中,處于后備狀態(tài)的作業(yè)要經(jīng)過()調(diào)度后才能真正執(zhí)行。A、作業(yè)調(diào)度 B、作業(yè)調(diào)度和進程調(diào)度C、進程調(diào)度 D、作業(yè)調(diào)度和設(shè)備調(diào)度3、為解決CPU和I/O設(shè)備之間速度匹配問題,常采用“緩沖區(qū)”方法?!熬彌_區(qū)”的結(jié)構(gòu)多為:()A、順序棧B、鏈棧C、順序隊列 D、循環(huán)隊列4、對象實現(xiàn)了數(shù)據(jù)和操作的結(jié)合,使數(shù)據(jù)和操作()于對象的統(tǒng)一體中。A、結(jié)合B、程序的效率C、封裝D、抽象

5、結(jié)構(gòu)化程序設(shè)計主要調(diào)度的是()A、程序易讀性 B、程序的效率C、程序設(shè)計語言的先進性 C、程序的規(guī)模第二部分C與C++語言程序設(shè)計(共85分)一、單項選擇題(每小題1分,共10分)1、下列程序運行的結(jié)果是:()#include<stdio.h>voidswap(intx,inty){xA=y;yA=x;xA=y;};main()(inta=010,b=l;swap(a,b);printf("%d,%d”,a,b);)A、10,1B、8,12、有以下程序C、1,8D、1,10#include<malloc.h>#include<stdio.h>main()(char*p,*q;p=(char*)malloc(sizeof(char)*20);scanf("%s%s",p,q);printf(w%s,%s\nw,p,q);)若輸入:abcdef〈回車〉,則輸出為( )A、def,defB、abc,defC、abc,dD、d,d3、下列程序的輸出是:()#include<iostream.h>voidmain()(inta=-l,b=4,k;k=(a++<=0)&&(!(b--<=0));cout?k?a?b?endl;)A、003B、103C、112D、0124、關(guān)于類概念的描述中()是錯誤的:A、類就是C語言中的結(jié)構(gòu)體類型。B、類是創(chuàng)建對象的樣板。C、類是具有共同行為的若干對象的統(tǒng)一描述體。D、類是抽象數(shù)據(jù)類型的實現(xiàn)。5、下列程序的運行結(jié)果是()#include<stdio.h>main()(voidfu();fu();fu();)voidfu()(staticinta=0;printf("a=%d",!a?l:8);)D、a=l,a=lA、A=8,a=8B、a=l,a=8CD、a=l,a=l6、以下程序中,輸出值是()#include<stdio.h>#defineM3#defineNM+l#defineNNN*N/2main()printf("%d\n",NN);)A、3B、4C、6D、87、若有語句:charsl[]="stringl”,s2[8],*s3,*s4="string2”;Iil!j( )是對庫函數(shù)strcpy的錯誤調(diào)用。A、strcpy(sl,Mstring2w); B、strcpy(s4,wstringlw);C、strcpy(s3/,stringlw); D、strcpy(//string2w,s2);8、以下()為不正確的if語句。A、if(x>y); B、if(x==y)x+=y;C>if(x!=y)x=x*xelsex+=l;D、if(x<y){x++;y++}9、關(guān)于C++函數(shù)參數(shù)的描述中,錯誤的是()A、實參個數(shù)與形參個數(shù)可以不同。B、缺省參數(shù)必須放在形參表的最右端。C、用引用變量做形參可以實現(xiàn)地址傳遞。D、重載函數(shù)可以有缺省參數(shù)。10、若有以下定義:structnode(Intdata;structnode*next;)且已建立下面的鏈表結(jié)構(gòu),指針p,q分別指向圖中所示接點,則不能將q所指結(jié)點插入到鏈表末尾的一組語句是()A、q->next=NULL;p=p->next;p->next=q;B、p=p->next;q->next=p->next;p->next=q;C、p=p->next;q->next=p;p->next=q;D、p=(*p).next;(*q).next=(*p).next;(*p).next=q;二、讀程序回答問題(每個選擇分,共45分)1、以下程序運行的結(jié)果為:()/include<stdio.h>#include<string.h>voidfun(char*s,intm){chart,*pl,*p2;pl=s;p2=s+m-l;while(pl<p2){t=*pl++;*pl=*p2-;*p2=t;}main()chara[]="ABCDEFG";fun(a,strlen(a));puts(a);)A、GFEDCBA B、AGADAGAC、GAGGAGA C>AGAAGAG2、讀下列C程序,選擇正確的輸出結(jié)果()#include<stdio.h>#include<string.h>voidfunfcharstr[][10]jntn)(chart[20];?nti,j;for(i=0;i<n-l;i++)(for(j=i+l;j<n;j++)if(strlen(str[i])<strlen(str[j]))(strcpy(t,str[i]);strcpy(str[i],str[j]);strcpy(str[j],t);))main()(charstr[][10]={"abc","aabcd,7,abed","a","acdefg"};inti;fun(str,5);for(i=0;i<5;i++)printf("%2d",strlen{str[i]));printf("\n");for(i=0;i<5;i++)puts(str[i]);}main函數(shù)中,第一個for循環(huán)的輸出結(jié)果為:()A、65431B、13456C、76542D、24567main函數(shù)中,第二個for循環(huán)的輸出結(jié)果為()abcB、aC、acdefgD^aAabcdabcaabcdabcAbedabedabedaabcdaaabcdabeabedacdefgacdefgaabcd3、以下是一個C++程序,讀程序并回答問題()/include<iostream.h>intfun(intu,intv)(inttemp;while(v!=O)(temp=u%v;u=v;v=temp;)returnn;)voidmain()(intu,v;intt;cout?"lnputtwointegers:";cin?u?v;t=fun(u,v);cout?q?endl;cout?u*v/t?endl;)若從鍵盤中輸入1015,回答下列兩個問題:(1)第一條輸出語句的輸出結(jié)果為()A、5 B、10 C、15 D、30(2)第二條輸出語句的輸出結(jié)果為()A、5 B、10 C、15 D、304、以下程序的運行結(jié)果是()#include<stdio.h>main()(intflag=l;charch;do{ch=getchar();flag=chang(&ch,flag);putchar(ch);}while(ch!='\n');)chang(c,fg)char*c;intfg;if(*c==")return1;elseif(fg&&*c<='z,&&*c>='a')*c+='A'-'a';return0;)程序運行時,從第一列開始輸入以下字符,《R>代表換行符。Thisisabook!<CR>A、Thisisabook! B、thisIsABook!C、ThisIsABook! D、ThisIsaBook!5、以下程序的運行結(jié)果是()#include<stdio.h>main()(inta=l,b=2,c=3;a++;c+=b;(intb=4,c;c=2*b;a+=c;printf("%d,%d,%d,",a,b,c);A、10,4,8,10,2,5B、6,2,4,6>2,4C、10,4,8,10,2,8D、9,4,8,2,2,56、以下程序的輸出是:()#include<stdio.h>main()(intx=l,y=0,a=0,b=0;switch(x)(switch(y)(case0:a++;break;casel:b++;break;)a++;b++;break;a++;b++;)printf("a=%d/b=%d\n",a,b);A、a=l,b=OB、a=2,b=lC、a=l,b=lD^a=2,b=27、若有以下程序段:inta[]={4,0,2,3,l},k,j,t;for(j=l;j<5;j++)(t=a[j];k=j-l;while(k>=O&&t>a[k]){a[k+l]=a[k];k-;}a[k+l]=t;)則該程序段的功能是()對數(shù)組a進行插入排序(升序)。對數(shù)組a進行插入排序(降序)。對數(shù)組a進行選擇排序(升序)。對數(shù)組a進行選擇排序(降序)。8、選擇下面程序運行的結(jié)果:#include<stdio.h>intm[3H3]={{l},{2},{3}};intn[3][3]={l,2,3};main()printf("%d\n",m[l][O]+n[O][O]);printf("%d\n",m[O][l]+n[l][O]);)TOC\o"1-5"\h\z第1條printf語句行輸出的結(jié)果為( )A>0 B、1 C、2 D、3第2條printf語句行輸出的結(jié)果為( )A>2 B、4 C、6 D、39、選擇下面程序運行的結(jié)果:#include<stdio.h>main()(structdate{intyear,month,day;}today;union(longi;intk;charc;}mix;printf("date=%d\n",sizeof(structdate));printf("mix=%d\n",sizeof(mix));)TOC\o"1-5"\h\z第1條printf語句行輸出的結(jié)果為( )A、6 B、8 C、12 D、前3個答案都是錯誤的第2條printf語句行輸出的結(jié)果為( )A、2 B、4 C、6 D、前3個答案都是錯誤的10、讀下面程序,程序的命名為MyCopy.c/*——MyCopy.c */#include<stdio.h>main(intargc,char*argv[])(if(argc!=3)printf("\nFormat:MyCopy<source_file><destin_file>\n");else{FILEsource,destin;source=fopen(argv[l],"rb");destin=fopen(argv[2],"wb");if(source==NULL)printf("ERROR:Can'topensourcefile%s\n",argv[l]);elseif(destin==NULL)printf("ERROR:Can'topendestinfile%s\n",argv[2]);elsewhile(!feof(source))fputc(fgetc(source),destin);)fclose(source);fclose(destin);))(1)程序的功能是( )A、將磁盤文件的信息顯示在屏幕上。B、將一個磁盤文件復(fù)制到另一個磁盤文件中。C、將兩個磁盤文件合并。D、以上答案都不對。(2)當編譯,連接后,在命令行鍵入:MyCopyFILE1FILE2則程序?qū)崿F(xiàn)( )將FILE1的信息顯示在屏幕上將FILE1和FILE2合并將一個FILE2復(fù)制到FILE1中將一個FILE1復(fù)制到FILE2中注意:1、請把下面“程序填空”中各小題答案寫在主觀題答題紙上2、每一個空只填一個語句或一個語句所缺的部分內(nèi)容三、程序填空(每空2分,共30分)1、以下程序的功能是將磁盤文件a.dat中的10個整數(shù)讀入并按升序排序。#include"stdio.h"voidsortfint*p,intn)(inti,j,t;for(i=0;i<n-l;i++)for(j=i+l;j<n;j++)if( ){t=p[i];p[i]=p[j];p[j]=t;})main()(inta[10],i,j,t;FILE*fp;fp=fopen("a.dat","r");for(i=0;i<10;i++)fclose(fp);for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");for(i=0;i<10;i++)printf("%d",a[i]);printf("\n");)2、下列程序用遞歸算法實現(xiàn),輸入任意一個整數(shù),在各數(shù)位之間插入空格后輸出。#include<stdio.h>main()(longintn;voidfunc(long);scanf("%ld",&n);)voidfunc()printff'%d",m%10);)3、程序功能:有10個數(shù)按升序放在一個數(shù)組中,輸入一個數(shù),要求用折半查找該數(shù)是數(shù)組中的第幾個元素,如果該數(shù)不在數(shù)組中,打印出“NO”。折半查找法:設(shè)數(shù)組長度為n,則將輸入的數(shù)m與a[n?比較,若m,a[n/2],則將a[0]至!Ja[n/2]的數(shù)繼續(xù)折半進行查找;若m=a[n/2],則表示找到該數(shù)的位置;若m>a[n/2],則將a[n/2]到a[n]的數(shù)繼續(xù)折半進行查找。/include<stdio.h>main()(inta[10]={12,32,45,62,71,76,80,85,90,95);intnum,bott,top,mid;printf("lnputanumber:\n");scanf("%d",&num);bott=0;top=9;while(bott<=top){mid=;if(num==a[mid]){printf("%disth%dnumber\n",num,mid);break;}elseif(num<a[mid]);elsebott=mid+l;)if()printf("NO\n");)4、有兩個字符串strl和str2,將strl和str2對應(yīng)字符中ASCII碼值較大者存入字符數(shù)組str3的對應(yīng)位置,若strl和str2長度不一致,則將較長字符串中剩余字符直接連接到str3的末尾。例如:strl存放字符串"abaxef”,str2存放字符串"bac",則str3中的字符串為“bbcxef”。#include<stdio.h>#include<string.h>main()(inti;charstrl[80],str2[80],str3[80]="";char*pl,*p2;pl=strl;p2=str2;gets(strl);gets(str2);for(i=0;;i++)(if(*(pl+i)>*(p2+i))str3[i]=*(pl+i);elsestr3[i]=*(p2+i);)if()strcat(str3,pl+i);else;printf("Result:%s\n",str3);)5、下面程序的功能是計算100至100。之間有多少個數(shù)其各位數(shù)字之和是5O#include<stdio.h>voidmain()(inti,s,k,count=0;for(i=100;i<=1000;i++)(s=0;k=i;while()s=s+k%10;if(s!=5);elsecount++;)cout?count?endl;真題三第一部分

軟件技術(shù)基礎(chǔ)

(共15分)一、是非判斷題(每小題1分,共10分)(判斷下列各題是否正確,如正確,在客觀答題紙上對應(yīng)編號選A,否則選B)1、數(shù)據(jù)在計算機內(nèi)存中的表示是指數(shù)據(jù)的存儲結(jié)構(gòu)。A2、能影響中斷響應(yīng)次序的技術(shù)是中斷優(yōu)先級和中斷屏蔽。A3、鏈表可以隨機訪問任意一個結(jié)點,而順序表則不能。B4、作業(yè)與進程的主要區(qū)別是前者是由用戶提交,后者是由系統(tǒng)自動生成。B5、Windows、OS啟,Linux微機操作系統(tǒng)都是多用戶多任務(wù)操作系統(tǒng)。B6、數(shù)據(jù)的邏輯結(jié)構(gòu)是從邏輯關(guān)系上描述數(shù)據(jù),它與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān),是獨立于計算機的。A7、流式文件和記錄式文件都以字符為基本單位進行存取。B8、不定長文件是指字段的長度不固定。B9、軟件工程的三要素包括方法、工具和環(huán)境。B10、軟件結(jié)構(gòu)是以指令為基礎(chǔ)而組成的一種控制層次結(jié)構(gòu)。B二、選擇題(每小題1分,共5分)1、若進棧序列為1,2,3,4,且進棧過程中可以出棧,則不可能出棧的序列是(C)A、1,4,3,2 B、2,3,4,1C、3,1,4,2 D、3,4,2,12、任何兩個并發(fā)進程之間(D)A、一定存在互斥關(guān)系 B、一定存在同步關(guān)系C、一定彼此獨立無關(guān) D、可能存在同步或互斥關(guān)系3、以下哪個特征不是分時操作系統(tǒng)的主要特征(C)A、中斷管理 B、獨立性C、交互性 D、多路性4、以下的準則中哪個不是面向?qū)ο筌浖O(shè)計應(yīng)遵循的(B)A、抽象準則 B、獨立性準則C、信息屏蔽準則 D、模塊化準則5、需求分析中開發(fā)人員主要從用戶那里了解(A)A、軟件做什么 B、軟件的結(jié)構(gòu)C、輸入的信息 C、軟件的測試第二部分C與C++語言程序設(shè)計(共85分)一、單項選擇題(每小題1分,共10分)1、若變量已定義并賦值,下列符合C語法的表達式是:(B)A、a:=b+l B、a=b=c+2C、int18.5%3 D、a=a+7=c+b2、以下程序輸出的結(jié)果是(A)voidmain()chars[]="HelloChina";

s[5]=0;puts(s);)A、HelloB、ChinaC、HelloChinaD、03、有以下程序#include<malloc.h>voidmain()(char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s,%s",p,q);printf("%s,%s\n”,p,q);)若輸入abddef(回車〉,則輸出為(A)A、def,defB、abc,defC、abc,dD、d,d4、下列函數(shù)形式正確的是(D)A、doublefun(intx,inty)B、fun(intx,y){z=x+y;returnz;}C>fun(x,y){z=x+y;returnz;}C>fun(x,y){intx,y;returnz;}D、doublefun(intx,inty){doublez;z=x+y;doublez=x+y;z=x+y;returnz;} returnz;}5、下列有關(guān)類和對象的說法不正確的是()A、對象是類的一個實例。B、任何一個對象只能屬于一個具體的類。C、任何一個對象只能屬于一個具體的類。D、類與對象的關(guān)系和數(shù)據(jù)類型與變量的關(guān)系相似。6、派生類的對象對它的基類成員中(A)是可以訪問的。A、公有繼承的公有成員 B、公有繼承的私有成員C、保護繼承的公有成員 D、私有繼承的公有成員7、已經(jīng)學(xué)生結(jié)構(gòu)體描述如下:structstudents(intno;charname[10];charsex;struct(intday;intmonth;intyear;}birth;

intscore;};用學(xué)生結(jié)構(gòu)體定義了變量w;structstudentsw;設(shè)變量w中的“生日”是“1982年5月29日”,下列對生日的正確賦值方法是(C)A、A、day=29;month=5;year=1982;C>w.birth.day=29;w.birth.month=5;w.birth.year=1982;B>w.day=29;w.month=5;w.year=1982;D^birth.day=29;birth.month=5;birth.year=1982;8、假定pl和p2是已賦值的int型指針,則下面有關(guān)運算中,(A)是非法的。A、(pl+4)=p2; B、p2=pl-10;C、if(pl!=p2)printf("!="); D、pl+=(p2-pl)9、關(guān)于C/C++語言,以下敘述正確的是(D)A、C是面向過程的程序設(shè)計語言,C++不支持面向過程的程序設(shè)計。B、C語言支持圖形設(shè)計,C++不支持。C、C程序由函數(shù)組成,而C++程序由類組成。D、C是C++的子集。10、設(shè)有以下語句:charx=3,y=6,z;z=xA(y?2);則z的值是(C)A、00010100 B、00011100C、00011011 D、00011000二、讀程序回答問題(每個選擇分,共45分)1、以下程序運行的結(jié)果為:(B)#include<stdio.h>voidmain()(inta=2,b=-l,c=2;if(a<b)if(b<c)c=0;elsec+=l;printf("%d",c);)A、3B、2C、1C>02、下列程序運行的結(jié)果為(C)#include<stdio.h>voidmain()inta=13,b=21,m=0;switch(a%3)caseO:m++;break;casel:m++;switch{b%2)(default:m++;caseO:m++;break;))printf("%d",m);)A、1B、2C、3D、43、以下程序運行后,文件test中的內(nèi)容為( )#include<stdio.h>#include<string.h>voidfun(char*fname,char*st)(FILE*fp;inti;fp=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],fp);fclose(fp);)voidmain()()A、worldB、worldhelloC>helloworld D、hello4、讀下列程序:#include<iostream.h>voidmain()(unionvalue;(charch;intn;doublef;}Data;cout?"sizeof{Data)="?sizeof(Data)?endl;Data.ch='a';cout?Data.ch?endl;Data.n=100;cout?Data.n?endl;Data.f=78.168;cout?Data.f?endl;)value是(B)A、共用體變量名C、結(jié)構(gòu)體變量名(2)程序運行的結(jié)果是:(sizeof(Data)=13;a10078.168C、13a10078.1685、讀下列程序:#include<iostream.h>voidmain()B、共用體名D、結(jié)構(gòu)體名B)sizeof(Data)=8a10078.168D、8a10078.168staticcharstr[50]="485057ehkl05101",*p=str;intsuml=0,sum2=0;while(*p!='\O')if(*p>=48&&*p<=57)suml++;elseif(*p>=101&&*p<=107)sum2++;else;P++;)cout?suml?',,?sum2?endl;)(1)程序的運行結(jié)果是(D)A、3,2B、2,3C、3,12D、12,3while(*p!八0。與(A)功能相同A、while(*p!=0) B、while(*p=0)C、while(*p<>,\0,) D、while(*p!0)6、讀下列程序:#include<stdio.h>#include<string.h>voidfun(char*w,intn)sl=w;s2=sl+n-l;while(sl<s2){t=*sl++;*sl=*s2-;*s2=t;})voidmain()(charp[20]="1234567";funfp^trlenfp));Puts(p);)(1)輸出結(jié)果是(B)A、7654321B、1711717C、1714171D、1234567(2)若把程序中的語句:while(sl<s2){t=*sl++;*sl=*s2--;*s2=t;}改寫成:While(sl<s2){t=*sl;*sl=*s2;*s2=t;sl++;s2--;}則輸出結(jié)果是(A)A、7654321B、1711717C、1714171D、12345677、下列程序運行結(jié)果是(D)#defineX5#defineYX+l#defineZY*X〃voidmain()inta;a=Y;printf("%d",Z);printf("%d\n",-a);)A、76B、126C、125D、758、讀下列程序:#include<stdio.h>intx;voidsub(int*s,intx)(staticintt=0;x+=s[t];t++;}voidmain()(inta[]={3,8,4,2},i;intx=0;for(i=0;i<4;i++)sub(a,x);printf("%3d",x);)(1)程序的執(zhí)行結(jié)果為(C)TOC\o"1-5"\h\zA> 3 8 4 2 B> 3 11 15 17C> 0 0 0 0 D> 2 4 8 3(2)若把main第二行的語句“intx;”刪除,運行結(jié)果為(C)A、 3 8 4 2 B> 3 11 15 17C> 0 0 0 0 D> 2 4 8 39、讀下列程序分析運行結(jié)果/include<stdio.h>char*cat(char*strl,char*str2)(char*pt;for(pt=strl;*pr!='\0';pt++);while(*str2!='\0')*pt++=*str2++;return(pt);)voidmain()char*^51[30]="210",52[30]="45";

p=cat(sl,s2);printf("%d\n",p-sl);p=cat(sl,s2);printf("%d\n",p-sl);)(1)主函數(shù)中,執(zhí)行第一個輸出函數(shù)后的結(jié)果為(A)A、5 B、6 C、7 D、8(2)主函數(shù)中,執(zhí)行第二個輸出函數(shù)后的結(jié)果為(C)A、5 B、6 C、7 D、810、下列程序的運行結(jié)果是(C)#include<stdio.h>voidmain()(char*str[]={"One","Two","Three","Four"};char**ptr=str;inti;for(i=0;i<3;i++)printf("%s",(ptr+l)[i]);)A、newohree B、TwoC>TwoThreeFourDC>TwoThreeFourD、指針運算非法,無輸出注意:1、請把下面“程序填空”中各小題答案寫在主觀題答題紙上2、每一個空只填一個語句或一個語句所缺的部分內(nèi)容三、程序填空(每空2分,共30分)1、以下程序可把輸入的十進制數(shù)以十六進制的形式輸出。#include<stdio.h>voidmain()(charb[17]="0123456789ABCDEF";intc[64],d,i=0,base=16;longn;scanf("%ld",&n);do{c[i]=n%base;i++;n=n/base;}while(n!=0);for(i--;i>=0;--i){d=c[i];printf("%c", b[d]);)printf("\n");)2、有一個數(shù)是43634,其左右對稱,求比它大的對稱數(shù)中最小的那個。#include<stdio.h>voidmain()(longinti=43634,j;intcount,ch[10];do{i++;j=i;count=0;while(j)(ch[count]=j%10;j=_i/io ;count++;)iffch[0]*10000+ch[l]*1000+ch[2]*100+ch[3]*10+ch[4]==break;}while(l);printf("%5d\n", i);)3、以下程序能統(tǒng)計并輸出1至100之間所有能被3整除但不能被7整除的所有正整數(shù)。#include<stdio.h>#defineM100voidfunfintm,int+p;int*t)(inti,num=0;for(i=l;i<=m;i++)if(i%3==0&&i%7!=0)p[num++]=i;*t=num;)voidmain()(inta[M],n,k;fun(M,a,&n);for(k=0;k<n;k++)if((k+l)%5==0)printf("\n");elseprintf("%3d",a[k]);printf("\n");)4、下面程序功能是從字符串s中刪除任何在第二個字符串t中出現(xiàn)的字符,然后輸出。#include<stdio.h>voidmain()(chars[81],t[20].*pl,*p2;inti;scanf("%s%s"/s,t);printf("\n");pl=s;for(i=0;*(pl+i);i++)for(p2=t;*p2;p2++)while(*(pl+i)==*p2)strcpy(pl+i,pl+i+l);printf("%s",s);5、文件stu.txt中存放了一個學(xué)生各門課程的考試分數(shù),數(shù)據(jù)之間以逗號分割。下面程序?qū)⑽募械乃蟹謹?shù)取出,計算平均分,顯示在屏幕上,還要把這個平均分按原文件的數(shù)據(jù)格式記錄在原文件中。例如文件stu.txt中存放的為“60.5,81.1,83.5,80.5”,則程序運行后文件stu.txt中為“60.5,81.1,83.5,80.5,78.366669w#include<stdio.h>voidmain()(intn=0;floatx=0.0,y;FILE*fp;fp=fopen("stu.txt","a+");do(fscanf(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論