




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、全國計算機等級考試二級c語言公共基礎知識總結第一章 數據結構與算法1.1 算法算法:是指解題方案的準確而完整的描述。算法不等于程序,也不等計算機方法,程序的編制不可能優(yōu)于算法的設計。算法的基本特征:是一組嚴謹地定義運算順序的規(guī)則,每一個規(guī)則都是有效的,是明確的,此順序將在有限的次數下終止。特征包括:(1)可行性;(2)確定性,算法中每一步驟都必須有明確定義,不充許有模棱兩可的解釋,不允許有多義性;(3)有窮性,算法必須能在有限的時間內做完,即能在執(zhí)行有限個步驟后終止,包括合理的執(zhí)行時間的含義;(4)擁有足夠的情報。算法的基本要素:一是對數據對象的運算與操作;二是算法的控制結構。指令系統(tǒng):一個計
2、算機系統(tǒng)能執(zhí)行的所有指令的集合?;具\算包括:算術運算、邏輯運算、關系運算、數據傳輸。算法的控制結構:順序結構、選擇結構、循環(huán)結構。算法基本設計方法:列舉法、歸納法、遞推、遞歸、減斗遞推技術、回溯法。算法復雜度:算法時間復雜度與算法空間復雜度。算法時間復雜度是指執(zhí)行算法所需要的計算工作量。算法空間復雜度是指執(zhí)行這個算法所需要的內存空間。1.2 數據結構的基本基本概念數據結構研究的三個方面:(1)數據集合中各數據元素之間所固有的邏輯關系,即數據的邏輯結構;(2)在對數據進行處理時,各數據元素在計算機中的存儲關系,即數據的存儲結構;(3)對各種數據結構進行的運算。數據結構是指相互有關聯(lián)的數據元素的
3、集合。數據的邏輯結構包含:(1)表示數據元素的信息;(2)表示各數據元素之間的前后件關系。數據的存儲結構有順序、鏈接、索引等。線性結構條件:(1)有且只有一個根結點;(2)每一個結點最多有一個前件,也最多有一個后件。非線性結構:不滿足線性結構條件的數據結構。13 線性表及其順序存儲結構線性表是由一組數據元素構成,數據元素的位置只取決于自己的序號,元素之間的相對位置是線性的。在復雜線性表中,由若干項數據元素組成的數據元素稱為記錄,而由多個記錄構成的線性表又稱為文件。非空線性表的結構特征:(1)且只有一個根結點a1,它無前件;(2)有且只有一個終端結點an,它無后件;(3)除根結點與終端結點外,其
4、他所有結點有且只有一個前件,也有且只有一個后件。結點個數n稱為線性表的長度,當n=0時,稱為空表。線性表的順序存儲結構具有以下兩個基本特點:(1)線性表中所有元素的所占的存儲空間是連續(xù)的;(2)線性表中各數據元素在存儲空間中是按邏輯順序依次存放的。ai的存儲地址為:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)為第一個元素的地址,k代表每個元素占的字節(jié)數。順序表的運算:插入、刪除。(詳見14-16頁)14 棧與隊列棧是限定在一端進行插入與刪除的線性表,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧按照“先進后出”(FILO)或“后進先出”(LIFO)組織數據
5、,棧具有記憶作用。用top表示棧頂位置,用bottom表示棧底。棧的基本運算:(1)插入元素稱為入棧運算;(2)刪除元素稱為退棧運算;(3)讀棧頂元素是將棧頂元素賦給一個指定的變量,此時指針無變化。隊列是指允許在一端(隊尾)進入插入,而在另一端(隊頭)進行刪除的線性表。Rear指針指向隊尾,front指針指向隊頭。隊列是“先進行出”(FIFO)或“后進后出”(LILO)的線性表。隊列運算包括(1)入隊運算:從隊尾插入一個元素;(2)退隊運算:從隊頭刪除一個元素。循環(huán)隊列:s=0表示隊列空,s=1且front=rear表示隊列滿15 線性鏈表數據結構中的每一個結點對應于一個存儲單元,這種存儲單元
6、稱為存儲結點,簡稱結點。結點由兩部分組成:(1)用于存儲數據元素值,稱為數據域;(2)用于存放指針,稱為指針域,用于指向前一個或后一個結點。在鏈式存儲結構中,存儲數據結構的存儲空間可以不連續(xù),各數據結點的存儲順序與數據元素之間的邏輯關系可以不一致,而數據元素之間的邏輯關系是由指針域來確定的。鏈式存儲方式即可用于表示線性結構,也可用于表示非線性結構。線性鏈表,HEAD稱為頭指針,HEAD=NULL(或0)稱為空表,如果是兩指針:左指針(Llink)指向前件結點,右指針(Rlink)指向后件結點。線性鏈表的基本運算:查找、插入、刪除。16 樹與二叉樹樹是一種簡單的非線性結構,所有元素之間具有明顯的
7、層次特性。在樹結構中,每一個結點只有一個前件,稱為父結點,沒有前件的結點只有一個,稱為樹的根結點,簡稱樹的根。每一個結點可以有多個后件,稱為該結點的子結點。沒有后件的結點稱為葉子結點。在樹結構中,一個結點所擁有的后件的個數稱為該結點的度,所有結點中最大的度稱為樹的度。樹的最大層次稱為樹的深度。二叉樹的特點:(1)非空二叉樹只有一個根結點;(2)每一個結點最多有兩棵子樹,且分別稱為該結點的左子樹與右子樹。二叉樹的基本性質:(1)在二叉樹的第k層上,最多有2k-1(k1)個結點;(2)深度為m的二叉樹最多有2m-1個結點;(3)度為0的結點(即葉子結點)總是比度為2的結點多一個;(4)具有n個結點
8、的二叉樹,其深度至少為log2n+1,其中l(wèi)og2n表示取log2n的整數部分;(5)具有n個結點的完全二叉樹的深度為log2n+1;(6)設完全二叉樹共有n個結點。如果從根結點開始,按層序(每一層從左到右)用自然數1,2,.n給結點進行編號(k=1,2.n),有以下結論:若k=1,則該結點為根結點,它沒有父結點;若k1,則該結點的父結點編號為INT(k/2);若2kn,則編號為k的結點的左子結點編號為2k;否則該結點無左子結點(也無右子結點);若2k+1n,則編號為k的結點的右子結點編號為2k+1;否則該結點無右子結點。滿二叉樹是指除最后一層外,每一層上的所有結點有兩個子結點,則k層上有2k
9、-1個結點深度為m的滿二叉樹有2m-1個結點。完全二叉樹是指除最后一層外,每一層上的結點數均達到最大值,在最后一層上只缺少右邊的若干結點。二叉樹存儲結構采用鏈式存儲結構,對于滿二叉樹與完全二叉樹可以按層序進行順序存儲。二叉樹的遍歷:(1)前序遍歷(DLR),首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹;(2)中序遍歷(LDR),首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹;(3)后序遍歷(LRD)首先遍歷左子樹,然后訪問遍歷右子樹,最后訪問根結點。17 查找技術順序查找的使用情況:(1)線性表為無序表;(2)表采用鏈式存儲結構。二分法查找只適用于順序存儲的有序表,對于長度為n的有序線性表,
10、最壞情況只需比較log2n次。18 排序技術排序是指將一個無序序列整理成按值非遞減順序排列的有序序列。交換類排序法:(1)冒泡排序法,需要比較的次數為n(n-1)/2;(2)快速排序法。插入類排序法:(1)簡單插入排序法,最壞情況需要n(n-1)/2次比較;(2)希爾排序法,最壞情況需要O(n1.5)次比較。選擇類排序法:(1)簡單選擇排序法, 最壞情況需要n(n-1)/2次比較;(2)堆排序法,最壞情況需要O(nlog2n)次比較。第二章程序設計基礎21 程序設計設計方法與風格如何形成良好的程序設計風格1、源程序文檔化; 2、數據說明的方法;3、語句的結構; 4、輸入與輸出。注釋分序言性注釋
11、與功能性注釋,語句結構清晰第一、效率第二。22 結構化程序設計結構化程序設計方法的四條原則是:1. 自頂向下;2. 逐步求精;3.模塊化;4.限制使用goto語句。結構化程序的基本結構與特點:(1)順序結構:一種簡單的程序設計,最基本、最常用的結構;(2)選擇結構:又稱分支結構,包括簡單選擇與多分支選擇結構,可根據條件,判斷應該選擇哪一條分支來執(zhí)行相應的語句序列;(3)循環(huán)結構:可根據給定條件,判斷是否需要重復執(zhí)行某一相同程序段。23 面向對象的程序設計面向對象的程序設計:以60年代末挪威奧斯陸大學與挪威計算機中心研制的SIMULA語言為標志。面向對象方法的優(yōu)點:(1)與人類習慣的思維方法一致
12、;(2)穩(wěn)定性好;(3)可重用性好;(4)易于開發(fā)大型軟件產品;(5)可維護性好。對象是面向對象方法中最基本的概念,可以用來表示客觀世界中的任何實體,對象是實體的抽象。面向對象的程序設計方法中的對象是系統(tǒng)中用來描述客觀事物的一個實體,是構成系統(tǒng)的一個基本單位,由一組表示其靜態(tài)特征的屬性與它可執(zhí)行的一組操作組成。屬性即對象所包含的信息,操作描述了對象執(zhí)行的功能,操作也稱為方法或服務。對象的基本特點:(1)標識惟一性;(2)分類性;(3)多態(tài)性;(4)封裝性;(5)模塊獨立性好。類是指具有共同屬性、共同方法的對象的集合。所以類是對象的抽象,對象是對應類的一個實例。消息是一個實例與另一個實例之間傳遞
13、的信息。消息的組成包括(1)接收消息的對象的名稱;(2)消息標識符,也稱消息名;(3)零個或多個參數。繼承是指能夠直接獲得已有的性質與特征,而不必重復定義他們。繼承分單繼承與多重繼承。單繼承指一個類只允許有一個父類,多重繼承指一個類允許有多個父類。多態(tài)性是指同樣的消息被不同的對象接受時可導致完全不同的行動的現象全國計算機等級考試二級C語言公共基礎知識復習資料B第三章軟件工程基礎31 軟件工程基本概念計算機軟件是包括程序、數據及相關文檔的完整集合。軟件的特點包括:(1)軟件是一種邏輯實體;(2)軟件的生產與硬件不同,它沒有明顯的制作過程;(3)軟件在運行、使用期間不存在磨損、老化問題;(4)軟件
14、的開發(fā)、運行對計算機系統(tǒng)具有依賴性,受計算機系統(tǒng)的限制,這導致了軟件移植的問題;(5)軟件復雜性高,成本昂貴;(6)軟件開發(fā)涉及諸多的社會因素。軟件按功能分為應用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件)。軟件危機主要表現在成本、質量、生產率等問題。軟件工程是應用于計算機軟件的定義、開發(fā)與維護的一整套方法、工具、文檔、實踐標準與工序。軟件工程包括3個要素:方法、工具與過程。軟件工程過程是把軟件轉化為輸出的一組彼此相關的資源與活動,包含4種基本活動:(1)P軟件規(guī)格說明;(2)D軟件開發(fā);(3)C軟件確認;(4)A軟件演進。軟件周期:軟件產品從提出、實現、使用維護到停止使用退役的過程。軟件生命周期三
15、個階段:軟件定義、軟件開發(fā)、運行維護,主要活動階段是:(1)可行性研究與計劃制定;(2)需求分析;(3)軟件設計;(4)軟件實現;(5)軟件測試;(6)運行與維護。軟件工程的目標與與原則:目標:在給定成本、進度的前提下,開發(fā)出具有有效性、可靠性、可理解性、可維護性、可重用性、可適應性、可移植性、可追蹤性與可互操作性且滿足用戶需求的產品。基本目標:付出較低的開發(fā)成本;達到要求的軟件功能;取得較好的軟件性能;開發(fā)軟件易于移植;需要較低的費用;能按時完成開發(fā),及時交付使用。基本原則:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性與可驗證性。軟件工程的理論與技術性研究的內容主要包括:軟件開發(fā)技
16、術與軟件工程管理。軟件開發(fā)技術包括:軟件開發(fā)方法學、開發(fā)過程、開發(fā)工具與軟件工程環(huán)境。軟件工程管理包括:軟件管理學、軟件工程經濟學、軟件心理學等內容。軟件管理學包括人員組織、進度安排、質量保證、配置管理、項目計劃等。軟件工程原則包括抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性與可驗證性。32 結構化分析方法結構化方法的核心與基礎是結構化程序設計理論。需求分析方法有(1)結構化需求分析方法; (2)面向對象的分析的方法。從需求分析建立的模型的特性來分:靜態(tài)分析與動態(tài)分析。結構化分析方法的實質:著眼于數據流,自頂向下,逐層分解,建立系統(tǒng)的處理流程,以數據流圖與數據字典為主要工具,建立系統(tǒng)
17、的邏輯模型。結構化分析的常用工具(1)數據流圖; (2)數據字典; (3)判定樹; (4)判定表。數據流圖:描述數據處理過程的工具,是需求理解的邏輯模型的圖形表示,它直接支持系統(tǒng)功能建模。數據字典:對所有與系統(tǒng)相關的數據元素的一個有組織的列表,以及精確的、嚴格的定義,使得用戶與系統(tǒng)分析員對于輸入、輸出、存儲成分與中間計算結果有共同的理解。判定樹:從問題定義的文字描述中分清哪些是判定的條件,哪些是判定的結論,根據描述材料中的連接詞找出判定條件之間的從屬關系、并列關系、選擇關系,根據它們構造判定樹。判定表:與判定樹相似,當數據流圖中的加工要依賴于多個邏輯條件的取值,即完成該加工的一組動作是由于某一
18、組條件取值的組合而引發(fā)的,使用判定表描述比較適宜。數據字典是結構化分析的核心。軟件需求規(guī)格說明書的特點:(1)正確性;(2)無岐義性;(3)完整性;(4)可驗證性;(5)一致性;(6)可理解性;(7)可追蹤性。33 結構化設計方法軟件設計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預定的任務,軟件設計是確定系統(tǒng)的物理模型。軟件設計是開發(fā)階段最重要的步驟,是將需求準確地轉化為完整的軟件產品或系統(tǒng)的唯一途徑。從技術觀點來看,軟件設計包括軟件結構設計、數據設計、接口設計、過程設計。結構設計:定義軟件系統(tǒng)各主要部件之間的關系。數據設計:將分析時創(chuàng)建的模型轉化為數據結構的定義。接口設計:描述軟件
19、內部、軟件與協(xié)作系統(tǒng)之間以及軟件與人之間如何通信。過程設計:把系統(tǒng)結構部件轉換成軟件的過程描述。從工程管理角度來看:概要設計與詳細設計。軟件設計的一般過程:軟件設計是一個迭代的過程;先進行高層次的結構設計;后進行低層次的過程設計;穿插進行數據設計與接口設計。衡量軟件模塊獨立性使用耦合性與內聚性兩個定性的度量標準。在程序結構中各模塊的內聚性越強,則耦合性越弱。優(yōu)秀軟件應高內聚,低耦合。軟件概要設計的基本任務是:(1)設計軟件系統(tǒng)結構;(2)數據結構及數據庫設計;(3)編寫概要設計文檔;(4)概要設計文檔評審。模塊用一個矩形表示,箭頭表示模塊間的調用關系。在結構圖中還可以用帶注釋的箭頭表示模塊調用
20、過程中來回傳遞的信息。還可用帶實心圓的箭頭表示傳遞的是控制信息,空心圓箭心表示傳遞的是數據。結構圖的基本形式:基本形式、順序形式、重復形式、選擇形式。結構圖有四種模塊類型:傳入模塊、傳出模塊、變換模塊與協(xié)調模塊。典型的數據流類型有兩種:變換型與事務型。變換型系統(tǒng)結構圖由輸入、中心變換、輸出三部分組成。事務型數據流的特點是:接受一項事務,根據事務處理的特點與性質,選擇分派一個適當的處理單元,然后給出結果。詳細設計:是為軟件結構圖中的每一個模塊確定實現算法與局部數據結構,用某種選定的表達工具表示算法與數據結構的細節(jié)。常見的過程設計工具有:圖形工具(程序流程圖)、表格工具(判定表)、語言工具(PDL
21、)。34 軟件測試軟件測試定義:使用人工或自動手段來運行或測定某個系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或是弄清預期結果與實際結果之間的差別。軟件測試的目的:發(fā)現錯誤而執(zhí)行程序的過程。軟件測試方法:靜態(tài)測試與動態(tài)測試。靜態(tài)測試包括代碼檢查、靜態(tài)結構分析、代碼質量度量。不實際運行軟件,主要通過人工進行。動態(tài)測試:是基本計算機的測試,主要包括白盒測試方法與黑盒測試方法。白盒測試:在程序內部進行,主要用于完成軟件內部CAO作的驗證。主要方法有邏輯覆蓋、基本基路徑測試。黑盒測試:主要診斷功能不對或遺漏、界面錯誤、數據結構或外部數據庫訪問錯誤、性能錯誤、初始化與終止條件錯,用于軟件確認。主要方法
22、有等價類劃分法、邊界值分析法、錯誤推測法、因果圖等。軟件測試過程一般按4個步驟進行:單元測試、集成測試、驗收測試(確認測試)與系統(tǒng)測試。35 程序的調試程序調試的任務是診斷與改正程序中的錯誤,主要在開發(fā)階段進行。程序調試的基本步驟:(1)錯誤定位;(2)修改設計與代碼,以排除錯誤;(3)進行回歸測試,防止引進新的錯誤。軟件調試可分表靜態(tài)調試與動態(tài)調試。靜態(tài)調試主要是指通過人的思維來分析源程序代碼與排錯,是主要的設計手段,而動態(tài)調試是輔助靜態(tài)調試。主要調試方法有:(1)強行排錯法;(2)回溯法;(3)原因排除法。第四章 數據庫設計基礎41 數據庫系統(tǒng)的基本概念數據:實際上就是描述事物的符號記錄。
23、數據的特點:有一定的結構,有型與值之分,如整型、實型、字符型等。而數據的值給出了符合定型的值,如整型值15。數據庫:是數據的集合,具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質內,是多種應用數據的集成,并可被各個應用程序共享。數據庫存放數據是按數據所提供的數據模式存放的,具有集成與共享的特點。數據庫管理系統(tǒng):一種系統(tǒng)軟件,負責數據庫中的數據組織、數據操縱、數據維護、控制及保護與數據服務等,是數據庫的核心。數據庫管理系統(tǒng)功能:(1)數據模式定義:即為數據庫構建其數據框架;(2)數據存取的物理構建:為數據模式的物理存取與構建提供有效的存取方法與手段;(3)數據操縱:為用戶使用數據庫的數據提供方便,如查詢
24、、插入、修改、刪除等以及簡單的算術運算及統(tǒng)計;(4)數據的完整性、安生性定義與檢查;(5)數據庫的并發(fā)控制與故障恢復;(6)數據的服務:如拷貝、轉存、重組、性能監(jiān)測、分析等。為完成以上六個功能,數據庫管理系統(tǒng)提供以下的數據語言:(1)數據定義語言:負責數據的模式定義與數據的物理存取構建;(2)數據操縱語言:負責數據的操縱,如查詢與增、刪、改等;(3)數據控制語言:負責數據完整性、安全性的定義與檢查以及并發(fā)控制、故障恢復等。數據語言按其使用方式具有兩種結構形式:交互式命令(又稱自含型或自主型語言)宿主型語言(一般可嵌入某些宿主語言中)。數據庫管理員:對數據庫進行規(guī)劃、設計、維護、監(jiān)視等的專業(yè)管理
25、人員。數據庫系統(tǒng):由數據庫(數據)、數據庫管理系統(tǒng)(軟件)、數據庫管理員(人員)、硬件平臺(硬件)、軟件平臺(軟件)五個部分構成的運行實體。數據庫應用系統(tǒng):由數據庫系統(tǒng)、應用軟件及應用界面三者組成。文件系統(tǒng)階段:提供了簡單的數據共享與數據管理能力,但是它無法提供完整的、統(tǒng)一的、管理與數據共享的能力。層次數據庫與網狀數據庫系統(tǒng)階段:為統(tǒng)一與共享數據提供了有力支撐。關系數據庫系統(tǒng)階段數據庫系統(tǒng)的基本特點:數據的集成性、數據的高共享性與低冗余性、數據獨立性(物理獨立性與邏輯獨立性)、數據統(tǒng)一管理與控制。數據庫系統(tǒng)的三級模式:(1)概念模式:數據庫系統(tǒng)中全局數據邏輯結構的描述,全體用戶公共數據視圖;(
26、2)外模式:也稱子模式與用戶模式。是用戶的數據視圖,也就是用戶所見到的數據模式;(3)內模式:又稱物理模式,它給出了數據庫物理存儲結構與物理存取方法。數據庫系統(tǒng)的兩級映射:(1)概念模式到內模式的映射;(2)外模式到概念模式的映射。4.2 數據模型數據模型的概念:是數據特征的抽象,從抽象層次上描述了系統(tǒng)的靜態(tài)特征、動態(tài)行為與約束條件,為數據庫系統(tǒng)的信息表與操作提供一個抽象的框架。描述了數據結構、數據操作及數據約束。E-R模型的基本概念(1)實體:現實世界中的事物;(2)屬性:事物的特性;(3)聯(lián)系:現實世界中事物間的關系。實體集的關系有一對一、一對多、多對多的聯(lián)系。E-R模型三個基本概念之間的
27、聯(lián)接關系:實體是概念世界中的基本單位,屬性有屬性域,每個實體可取屬性域內的值。一個實體的所有屬性值叫元組。E-R模型的圖示法:(1)實體集表示法; (2)屬性表法; (3)聯(lián)系表示法。層次模型的基本結構是樹形結構,具有以下特點:(1)每棵樹有且僅有一個無雙親結點,稱為根;(2)樹中除根外所有結點有且僅有一個雙親。從圖論上看,網狀模型是一個不加任何條件限制的無向圖。關系模型采用二維表來表示,簡稱表,由表框架及表的元組組成。一個二維表就是一個關系。在二維表中凡能唯一標識元組的最小屬性稱為鍵或碼。從所有侯選健中選取一個作為用戶使用的鍵稱主鍵。表A中的某屬性是某表B的鍵,則稱該屬性集為A的外鍵或外碼。
28、關系中的數據約束:(1)實體完整性約束:約束關系的主鍵中屬性值不能為空值;(2)參照完全性約束:是關系之間的基本約束;(3)用戶定義的完整性約束:它反映了具體應用中數據的語義要求。4.3關系代數關系數據庫系統(tǒng)的特點之一是它建立在數據理論的基礎之上,有很多數據理論可以表示關系模型的數據操作,其中最為著名的是關系代數與關系演算。關系模型的基本運算:(1)插入 (2)刪除 (3)修改 (4)查詢(包括投影、選擇、笛卡爾積運算)4.4 數據庫設計與管理數據庫設計是數據應用的核心。數據庫設計的兩種方法:(1)面向數據:以信息需求為主,兼顧處理需求;(2)面向過程:以處理需求為主,兼顧信息需求。數據庫的生
29、命周期:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。需求分析常用結構析方法與面向對象的方法。結構化分析(簡稱SA)方法用自頂向下、逐層分解的方式分析系統(tǒng)。用數據流圖表達數據與處理過程的關系。對數據庫設計來講,數據字典是進行詳細的數據收集與數據分析所獲得的主要結果。數據字典是各類數據描述的集合,包括5個部分:數據項、數據結構、數據流(可以是數據項,也可以是數據結構)、數據存儲、處理過程。數據庫概念設計的目的是分析數據內在語義關系。設計的方法有兩種(1)集中式模式設計法(適用于小型或并不復雜的單位或部門);(2)視圖集成設計法。設計方法:E
30、-R模型與視圖集成。視圖設計一般有三種設計次序:自頂向下、由底向上、由內向外。視圖集成的幾種沖突:命名沖突、概念沖突、域沖突、約束沖突。關系視圖設計:關系視圖的設計又稱外模式設計。關系視圖的主要作用:(1)提供數據邏輯獨立性;(2)能適應用戶對數據的不同需求;(3)有一定數據保密功能。數據庫的物理設計主要目標是對數據內部物理結構作調整并選擇合理的存取路徑,以提高數據庫訪問速度有效利用存儲空間。一般RDBMS中留給用戶參與物理設計的內容大致有索引設計、集成簇設計與分區(qū)設計。數據庫管理的內容:(1)數據庫的建立;(2)數據庫的調整;(3)數據庫的重組;(4)數據庫安全性與完整性控制;(5)數據庫的
31、故障恢復;(6)數據庫監(jiān)控。2010年二級C語言南開100題(全)1: 第1題 m個人的成績存放在score數組中,請編寫函數fun,它的功能是:將低于平均分的人作為函數值返回,將低于平均分的分數放在below所指定的函數中。 答案: int fun(int score,int m,int below)int i,k=0,aver=0;for(i=0;im;i+)aver+=scorei;aver/=m;for(i=0;im;i+)if(scoreiaver)belowk=scorei;k+;return k; 2: 第2題 請編寫函數fun,它的功能是:求出1到100之內能北7或者11整除,
32、但不能同時北7與11整除的所有證書,并將他們放在a所指的數組中,通過n返回這些數的個數。 答案:void fun(int *a, int *n)int i,j=0;for(i=2;i1000;i+)if (i%7=0 | i%11=0) & i%77!=0)aj+=i;*n=j;3: 第3題 請編寫函數void fun(int x,int pp,int *n),它的功能是:求出能整除x且不是偶數的各整數,并按從小到大的順序放在pp所指的數組中,這些除數的個數通過形參n返回。 答案:void fun(int x, int pp , int *n)int i=1,j=0;k=0,*t=pp;for
33、(i=0;i=x;i+)if(i%2!=0)tj=I;j+;for(i=0;ij;i+)if(x%ti=0)ppk=ti;k+;*n=k;4: 第4題 請編寫一個函數void fun(char *tt,int pp),統(tǒng)計在tt字符中a到z26各字母各自出現的次數,并依次放在pp所指的數組中。 答案:void fun(char *tt, int pp)int i;for (i=0;i26;i+)ppi=0;while (*tt)switch (*tt)case a: pp0+;break;case b: pp1+;break;case c: pp2+;break;case d: pp3+;br
34、eak;case e: pp4+;break;case f: pp5+;break;case g: pp6+;break;case h: pp7+;break;case i: pp8+;break;case j: pp9+;break;case k: pp10+;break;case l: pp11+;break;case m: pp12+;break;case n: pp12+;break;case o: pp14+;break;case p: pp15+;break;case q: pp16+;break;case r: pp17+;break;case s: pp18+;break;ca
35、se t: pp19+;break;case u: pp20+;break;case v: pp21+;break;case w: pp22+;break;case x: pp23+;break;case y: pp24+;break;case z: pp25+;break;tt+;5: 第5題 請編寫一個函數void fun(int m,int k,int xx),該函數的功能是:將大于整數m且緊靠m的k各素數存入xx所指的數組中。 答案:void fun(int m, int k, int xx)int g=0,I,j,flag=1;for(i=m+1;im*m;i+)for(j=0;jI
36、;j+)if(i%j!=0)flag=1;elseflag=0;break;if (flag=1 & j=i)if (k=0)xxg+=i;k-;elsebreak;6: 第6題 請編寫一個函數void fun(char a,char,int n),其功能是:刪除以各字符串中指定下標的字符。其中,a指向原字符串,刪除后的字符串存放在b所指的數組中,n中存放指定的下標。 答案:void fun(char a,char b, int n)int I,j=0;for (i=0;iLEN;i+)if (i!=n)bj=ai;j+;bj=0;7: 第7題 請編寫一個函數int fun(int *s,in
37、t t,int *k),用來求除數組的最大元素在數組中的下標并存放在k所指的儲存單元中。 答案:void fun (int *s, int t, int *k)int I, max;max=s0;for(i=0;it;i+)if (simax)max=si;*k=I;8: 第8題 編寫函數fun,功能是:根據以下攻勢計算s,計算結果作為函數值返回;n通過形參傳入。S=1+1/(1+2)+1/(1+2+3)+.+1/(1+2+3+4+n) 答案:float fun (int n)int i;float s=1.0, t=1.0;for(i=2;i=n;i+)t=t+i;s=s+1/t;retur
38、n s;9: 第9題 編寫一個函數fun,它的功能是:根據以下公式求p的值,結果由函數值帶回。M與n為兩個正整數,且要求mn。 p=m!/n!(m-n)! 答案:float fun(int m, int n)float p,t=1.0;int I;for (i=1;i=m;i+)t=t*I;p=t;for(t=1.0,i=1;i=n;i+)t=t*I;p=p/t;for(t=1.0,i=1;i=m-n;i+)t=t*I;p=p/t;return p;10: 第10題 編寫函數fun,它的功能是:利用以下的簡單迭代方法求方程cos(x)-x=0的一個實根。迭代步驟如下:(1)取x1初值為0.0;
39、 (2)x0=x1,把x1的值賦各x0;(3)x1=cos(x0),求出一個新的x1;(4)若x0-x1的絕對值小于0.000001,則執(zhí)行步驟(5),否則執(zhí)行步驟(2);(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數值返回。程序將輸出root=0.739085。 答案:float fun()float x1=0.0,x0;do x0=x1;x1=cos(x0);while(fabs(x0-x1)1e-6);return x1;11: 第11題 下列程序定義了nn的二維數組,并在主函數中自動賦值。請編寫函數 fun(int an),該函數的功能是:使數組左下半三角元素中的值全部
40、置成0。 答案:int fun(int aN)int I,j;for(i=0;iN;i+)for(j=0;j=I;j+)aij=0;12: 第12題 下列程序定義了nn的二維數組,并在主函數中賦值。請編寫函數fun,函數的功能使求出數組周邊元素的平均值并作為函數值返回給主函數中的s。 答案:double fun(int wN)int I,j,k=0;double s=0.0;for(j=0;jN;j+)s+=w0j;k+;for(j=0;jN;j+)s+=wN-1j;k+;for(i=1;i=N-2;i+)s+=wi0;k+;for(i=1;i=N-2;i+)s+=wiN-1;k+;retur
41、n s/=k;13: 第13題 請編寫一個函數void fun(int ttmn,int ppn),tt指向一個m行n列的二維函數組,求出二維函數組每列中最小元素,并依次放入pp所指定一維數組中。二維數組中的數已在主函數中賦予。 答案:void fun(int ttMN, int ppN)int I,j,min;for(j=0;jN;j+)min=tt0j;for(i=0;iM;i+)if (ttijmin)min=ttij;ppj=min;14: 第14題 請別寫函數fun,函數的功能使求出二維數組周邊元素之與,作為函數值返回。二維數組中的值在主函數中賦予。 答案:int fun(int a
42、MN)int I,j,s=0;for(j=0;jN;j+)s+=a0j;s+=aM-1j;for(i=1;i=M-2;i+)s+=ai0;s+=aiN-1;return s;15: 第15題 請編寫一個函數unsigned fun(unsigned w),w使一個大于10的無符號整數,若w使n(n2)位的整數,則函數求出w后n1位的數作為函數值返回。 答案:unsigned fun(unsigned w)unsigned t,s=0,s1=1,p=0;t=w;while(t10)if(t/10)p=t%10;s=s+p*s1;s1=s1*10;t=t/10;return s;16: 第16題
43、請編寫一個函數float fun(double h),函數的功能使對變量h中的值保留2位小樹,并對第三位進行四舍五入(規(guī)定h中的值位正數)。 答案:float fun(float h)long t;float s;h=h*1000;t=(h+5)/10;s=(float)t/100.0;return s;17: 第17題 請編寫一個函數fun(char *s),該函數的功能使把字符串中的內容擬置。 答案:void fun(char *s)char ch;int I,m,n;i=0;m=n=strlen(s)-1;while(i(n+1)/2)ch=si;si=sm;sm=ch;i+;m-;18
44、: 第18題 編寫程序,實現矩陣(3行3列)的轉置(即行列互換)。 答案:void fun(int array33)int I,j,temp;for(i=0;i3;i+)for(j=0;jI,j+)temp=arrayij;arrayij=arrayji;arrayji=temp;19: 第19題 編寫函數fun,該函數的功能是:從字符中刪除指定的字符,同一字母的大、小寫按不同字符處理。 答案:void fun(char s,int c)int i=0;char *p;p=s;while(*p)if(*p!=c)si=*p;i+;p+;si=0;20: 第20題 編寫函數int fun(int
45、 lim,int aamax),該函數的功能是求出小于或等于lim的所有素數并放在aa數組中,該函數返回所求的素數的個數。 答案:int fun(int lim, int aaMAX)int k=0,I,j;for(i=lim;i1;i-)for(j=2;ji;j+)if(i%j=0)break;elsecontinue;if(j=i)aak=i;k+;return k+;21: 第21題 請編寫函數fun,對長度位7個字符的字符串,除首尾字符外,將其余5個字符按ascii碼降序排列。 答案:void fun(char *s,int num)char t;int I,j;for(i=1;inu
46、m-2;i+)for(j=i+1;jnum-1;j+)if(sisj)t=si;si=sj;sj=t;22: 第22題 n名學生的成績已在主函數中放入一個帶頭節(jié)點的鏈表結構中,h指向鏈表的頭節(jié)點。請編寫函數fun,它的功能是:找出學生的最高分,由函數值返回。 答案:double fun(STREC *h)double max;STREC *q=h;max=h-s;doif(q-smax)max=q-s;q=q-next;while(q!=0);return max;23: 第23題 請編寫函數fun,該函數的功能是:判斷字符串是否為回文?若是則函數返回1,主函數中輸出yes,否則返回0,主函數
47、中輸出no?;匚氖侵疙樧x與倒讀都是一樣的字符串。 答案:int fun(char *str)int I,n=0;fg=1;char *p=str;while (*p)n+;p+;for(i=0;in/2;i+)if (stri=strn-1-i);elsefg=0;break;return fg;24: 第24題 請編寫一個函數fun,它的功能是:將一個字符串轉換為一個整數(不得調用c語言提供的將字符串轉換為整數的函數)。 答案:long fun (char *p)long s=0,t;int i=0,j,n=strlen(p),k,s1;if(p0=-)i+;for(j=I;j=n-1;j+
48、)t=pj-0;s1=10;for(k=j;kn-1;k+)t*=s1;s+=t;if(p0=-)return s;elsereturn s;25: 第25題 請編寫一個函數fun,它的功能是:比較兩個字符串的長度,(不得調用c語言提供的求字符串長度的函數),函數返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。 答案:char *fun(char *s,char *t)char *p,*t1=t,*s1=s;int n=0;m=0;while (*s1)n+;s1+;while(*t1)m+;t1+;if(n=m)p=s;elsep=t;return p;26: 第26題 請編寫一
49、個函數fun,它的功能是:根據以下公式求x的值(要求滿足精度0.0005,即某項小于0.0005時停止迭代):x/2=1+1/3+12/35+123/357+1234/3579+123n/357(2n+1)程序運行后,如果輸入精度0.0005,則程序輸出為3.14。 答案:double fun(double eps)double s;float n,t,pi;t=1;pi=0;n=1.0;s=1.0;while(fabs(s)=eps)pi+=s;t=n/(2*n+1);s*=t;n+;pi=pi*2;return pi;27: 第27題 請編寫一個函數fun,它的功能是:求除1到m之內(含m
50、)能北7或11整除的所有整數放在數組a中,通過n返回這些數的個數。 答案:void fun(int m, int *a, int *n)int I,j=0; *n=0;for(i=1;i=m;i+)if (i%7=0 | i%11 =0)aj=I;j+;*n=j;28: 第28題 請編寫一個函數fun,它的功能是:找出一維整型數組元素中最大的值與它所在的下標,最大的值與它所在的下標通過形參傳回。數組元素中的值已在主函數中賦予。主函數中x是數組名,n 是x中的數據個數,max存放最大值,index存放最大值所在元素的下標。 答案:void fun (int a,int n, int *max, int *d)int I;*max=a0;*d=0;for(i=0;In;i+)if(ai*max)*max=ai;*d=I;29: 第29題 請編寫一個函數fun,它的功能是:將ss所指字符串中所有下標為奇數位置上的字母轉換為大寫(若該位置上不是字母,則不轉換)。 答案:void fun(char *ss)int I,n;n=strlen(ss);for(i=1;in;i+=2)if(ssi=a& ssi=z)ssi=ssi-32;30: 第30題 請編寫一個函數fun,它的功能是:求除一個2m整型二維數組中最大元素的值,并將此值返回調用函數。 答案:int fun(int aM)int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年LED電子顯示屏制作及安裝合同
- 2025企業(yè)合同保障女性職工孕期權益為她們在工作中提供堅強后盾
- 2025蘇州市家庭居室裝飾裝修工程委托監(jiān)理合同
- 電動車配件購銷合同協(xié)議
- 電纜買賣合同違約協(xié)議
- 申通快遞發(fā)貨合同協(xié)議
- 電商加盟抽成合同協(xié)議
- 《文化傳統(tǒng)與現代文明》(首都師范大學)章節(jié)測試答案
- 瓷磚廠拆除合同協(xié)議
- 男女朋友房內合同協(xié)議
- HSE管理體系與保證措施
- GB/T 30663-2024人才測評服務規(guī)范
- 《文化學概論》第三章-文化的起源及其發(fā)展-38
- 2024年高考新課標全國卷政治試題分析及2025屆高考復習備考建議
- 公立醫(yī)院醫(yī)療服務價格制度
- 突發(fā)環(huán)境事件應急預案評審會匯報課件-(模板)
- JGJ+196-2010建筑施工塔式起重機安裝、使用、拆卸安全技術規(guī)程
- 跌倒不良事件分析匯報課件
- 一氧化碳檢測報警器標準裝置技術報告
- 交通事故賠償起訴狀范例合集
- JT∕T1180.4-2018交通運輸企業(yè)安全生產標準化建設基本規(guī)范第4部分:道路普貨運輸
評論
0/150
提交評論