數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法_第1頁
數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法_第2頁
數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法_第3頁
數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法_第4頁
數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第1頁。第一章數(shù)據(jù)構(gòu)造與算法數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第1頁。【考點1】算法的根本概念算法:是指一組有窮的指令集,是解題方案的準確而完好的描繪。算法不等于程序,也不等于計算方法。算法的根本特征:確定性,算法中每一步驟都必須有明確定義,不允許有多義性;有窮性,算法必須能在有限的時間內(nèi)做完,即能在執(zhí)行有限個步驟后終止;可行性,算法原那么上可以準確地執(zhí)行;擁有足夠的情報。算法的組成要素:一個算法由數(shù)據(jù)對象的運算和操作以及其控制構(gòu)造這兩局部組成。算法的根本運算和操作:算術(shù)運算,邏輯運算,關(guān)系運算,數(shù)據(jù)傳輸。算法的根本控制構(gòu)造:順序,選擇,循環(huán)。算法根本設(shè)計方法:列舉法、歸納法、遞推、遞歸、減半遞推技術(shù)?!究键c2】算法的復(fù)雜度算法效率的度量——算法的復(fù)雜度:時間復(fù)雜度和空間復(fù)雜度。算法時間復(fù)雜度:指執(zhí)行算法所需要的計算工作量。通常,一個算法所用的時間包括編譯時間和運行時間。算法空間復(fù)雜度:指執(zhí)行這個算法所需要的內(nèi)存空間。包括算法程序所占的空間,輸入的初始數(shù)據(jù)所占的空間,算法執(zhí)行過程中所需的額外空間。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第2頁??臻g復(fù)雜度和時間復(fù)雜度并不相關(guān)。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第2頁?!究键c3】數(shù)據(jù)構(gòu)造的根本概念數(shù)據(jù):數(shù)據(jù)是客觀事物的符號表示,是能輸入到計算機中并被計算程序識別和處理的符號的總稱,如文檔,聲音,視頻等。數(shù)據(jù)元素:數(shù)據(jù)元素是數(shù)據(jù)的根本單位。數(shù)據(jù)對象:數(shù)據(jù)對象是性質(zhì)一樣的數(shù)據(jù)元素的集合。數(shù)據(jù)構(gòu)造:是指由某一數(shù)據(jù)對象中所有數(shù)據(jù)成員之間的關(guān)系組成的集合。【考點4】邏輯構(gòu)造和存儲構(gòu)造數(shù)據(jù)構(gòu)造可分為數(shù)據(jù)的邏輯構(gòu)造和存儲構(gòu)造。數(shù)據(jù)的邏輯構(gòu)造是對數(shù)據(jù)元素之間的邏輯關(guān)系的描繪,與數(shù)據(jù)的存儲無關(guān),是面向問題的,是獨立于計算機的。它包括數(shù)據(jù)對象和數(shù)據(jù)對象之間的關(guān)系。數(shù)據(jù)的存儲構(gòu)造也稱為數(shù)據(jù)的物理構(gòu)造,是數(shù)據(jù)在計算機中的存放的方式,是面向計算機的,它包括數(shù)據(jù)元素的存儲方式和關(guān)系的存儲方式。數(shù)據(jù)構(gòu)造和邏輯構(gòu)造的關(guān)系:一種數(shù)據(jù)的邏輯構(gòu)造可以表示成多種存儲構(gòu)造即數(shù)據(jù)的邏輯構(gòu)造和存儲構(gòu)造不一定一一對應(yīng)。常見的存儲構(gòu)造有:順序,鏈接,索引等。采用不同的存儲構(gòu)造其數(shù)據(jù)處理的效率是不同的?!究键c5】線性構(gòu)造和非線性構(gòu)造線性構(gòu)造的條件〔一個非空數(shù)據(jù)構(gòu)造):〔1〕有且只有一個根結(jié)點;〔2〕數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第3頁。每一個結(jié)點最多有一個前件,也最多有一個后件。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第3頁。非線性構(gòu)造:不滿足線性構(gòu)造條件的數(shù)據(jù)構(gòu)造。棧、隊列、雙向鏈表是線性構(gòu)造,樹、二叉樹為非線性構(gòu)造。【考點6】線性表及其順序存儲構(gòu)造線性表是由一組數(shù)據(jù)元素構(gòu)成,數(shù)據(jù)元素的位置只取決于自己的序號,元素之間的相對位置是線性的。在復(fù)雜線性表中,由假設(shè)干項數(shù)據(jù)元素組成的數(shù)據(jù)元素稱為記錄;由多個記錄構(gòu)成的線性表稱為文件。非空線性表的構(gòu)造特征:〔1〕有且只有一個根結(jié)點a1,它無前件;〔2〕有且只有一個終端結(jié)點an,它無后件;〔3〕除根結(jié)點與終端結(jié)點外,其他所有結(jié)點有且只有一個前件,也有且只有一個后件。結(jié)點個數(shù)n稱為線性表的長度,當(dāng)n=0時,稱為空表。線性表的順序存儲構(gòu)造具有以下兩個根本特點:〔1〕線性表中所有元素所占的存儲空間是連續(xù)的;〔2〕線性表中各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的。元素ai的存儲地址為:ADR(ai)=ADR(a1)+(i-1)*k,ADR(a1)為第一個元素的地址,k代表每個元素占的字節(jié)數(shù)。順序表的運算:查找、插入、刪除?!究键c7】線性鏈表線性鏈表是線性表的鏈式存儲構(gòu)造,數(shù)據(jù)構(gòu)造中的每一個結(jié)點對應(yīng)于數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第4頁。一個存儲單元,這種存儲單元稱為存儲結(jié)點,簡稱結(jié)點。結(jié)點由兩局部組成:(1)用于存儲數(shù)據(jù)元素值,稱為數(shù)據(jù)域;(2)用于存放指針,稱為指針域,用于指向前一個或后一個結(jié)點。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第4頁。在鏈式存儲構(gòu)造中,存儲數(shù)據(jù)構(gòu)造的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,而數(shù)據(jù)元素之間的邏輯關(guān)系是由指針域來確定的。鏈式存儲方式既可用于表示線性構(gòu)造,也可用于表示非線性構(gòu)造。線性單鏈表中,HEAD稱為頭指針,HEAD=NULL〔或0〕稱為空表。圖1圖1單鏈表的構(gòu)造單鏈表的構(gòu)造〔圖1〕……數(shù)據(jù)域指針域數(shù)據(jù)域指針域數(shù)據(jù)域指針域……雙向鏈表有兩個指針:左指針〔Llink〕指向前件結(jié)點,右指針〔Rlink〕指向后件結(jié)點。LDR……圖2雙鏈表的構(gòu)造LDRLDRLDR……圖2雙鏈表的構(gòu)造LDRLDR循環(huán)鏈表:循環(huán)鏈表與單鏈表的不同的是它的最后一個結(jié)點的指針域存放的事指向第一個結(jié)點的指針而單鏈表存放的是空指針?!瓐D3循環(huán)鏈表的構(gòu)造線性鏈表的根本運算:查找、插入、刪除。【考點8】棧1、棧的根本概念棧是一種特殊的線性表,只允許在表的一端進展插入和刪除的線性表;數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第5頁。插入,刪除的一端為棧頂,另一端為棧底;當(dāng)表中沒有元素時為空棧。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第5頁。棧是一種后進先出〔或先進后出LastInFirstOut〕的線性表。棧具有記憶功能。棧的實例:火車調(diào)度,子彈夾。2、棧的存儲構(gòu)造順序存儲構(gòu)造:用一組地址連續(xù)的存儲單元即一維數(shù)組來存儲;鏈式存儲:用線性鏈表來存儲;3、棧的根本運算(1)入棧運算,在棧頂位置插入元素;(2)退棧運算,刪除元素(取出棧頂元素并賦給一個指定的變量);(3)讀棧頂元素,將棧頂元素賦給一個指定的變量,此時指針無變化。【考點9】隊列根本概念隊列是一種特殊的線性表,只允許在表的一端插入,在另一端刪除,允許插入的一端是隊尾〔rear〕,允許刪除的一端為隊頭〔front〕;當(dāng)表中沒有元素是空隊列;隊列是一種先進先出的線性表。(FIFO)2、隊列的存儲構(gòu)造順序存儲:一維數(shù)組。鏈式存儲:線性鏈表。3、隊列的運算:(1)入隊運算:從隊尾插入一個元素;(2)退隊運算:從隊頭刪除一個元素。隊列的順序存儲構(gòu)造一般采用循環(huán)隊列的形式。循環(huán)隊列s=0表示隊數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第6頁。列為空;s=1且front=rear表示隊滿。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第6頁。計算循環(huán)隊列的元素個數(shù):“尾指針減頭指針〞,假設(shè)為負數(shù),再加其容量即可?!究键c10】樹的根本概念樹是一種非線性構(gòu)造,是n個結(jié)點的有限集。當(dāng)n=0時為空樹,n>0時為非空樹。結(jié)點的度:結(jié)點所擁有的子樹的個數(shù)。葉子結(jié)點:度為0的結(jié)點。分支結(jié)點:除葉子結(jié)點以外的結(jié)點。結(jié)點的層次:根結(jié)點在第一層,同一層上左右結(jié)點的子結(jié)點在下一層。樹的深度:所處層次最大的那個結(jié)點的層次。樹的度:樹中所有結(jié)點的度的最大值?!究键c11】二叉樹及其根本性質(zhì)1、二叉樹的概念二叉樹是一種特殊的樹形構(gòu)造,每個結(jié)點最多只有兩棵子樹,且有左右之分不能互換,因此,二叉樹有五種不同的形態(tài),見教材12頁。2、二叉樹的性質(zhì)性質(zhì)1在二叉樹的第k層上,最多有2k-1(k≥1〕個結(jié)點。性質(zhì)2深度為m的二叉樹最多有2m-1性質(zhì)3在任意一棵二叉樹中,度為0的結(jié)點〔葉子結(jié)點〕總是比度為2的結(jié)點多一個。性質(zhì)4具有n個結(jié)點的二叉樹,其深度不小于[log2n]+1,其中[log2n]表示為log2n的整數(shù)局部。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第7頁。3、二叉樹的存儲構(gòu)造:詳見教材第13-14頁。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第7頁?!究键c12】滿二叉樹與完全二叉樹滿二叉樹:除最后一層外,每一層上的所有結(jié)點都有兩個子結(jié)點。在滿二叉樹中,每一層上的結(jié)點數(shù)都到達最大值,即在滿二叉樹的第k層上有2k-1個結(jié)點,且深度為m的滿二叉樹有2m-1完全二叉樹是指這樣的二叉樹:除最后一層外,每一層上的結(jié)點數(shù)均到達最大值;在最后一層上只缺少右邊的假設(shè)干結(jié)點。滿二叉樹是完全二叉樹,而完全二叉樹一般不是滿二叉樹?!究键c13】完全二叉樹的性質(zhì)性質(zhì)1具有n個結(jié)點的完全二叉樹的深度為[log2n]+1。性質(zhì)2完全二叉樹中度為1的結(jié)點數(shù)為0或1。ABCEABCEDGFH圖4二叉樹的遍歷前序遍歷:先訪問根結(jié)點、然后遍歷左子樹,最后遍歷右子樹;并且,在遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。前序遍歷圖5可得:ABCDFHEG。中序遍歷:先遍歷左子樹、然后訪問根結(jié)點,最后遍歷右子樹;并且,在遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。中序遍歷圖5可得:BAFHDCGE。后序遍歷:先遍歷左子樹、然后遍歷右子樹,最后訪問根結(jié)點;并且,數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第8頁。在遍歷左、右子樹時,仍然先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第8頁。后序遍歷圖5可得:BHFDGECA?!究键c15】順序查找順序查找是從表的一端開始,依次掃描表中的各個元素,并與所要查找的數(shù)進展比較。在以下兩種情況下也只能采用順序查找:〔1〕假設(shè)線性表為無序表,那么不管是順序存儲構(gòu)造還是鏈式存儲構(gòu)造,只能用順序查找。〔2〕即使是有序線性表,假設(shè)采用鏈式存儲構(gòu)造,也只能用順序查找。【考點16】二分查找二分查找的條件:〔1〕用順序存儲構(gòu)造(2)線性表是有序表。查找的步驟:詳見教材第16頁。對于長度為n的有序線性表,在最壞情況下,二分法查找只需比較log2n次,而順序查找需要比較n次。【考點17】排序1、交換排序〔1〕冒泡排序法,在最壞的情況下,冒泡排序需要比較次數(shù)為n(n-1)/2?!?〕快速排序法,在最壞的情況下,快速排序需要比較次數(shù)為n(n-1)/2。2、插入類排序法:數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第9頁。〔1〕簡單插入排序法,最壞情況需要n(n-1)/2次比較;數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第9頁?!?〕希爾排序法,最壞情況需要O(n)次比較?!泊髮慜是算法復(fù)雜度的表示方法〕3、選擇類排序法:〔1〕簡單項選擇擇排序法,最壞情況需要n(n-1)/2次比較;〔2〕堆排序法,最壞情況需要O(nlog2n)次比較。相比以上幾種(除希爾排序法外),堆排序法的時間復(fù)雜度最小。第二章程序設(shè)計根底【考點1】程序設(shè)計方法與風(fēng)格形成良好的程序設(shè)計風(fēng)格需注意:(詳見教材第19頁)。1、源程序文檔化;2、數(shù)據(jù)說明的方法;3、語句的構(gòu)造;4、輸入和輸出。注釋分序言性注釋和功能性注釋。語句構(gòu)造明晰第一、效率第二?!究键c2】構(gòu)造化程序設(shè)計方法的四條原那么1、自頂向下;2、逐步求精;3、模塊化;4、限制使用goto語句?!究键c3】構(gòu)造化程序的根本構(gòu)造順序構(gòu)造:是最根本、最普通的構(gòu)造形式,按照程序中的語句行的先后順序逐條執(zhí)行。選擇構(gòu)造:又稱為分支構(gòu)造,它包括簡單項選擇擇和多分支選擇構(gòu)造。循環(huán)構(gòu)造:根據(jù)給定的條件,判斷是否要重復(fù)執(zhí)行某一一樣的或類似的程序段。循環(huán)構(gòu)造對應(yīng)兩類循環(huán)語句:先判斷后執(zhí)行的循環(huán)體稱為數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第10頁。當(dāng)型循環(huán)構(gòu)造;先執(zhí)行循環(huán)體后判斷的稱為直到型循環(huán)構(gòu)造。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第10頁?!究键c4】面向?qū)ο蟮某绦蛟O(shè)計及面向?qū)ο蠓椒ǖ膬?yōu)點面向?qū)ο蟮某绦蛟O(shè)計以對象為核心,強調(diào)對象的抽象性,封裝性,繼承性和多態(tài)性。面向?qū)ο蠓椒ǖ膬?yōu)點〔1〕人類習(xí)慣的思維方法一致;〔2〕穩(wěn)定性好;〔3〕可重用性好;〔4〕易于開發(fā)大型軟件產(chǎn)品;〔5〕可維護性好?!究键c5】對象及其特點對象〔object〕:面向?qū)ο蠓椒ㄖ凶罡镜母拍?,可以用來表示客觀世界中的任何實體,對象是實體的抽象。對象的根本特點:〔1〕標(biāo)識惟一性;〔2〕分類性;〔3〕多態(tài)性;〔4〕封裝性;〔5〕模塊獨立性好?!究键c6】屬性,類和實例屬性:即對象所包含的信息,它在設(shè)計對象時確定,一般只能通過執(zhí)行對象的操作來改變。類:是具有相似屬性與操作的一組對象。類是關(guān)于對象性質(zhì)的描繪。類是對象的抽象,對象是其對應(yīng)類的一個實例。【考點7】消息及其組成消息:是一個實例與另一個實例之間傳遞的信息。對象間的通信靠消息傳遞。它懇求對象執(zhí)行某一處理或答復(fù)某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第11頁。消息的組成包括:數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第11頁。(1)接收消息的對象的名稱;〔2〕消息標(biāo)識符,也稱消息名;〔3〕零個或多個參數(shù)。【考點8】繼承和多態(tài)繼承:是使用已有的類定義作為根底建立新類的定義技術(shù),廣義指可以直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義他們。繼承具有傳遞性,一個類實際上繼承了它上層的全部基類的特性。繼承分單繼承和多重繼承。單繼承指一個類只允許有一個父類,即類等級為樹形構(gòu)造;多重繼承指一個類允許有多個父類。多態(tài)性:是指同樣的消息被不同的對象承受時可導(dǎo)致完全不同的行動的現(xiàn)象第三章數(shù)據(jù)庫設(shè)計根底【考點1】數(shù)據(jù)庫的根本概念數(shù)據(jù)〔Data〕是數(shù)據(jù)庫存儲的根本對象,是描繪事物的符號記錄。數(shù)據(jù)庫〔DB〕是長期儲存在計算機內(nèi)、有組織的、可共享的大量數(shù)據(jù)的集合,它具有統(tǒng)一的構(gòu)造形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享,所以數(shù)據(jù)庫技術(shù)的根本目的是解決數(shù)據(jù)共享問題。數(shù)據(jù)庫管理系統(tǒng)〔DBMS〕是數(shù)據(jù)庫的管理機構(gòu),負責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)效勞等。數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。數(shù)據(jù)庫系統(tǒng)包含數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)的功能:數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第12頁。〔1〕數(shù)據(jù)形式定義:即為數(shù)據(jù)庫構(gòu)建其數(shù)據(jù)框架;數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第12頁?!?〕數(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ù)的效勞:如拷貝、轉(zhuǎn)存、重組、性能監(jiān)測、分析等。為完成數(shù)據(jù)庫管理系統(tǒng)的功能,數(shù)據(jù)庫管理系統(tǒng)提供相應(yīng)的數(shù)據(jù)語言:數(shù)據(jù)定義語言〔DDL〕:負責(zé)數(shù)據(jù)形式定義和數(shù)據(jù)物理存取構(gòu)建。數(shù)據(jù)操縱語言〔DML〕:負責(zé)數(shù)據(jù)的操縱。數(shù)據(jù)控制語言〔DCL〕:負責(zé)數(shù)據(jù)完好性,平安性的定義與檢查以及并發(fā)控制,故障恢復(fù)等功能。數(shù)據(jù)語言按使用方式具有兩個構(gòu)造形式:交互式命令語言〔自含型和自主型語言〕和宿主型語言。數(shù)據(jù)庫管理員〔DBA〕的工作:數(shù)據(jù)庫設(shè)計,數(shù)據(jù)庫維護,改善系統(tǒng)性能,進步系統(tǒng)效率。數(shù)據(jù)庫系統(tǒng)〔DBS〕是指在計算機系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng),一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶構(gòu)成。數(shù)據(jù)庫應(yīng)用系統(tǒng)〔DBAS〕是數(shù)據(jù)庫系統(tǒng)再加上應(yīng)用軟件及應(yīng)用界面這三者所組成,詳細包括:數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫管理員、硬件平臺、軟件平臺、應(yīng)用軟件、應(yīng)用界面。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第13頁?!究键c2】數(shù)據(jù)管理的開展和根本特點數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第13頁。數(shù)據(jù)管理技術(shù)的開展經(jīng)歷了三個階段:人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段,數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)階段。人工管理階段特點:〔1〕計算機系統(tǒng)不提供對用戶數(shù)據(jù)的管理功能〔2〕數(shù)據(jù)不能共享〔3〕不單獨保存數(shù)據(jù)。文件系統(tǒng)階段的缺陷:〔1〕數(shù)據(jù)冗余〔2〕不一致性〔3〕數(shù)據(jù)聯(lián)絡(luò)弱。數(shù)據(jù)庫系統(tǒng)的開展階段:第一代的網(wǎng)狀、層次數(shù)據(jù)庫系統(tǒng);第二代的關(guān)系數(shù)據(jù)庫系統(tǒng);第三代的以面向?qū)ο竽P蜑橹饕卣鞯臄?shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫系統(tǒng)的根本特點:〔1〕數(shù)據(jù)的高集成性〔2〕數(shù)據(jù)的高共享性和低冗余性〔3〕數(shù)據(jù)高獨立性〔4〕數(shù)據(jù)統(tǒng)一管理與控制。數(shù)據(jù)獨立性是數(shù)據(jù)與程序間的互不依賴性,即數(shù)據(jù)庫中的數(shù)據(jù)獨立于應(yīng)用程序而不依賴于應(yīng)用程序。數(shù)據(jù)的獨立性一般分為物理獨立性與邏輯獨立性兩種?!?〕物理獨立性:當(dāng)數(shù)據(jù)的物理構(gòu)造〔包括存儲構(gòu)造、存取方式等〕改變時,其邏輯構(gòu)造,應(yīng)用程序都不用改變。〔2〕邏輯獨立性:數(shù)據(jù)的邏輯構(gòu)造改變了,如修改數(shù)據(jù)形式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)絡(luò)等,用戶的應(yīng)用程序可以不變?!究键c3】數(shù)據(jù)系統(tǒng)的內(nèi)部構(gòu)造體系1、數(shù)據(jù)統(tǒng)系統(tǒng)的三級形式:〔1〕概念形式,也稱邏輯形式,是對數(shù)據(jù)庫系統(tǒng)中全局數(shù)據(jù)邏輯構(gòu)造的描繪,是全體用戶公共數(shù)據(jù)視圖。一個數(shù)據(jù)庫只有一個概念形式。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第14頁。〔2〕外形式,外形式也稱子形式,它是數(shù)據(jù)庫用戶可以看見和使用的局部數(shù)據(jù)的邏輯構(gòu)造和特征的描繪,一個概念形式可以有假設(shè)干個外形式。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第14頁?!?〕內(nèi)形式,內(nèi)形式又稱物理形式,它給出了數(shù)據(jù)庫物理存儲構(gòu)造與物理存取方法。一個數(shù)據(jù)庫只有一個內(nèi)形式。內(nèi)形式處于最底層,它反映了數(shù)據(jù)在計算機物理構(gòu)造中的實際存儲形式,概念形式處于中間層,它反映了設(shè)計者的數(shù)據(jù)全局邏輯要求,而外形式處于最外層,它反映了用戶對數(shù)據(jù)的要求。2、數(shù)據(jù)庫系統(tǒng)的兩級映射〔詳見教材第55頁〕兩級映射保證了數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的獨立性?!?〕概念形式到內(nèi)形式的映射。該映射給出了概念形式中數(shù)據(jù)的全局邏輯構(gòu)造到數(shù)據(jù)的物理存儲構(gòu)造間的對應(yīng)關(guān)系;〔2〕外形式到概念形式的映射。概念形式是一個全局形式而外形式是用戶的局部形式。一個概念形式中可以定義多個外形式,而每個外形式是概念形式的一個根本視圖?!究键c4】數(shù)據(jù)模型的根本概念數(shù)據(jù)模型按不同的應(yīng)用層次分為:概念數(shù)據(jù)模型:簡稱概念模型,是一種面向客觀世界,面向用戶的模型,不涉及詳細的硬件環(huán)境和平臺也與詳細的軟件環(huán)境無關(guān)的形式,它是整個數(shù)據(jù)模型的根底。邏輯數(shù)據(jù)模型:又稱數(shù)據(jù)模型,它是一種面向數(shù)據(jù)庫的模型。分為層次模型,網(wǎng)狀模型,關(guān)系模型和面向?qū)ο竽P?,其中層次模型和網(wǎng)狀數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第15頁。模型統(tǒng)稱為非關(guān)系模型。層次模型用樹型構(gòu)造表示實體之間聯(lián)絡(luò)的模型。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第15頁。物理數(shù)據(jù)模型:又稱物理模型,它是一種面向計算機物理表示的模型。【考點5】E—R模型1、E-R模型的根本概念〔1〕實體:現(xiàn)實世界中的事物可以抽象成為實體,實體是概念世界中的根本單位,它們是客觀存在的且又能互相區(qū)別的事物。〔2〕屬性:現(xiàn)實世界中事物均有一些特性,這些特性可以用屬性來表示?!?〕碼:唯一標(biāo)識實體的屬性集稱為碼?!?〕域:屬性的取值范圍稱為該屬性的域?!?〕聯(lián)絡(luò):在現(xiàn)實世界中事物間的關(guān)聯(lián)稱為聯(lián)絡(luò)。兩個實體集間的聯(lián)絡(luò)實際上是實體集間的函數(shù)關(guān)系,這種函數(shù)關(guān)系可以有下面幾種:一對一的聯(lián)絡(luò)、一對多或多對一聯(lián)絡(luò)、多對多。2、E-R模型的的圖示法E-R模型用E-R圖來表示,E-R圖包含了表示實體集、屬性和聯(lián)絡(luò)的方法。〔1〕實體的表示:用矩形表示實體集,在矩形內(nèi)寫上該實體集的名字?!?〕屬性的表示:用橢圓形表示屬性,在橢圓形內(nèi)寫上該屬性的名稱?!?〕聯(lián)絡(luò)的表示:用菱形表示聯(lián)絡(luò),菱形內(nèi)寫上聯(lián)絡(luò)名?!究键c6】層次模型和網(wǎng)狀模型層次模型是有根的定向有序樹,是數(shù)據(jù)庫系統(tǒng)中最早出現(xiàn)的數(shù)據(jù)模型。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第16頁。網(wǎng)狀模型對應(yīng)的是有向圖。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第16頁。層次模型和網(wǎng)狀模型各自應(yīng)滿足的條件模型名稱滿足的條件層次模型〔1〕有且只有一個結(jié)點沒有雙親結(jié)點,這個結(jié)點稱為根結(jié)點〔2〕根以外的其他結(jié)點有且只有一個雙親結(jié)點網(wǎng)狀模型〔1〕允許一個以上的結(jié)點無雙親〔2〕一個結(jié)點可以有多于一個的雙親【考點7】關(guān)系模型及相關(guān)概念關(guān)系形式采用二維表來表示,由關(guān)系數(shù)據(jù)構(gòu)造,關(guān)系操縱和關(guān)系完好性約束3局部組成,在關(guān)系數(shù)據(jù)庫中,用來表示實體間聯(lián)絡(luò)的是關(guān)系。關(guān)系:一個關(guān)系對應(yīng)一張二維表。一個關(guān)系就是一個二維表,但是一個二維表不一定是一個關(guān)系。元組:表中的一行即為一個元組。屬性:表中的一列即為一個屬性,給每一個屬性起一個名稱即屬性名。分量:元組中的一個屬性值,是不可分割的根本數(shù)據(jù)項。域:屬性的取值范圍。在二維表中惟一標(biāo)識元組的最小屬性值稱為該表的鍵或碼。二維表中可能有假設(shè)干個健,它們稱為表的候選碼或候選健。從二維表的所有候選鍵選取一個作為用戶使用的鍵稱為主鍵或主碼。表A中的某屬性數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第17頁。集是某表B的鍵,那么稱該屬性值為A的外鍵或外碼。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第17頁。關(guān)系操縱:數(shù)據(jù)查詢、數(shù)據(jù)的刪除、數(shù)據(jù)插入、數(shù)據(jù)修改。關(guān)系模型允許定義三類數(shù)據(jù)約束,它們是實體完好性約束、參照完好性約束以及用戶定義的完好性約束。其中實體完好性約束、參照完好性約束必須滿足的完好性約束條件。參照完好性約束不允許關(guān)系應(yīng)用不存在的元組。實體完好性約束要求關(guān)系的主鍵中屬性值不能為空,這是數(shù)據(jù)庫完好性的最根本要求。【考點8】關(guān)系代數(shù)關(guān)系代數(shù)是一種抽象的查詢語言,關(guān)系代數(shù)的運算對象是關(guān)系,運算結(jié)果也是關(guān)系。運算對象,運算符和運算結(jié)果是運算的三大要素。集合運算符,專門的運算符,算術(shù)比較符和邏輯運算符。關(guān)系模型的根本運算:〔1〕插入〔2〕刪除(3)修改〔4〕查詢〔包括投影、選擇、笛卡爾積運算〕還有擴大運算交、除、連接及自然連接運算。關(guān)系代數(shù)的5個根本操作中并,差,交,笛卡爾積是二目運算。設(shè)關(guān)系R和S具有一樣的關(guān)系形式1、并:R和S的并是由屬于R或?qū)儆赟的所有元組構(gòu)成的集合。2、差:R和S的差是由屬于R但是不屬于S的元組構(gòu)成的集合3、笛卡爾積:設(shè)R和S的元數(shù)分別為r和s,R和S的笛卡爾積是一個〔r+s〕元的元組集合,每個元組的前r個分量來自R的一個元組,后s個分量來自S的一個元組。運算后得到的新表的元組數(shù)是R*S,屬性是r+s。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第18頁。4、交:屬于R又屬于S的元組構(gòu)成的集合。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第18頁。5、投影:一元運算,對一個關(guān)系進展垂直切割,消去某些列,并重新按排列的順序。6、選擇:一元運算,根據(jù)某些條件對關(guān)系進展程度分割。即選擇符合條件的元組。7、除:給定關(guān)系R〔X,Y〕和S〔Y,Z〕,其中X,Y,Z是屬性組,R中的Y和S中Y可以有不同的屬性名,但必須出自一樣的域集。8、連接:也稱θ連接運算,是一種二元運算,它的操作是從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組,以合并成一個大關(guān)系。連接運算包括等值連接和不等值連接。連接運算后得到的新表的屬性是運算前表中屬性相加。即多于原來關(guān)系中屬性的個數(shù)。9、自然連接:自然連接滿足的條件是〔1〕兩關(guān)系間有公共域〔2〕通過公共域的相等值進展連接?!究键c9】數(shù)據(jù)庫設(shè)計和管理數(shù)據(jù)庫設(shè)計中有兩種方法,面向數(shù)據(jù)的方法和面向過程的方法。面向數(shù)據(jù)的方法是以信息需求為主,兼顧處理需求;面向過程的方法是以處理需求為主,兼顧信息需求。由于數(shù)據(jù)在系統(tǒng)中穩(wěn)定性高,數(shù)據(jù)已成為系統(tǒng)的核心,因此面向數(shù)據(jù)的設(shè)計方法已成為主流。數(shù)據(jù)庫設(shè)計目前一般采用生命周期法,即將整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)分解成目的獨立的假設(shè)干階段。它們是:需求分析階段、概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段。一個低一級范式的關(guān)系形式,通過形式分解可以轉(zhuǎn)化為假設(shè)干個高一數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第19頁。級范式的關(guān)系形式的集合,這種過程就叫標(biāo)準化。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第19頁。概念構(gòu)造設(shè)計是將需求分析階段得到的用戶需求抽象為信息構(gòu)造即概念模型的過程,它是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵。邏輯構(gòu)造設(shè)計的任務(wù)是將E—R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過程。數(shù)據(jù)庫的物理構(gòu)造是指數(shù)據(jù)庫在物理設(shè)備上的存儲構(gòu)造和存取方法。它依賴于給定的計算機系統(tǒng)。常用的存取方法:索引方法,聚簇方法和HASH方法。數(shù)據(jù)庫管理的內(nèi)容:〔1〕數(shù)據(jù)庫的建立,它是數(shù)據(jù)庫管理的核心,包括數(shù)據(jù)形式的建立和數(shù)據(jù)加載?!?〕數(shù)據(jù)庫的重組?!?〕數(shù)據(jù)庫平安性控制?!?〕數(shù)據(jù)庫的完好性控制,數(shù)據(jù)庫的完好性是指數(shù)據(jù)的正確性和相容性。〔5〕數(shù)據(jù)庫的故障恢復(fù)?!?〕數(shù)據(jù)庫監(jiān)控2021年3月全國計算機等級考試二級筆試試卷C語言程序設(shè)計〔考試時間90分鐘,總分值100分〕一、選擇題〔〔1〕—〔10〕、〔21〕—〔40〕每題2分,〔11〕—〔20〕每題1分,共70分〕以下各題A〕、B〕、C〕、D〕四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第20頁??ㄏ鄳?yīng)位置上,答在試卷上不得分。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第20頁?!?〕以下表達中正確的選項是〔〕A〕棧是“先進先出〞的線性表B〕隊列是“先進后出〞的線性表ABCa32b01c21C〕循環(huán)隊列是非線性構(gòu)造D〕有序線性表既可以采用順序存儲構(gòu)造,也可以采用鏈式存儲構(gòu)造〔2〕支持子程序調(diào)用的數(shù)據(jù)構(gòu)造是〔〕A〕棧B〕樹C〕隊列D〕二叉樹〔3〕某二叉樹有5個度為2的結(jié)點,那么該二叉樹中的葉子結(jié)點數(shù)是〔〕A〕10B〕8C〕6D〕4〔4〕以下排序方法中,最壞情況下比較次數(shù)最少的是〔〕A〕冒泡排序B〕簡單項選擇擇排序C〕直接插入排序D〕堆排序〔5〕軟件按功能可以分為:應(yīng)用軟件、系統(tǒng)軟件和支撐軟件〔或工具軟件〕。下面屬于應(yīng)用軟件的是〔〕A〕編譯程序B〕操作系統(tǒng)C〕教務(wù)管理系統(tǒng)D〕匯編程序〔6〕下面表達中錯誤的選項是〔〕A〕軟件測試的目的是發(fā)現(xiàn)錯誤并改正錯誤B〕對被調(diào)試的程序進展“錯誤定位〞是程序調(diào)試的必要步驟C〕程序調(diào)試通常也稱為DebugD〕軟件測試應(yīng)嚴格執(zhí)行測試方數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第21頁。案,排除測試的隨意性數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第21頁。〔7〕耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標(biāo)準。以下表達中正確的選項是〔〕A〕進步耦合性降低內(nèi)聚性有利于進步模塊的獨立性B〕降低耦合性進步內(nèi)聚性有利于進步模塊的獨立性C〕耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的嚴密程度D〕內(nèi)聚性是指模塊間互相連接的嚴密程度〔8〕數(shù)據(jù)庫應(yīng)用系統(tǒng)中的核心問題是〔〕A〕數(shù)據(jù)庫設(shè)計B〕數(shù)據(jù)庫系統(tǒng)設(shè)計C〕數(shù)據(jù)庫維護D〕數(shù)據(jù)庫管理員培訓(xùn)〔9〕有兩個關(guān)系R,S如下:RSABa3b0c2由關(guān)系R通過運算得到關(guān)系S,那么所使用的運算為〔〕A〕選擇B〕投影C〕插入D〕連接〔10〕將E-R圖轉(zhuǎn)換為關(guān)系形式時,實體和聯(lián)絡(luò)都可以表示為〔〕A〕屬性 B〕鍵C〕關(guān)系D〕域〔11〕以下選項中合法的標(biāo)識數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第22頁。符是〔〕數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第22頁。A〕1_lB〕1—1C〕_11D〕l__〔12〕假設(shè)函數(shù)中有定義語句:intk;,那么〔〕A〕系統(tǒng)將自動給k賦初值0B〕這時k中的值無定義C〕系統(tǒng)將自動給k賦初值-1D〕這時k中無任何值〔13〕以下選項中,能用作數(shù)據(jù)常量的是〔〕A〕0115B〕0118C115L〔14〕設(shè)有定義:intx=2;,以下表達式中,值不為6的是〔〕A〕x*=x+lB〕x++,2*xC〕x*=(1+x)D〕2*x,x+=2〔15〕程序段:intx=12;doubley=3.141593;printf("%d%",x,y);的輸出結(jié)果是〔〕A〕123.141593B〕C〕12,3.141593D〕〔16〕假設(shè)有定義語句:doublex,y,*px,*py;執(zhí)行了px=&x;py=&y;之后,正確的輸入語句是〔〕A〕scanf("%f%f",x,y);B〕scanf("%f%f"&x,&y);C〕scanf("%lf%le",px,py);D〕scanf("%lf%If",x,y);〔17〕以下是if語句的根本形式:if(表達式)語句其中“表達式〞〔〕A〕必須是邏輯表達式B〕必須是關(guān)系表達式C〕必須是邏輯表達式或關(guān)系表達式D〕可以是任意合法的表達式〔18〕有以下程序#include<>main(){intx;數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第23頁。scanf("%d",&x);數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第23頁。if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運行時,輸入的值在哪個范圍才會有輸出結(jié)果〔〕A〕不等于10的整數(shù)B〕大于3且不等10的整數(shù)C〕大于3或等于10的整數(shù)D〕小于3的整數(shù)〔19〕有以下程序#include<>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運行后的輸出結(jié)果是〔〕A〕1,2,3B〕1,3,2C〕1,3,3D〕3,2,1〔20〕以下程序段中的變量已正確定義for(i=0;i<4;i++,i++)for(k=l;k<3;k++);printf("*");程序段的輸出結(jié)果是〔〕。A〕********B〕****C〕**D〕*〔21〕有以下程序#include<>main(){char*s={"ABC"};do{printf("%d",*s%10);s++;}while(*s);}數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第24頁。注意:字母A的ASCII碼值為65。程序運行后的輸出結(jié)果是〔〕數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第24頁。A〕5670B〕656667C〕567D〕ABC〔22〕設(shè)變量已正確定義,以下不能統(tǒng)計出一行中輸入字符個數(shù)〔不包含回車符〕的程序段是〔〕A〕n=0;while((ch=getchar())!='\n')n++;B〕n=0;while(getchar()!='\n')n++;C〕for(n=0;getchar()!='\n';n++);D〕n=0;for(ch=getchar();ch!='\n';n++);〔23〕有以下程序#include<>main(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}假設(shè)想通過鍵盤輸入,使得al的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b那么正確的輸入格式是〔以下□代表空格,<CR>代表回車〕〔〕A〕12a34b<CR>B〕12□a□34□b<CR>C〕12,a,34,b<CR>D〕12□a34□b<CR>〔24〕有以下程序#include<>intf(intx,inty){return((y-x)*x);}main()數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第25頁。{inta=3,b=4,c=5,d;數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第25頁。d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運行后的輸出結(jié)果是〔〕A〕10B〕9C〕8D〕7〔25〕有以下程序#include<>voidfun(char*s){while(*s){if(*s%2==0)printf("%c",*s);s++;}}main(){chara[]={"good"};fun(a);printf("\n");}注意:字母a的ASCII碼值為97,程序運行后的輸出結(jié)果是〔〕A〕dB〕goC〕godD〕good〔26〕有以下程序#include<>voidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結(jié)果是〔〕A〕3,5,5,3B〕3,5,3,5C〕5,3,3,5D〕5,3,5,3〔27〕有以下程序#include<>數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第26頁。voidf(int*p,int*q);數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第26頁。main(){intm=1,n=2,*r=&m;f(r,&n);printf("%d,%d",m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序運行后的輸出結(jié)果是〔〕A〕1,3B〕2,3C〕1,4D〕l,2〔28〕以下函數(shù)按每行8個輸出數(shù)組中的數(shù)據(jù)voidfun(int*w,intn){inti;for(i=0;i<n;i++){________printf("%d",w[i]);}printf("\n");}下劃線處應(yīng)填入的語句是〔〕A〕if(i/8==0)printf("\n");B〕if(i/8=0)continue;C〕if(i%8==0)printf("\n");D〕if(i%8==0)continue;〔29〕假設(shè)有以下定義intx[10],*pt=x;那么對x數(shù)組元素的正確引用是〔〕A〕*&x[10]B〕*(x+3)C〕*(pt+10)D〕pt+3〔30〕設(shè)有定義:chars[8];inti=0;,以下不能將一行〔不超過80個字符〕帶有空格的字符串正確讀入的語句或語句組是〔〕A〕gets(s);B〕while((s[i++]=getchar())!='\n');s[i]='\0';數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第27頁。C〕scanf("%s",s);數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第27頁。D〕do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';〔31〕有以下程序#include<>main(){char*a[]={"abcd","ef","gh","ijk"};inti;for(i=0;i<4;i++)printf("%c",*a[i]);}程序運行后的輸出結(jié)果是〔〕A〕aegi B〕dfhkC〕abcdD〕abcdefghijk〔32〕以下選項中正確的語句組是〔〕A〕chars[];s="BOOK!";B〕char*s;s={"BOOK!"};C〕chars[10];s="BOOK!";D〕char*s;s="BOOK!";〔33〕有以下程序#include<>intfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是〔〕A〕3 B〕6C〕8 D〕12〔34〕設(shè)函數(shù)中有整型變量n,為保證其在未賦初值的情況下初值為0,應(yīng)選擇的存儲類別是〔〕A〕autoB〕registerC〕staticD〕auto或register數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第28頁?!?5〕有以下程序數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第28頁。#include<>intb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序運行后的輸出結(jié)果是〔〕A〕1012B〕810C〕1028D〕1016〔36〕有以下程序#include<>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1;b=2;printf("%\n",S(a+b));}程序運行后的輸出結(jié)果是〔〕A〕14.0B〕C〕7.5D〕程序有錯無輸出結(jié)果〔37〕有以下程序#include<>structord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;printf("%d,",++p->x);printf("%d,",++p->y);}程序的運行結(jié)果是〔〕A〕1,2 B〕2,3 C〕3,4 D〕4,l〔38〕設(shè)有宏定義:#defineIsDIV(k,n)((k%n==1)?l:0)且變量m已正確定義并賦值,數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第29頁。那么宏調(diào)用:IsDIV(m,5)&&IsDIV(m,7)為真時所要表達的是〔〕數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第29頁。A〕判斷m是否能被5或者7整除B〕判斷m是否能被5和7整除C〕判斷m被5或者7整除是否余l(xiāng)D〕判斷m被5和7整除是否都余1〔39〕有以下程序#include<>main(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}程序運行后的輸出結(jié)果是〔〕A〕2l B〕11 C〕6D〕l〔40〕有以下程序#include<>main(){FILE*f;f=fopen("filea.txt","w");fprintf(f,"abc");fclose(f);}假設(shè)文本文件filea.txt中原有內(nèi)容為:hello,那么〔〕A〕helloabc B〕abcloC〕abc D〕abchello二、填空題〔每空2分,共30分〕請將每一個空的正確答案寫在答題卡【1】~【15】序號的橫線上,答在試卷上不得分?!?〕假設(shè)用一個長度為50的數(shù)組〔數(shù)組元素的下標(biāo)從0到49〕作為棧的存儲空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,假設(shè)bottom=49,top=30〔數(shù)組下標(biāo)〕,那么棧中具有_____個元數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第30頁。素。數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)與算法全文共33頁,當(dāng)前為第30頁。〔2〕軟件測試可分為白盒測試和黑盒測試。根本途徑測試屬于_____測試?!?〕符合構(gòu)造化原那么的三種根本控制構(gòu)造是:選擇構(gòu)造、循環(huán)構(gòu)造和_____。〔4〕數(shù)據(jù)庫系統(tǒng)的核心是_____。〔5〕在E-R圖中,圖形包括矩形框、菱形框、橢圓框。其中表示實體聯(lián)絡(luò)的是_____框。〔6〕表達式(int)((double)(5/2)+2.5)的值是_____。〔7〕假設(shè)變量x、y已定義為int類型且X的值為99,y的值為9,請將輸出語句printf(_____,x/y);補充完好,使其輸出的計算結(jié)果形式為:x/y=11。〔8〕有以下程序#include<>main(){charc1,c2;scanf("%c",&c1);w

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論