二級c語言復習
『壹』 c語言2級復習題,哪位高手幫幫忙
1.main()(主函數薯余陸數頃)
2.不固定
3.mani() main()
4.函數名 參數
5.__ __
6.256 分多行書寫
7.// 或 /毀賀* */
8. .c .cpp
9. .obj
10. .exe
11. 輸出
1. A 2.A 3.A 4.B 5.A
呵呵
『貳』 計算機二級c語言知識點
2017計算機二級c語言知識點精選
計算機二級C語言考試內容是什麼?為幫助大家更好備考3月計算機考試,我為大家分享計算機C語言二級考試知識點如下:
第一章 數據結構與演算法
1.1 演算法
1.演算法的基本概念
(1) 概念:演算法是指一系列解決問題的清晰指令。
(2) 4個基本特徵:可行性、確定性、有窮性、擁有足夠的情報。
(3) 兩種基本要素:對數據對象的運算和操作、演算法的控制結構(運算和操作時問的順序)。
(4) 設計的基本方法:列舉法、歸納法、遞推法、遞歸法、減半遞推技術和回溯法。
2.演算法的復雜度
(1) 演算法的時間復雜度:執行演算法所需要的計算工作量。
(2) 演算法的空間復雜度:執行演算法所需的內存空間。
1.2 數據結構的基本概念
數據結構指相互有關聯的數據元素的集合,即數據的組織形式。其中邏輯結構反映數據元素之間邏輯關系;存儲結構為數據的邏輯結構在計算機存儲空間中的存放形式,有順序存儲、鏈式存儲、索引存儲和散列存儲4種方式。
數據結構按各元素之間前後件關系的復雜度可劃分為:
(1) 線性結構:有且只有一個根節點,且每個節點最多有一個直接前驅和一個直接後繼的非空數據結構。
(2) 非線性結構:不滿足線性結構的數據結構。
1.3 線性表及其順序存儲結構
1.線性表的基本概念
線性結構又稱線性表,線性表是最簡單也是最常用的一種數據結構。
2.線性表的順序存儲結構
元素所佔的存儲空間必須連續。
元素在存儲空間的位置是按邏輯順序存放的。
3.線性表的插入運算
在第i個元素之前插入一個新元素的步驟如下:
步驟一:把原來第n個節點至第i個節點依次往後移一個元素位置。
步驟二:把新節點放在第i個位置上。
步驟三:修正線性表的節點個數。
在最壞情況下,即插入元素在第一個位置,線性表中所有元素均需要移動。
4.線性表的刪除運算
刪除第i個位置的元素的步驟如下:
步驟一:把第i個元素之後不包括第i個元素的n-i個元素依次前移一個位置;
步驟二:修正線性表的結點個數。
1.4 棧和隊列
1.棧及其基本運算
(1) 基本概念:棧是一種特殊的線性表,其插入運算與刪除運算都只在線性表的一端進行,也被稱為「先進後出」表或「後進先出」表。
棧頂:允許插入與刪除的一端。
棧底:棧頂的另一端。
空棧:棧中沒有元素的棧。
(2) 特點。
棧頂元素是最後插入和最早被刪除的元素。
棧底元素是最早插入和最後被刪除的元素。
棧有記憶作用。
在順序存儲結構下,棧的插入和刪除運算不需移動表中其他數據元素。
棧頂指針top動態反映了棧中元素的變化情況
(3) 順序存儲和運算:入棧運算、退棧運算和讀棧頂運算。
2.隊列及其基本運算
(1) 基本概念:隊列是指允許在一端進行插入,在另一端進行刪除的線性表,又稱「先進先出」的線性表。
隊尾:允許插入的一端,用尾指針指向隊尾元素。
排頭:允許刪除的一端,用頭指針指向頭元素的前一位置。
(2) 循環隊列及其運算。
所謂循環隊列,就是將隊列存儲空間的最後一個位置繞到第一個位置,形成邏輯上的環狀空間。
入隊運算是指在循環隊列的隊尾加入一個新元素。
當循環隊列非空(s=1)且隊尾指針等於隊頭指針時,說明循環隊列已滿,不能進行人隊運算,這種情況稱為「上溢」。
退隊運算是指在循環隊列的隊頭位置退出一個元素並賦給指定的變數。首先將隊頭指針進一,然後將排頭指針指向的元素賦給指定的變數。當循環隊列為空(s=0)時,不能進行退隊運算,這種情況稱為「下溢」。
1.5 線性鏈表
在定義的鏈表中,若只含有一個指針域來存放下一個元素地址,稱這樣的鏈表為單鏈表或線性鏈表。
在鏈式存儲方式中,要求每個結點由兩部分組成:一部分用於存放數據元素值,稱為數據域;另一部分用於存放指針,稱為指針域。其中指針用於指向該結點的前一個或後一個結點(即前件或後件)。
1.6 樹和二叉樹
1.樹的基本概念
樹是簡單的非線性結構,樹中有且僅有一個沒有前驅的節點稱為「根」,其餘節點分成m個互不相交的有限集合T1,T2,…,T}mm,每個集合又是一棵樹,稱T1,T2,…,T}mm為根結點的子樹。
父節點:每一個節點只有一個前件,無前件的節點只有一個,稱為樹的根結點(簡稱樹的根)。
子節點:每~個節點可以後多個後件,無後件的節點稱為葉子節點。
樹的度:所有節點最大的度。
樹的深度:樹的最大層次。
2.二叉樹的定義及其基本性質
(1) 二叉樹的定義:二叉樹是一種非線性結構,是有限的節點集合,該集合為空(空二叉樹)或由一個根節點及兩棵互不相交的左右二叉子樹組成。可分為滿二叉樹和完全二叉樹,其中滿二叉樹一定是完全二叉樹,但完全二叉樹不一定是滿二叉樹。二叉樹具有如下兩個特點:
二叉樹可為空,空的二叉樹無節點,非空二叉樹有且只有一個根結點;
每個節點最多可有兩棵子樹,稱為左子樹和右子樹。
(2) 二叉樹的基本性質。
性質1:在二叉樹的第k層上至多有2k-1個結點(k≥1)。
性質2:深度為m的二叉樹至多有2m-1個結點。
性質3:對任何一棵二叉樹,度為0的結點(即葉子結點)總是比度為2的結點多一個。
性質4:具有n個結點的完全二叉樹的深度至少為[log2n]+1,其中[log2n]表示log2n的整數部分。
3.滿二叉樹與完全二叉樹
(1) 滿二叉樹:滿二叉樹是指這樣的一種二叉樹:除最後一層外,每一層上的所有結點都有兩個子結點。滿二叉樹在其第i層上有2i-1個結點。
從上面滿二叉樹定義可知,二叉樹的每一層上的結點數必須都達到最大,否則就不是滿二叉樹。深度為m的滿二叉樹有2m-1個結點。
(2) 完全二叉樹:完全二叉樹是指這樣的二叉樹:除最後一層外,每一層上的結點數均達到最大值;在最後一層上只缺少右邊的若干結點。
如果—棵具有n個結點的深度為k的二叉樹,它的每—個結點都與深度為k的滿二叉樹中編號為1~n的結點——對應。
3.二叉樹的存儲結構
二叉樹通常採用鏈式存儲結構,存儲節點由數據域和指針域(左指針域和右指針域)組成。二叉樹的鏈式存儲結構也稱二叉鏈表,對滿二叉樹和完全二叉樹可按層次進行順序存儲。
4.二叉樹的遍歷
二叉樹的遍歷是指不重復地訪問二叉樹中所有節點,主要指非空二叉樹,對於空二叉樹則結束返回。二叉樹的遍歷包括前序遍歷、中序遍歷和後序遍歷。
(1) 前序遍歷。
前序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹;並且,在遍歷左右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。前序遍歷描述為:若二叉樹為空,則執行空操作;否則①訪問根結點;②前序遍歷左子樹;③前序遍歷右子樹。
(2) 中序遍歷。
中序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹;並且,在遍歷左、右子樹時,仍然先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。中序遍歷描述為:若二叉樹為空,則執行空操作;否則①中序遍歷左子樹;②訪問根結點;③中序遍歷右子樹。
(3) 後序遍歷。
後序遍歷是指在訪問根結點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點,並且,在遍歷左、右子樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。後序遍歷描述為:若二叉樹為空,則執行空操作;否則①後序遍歷左子樹;②後序遍歷右子樹;③訪問根結點。
1.7 查找技術
(1) 順序查找:在線性表中查找指定的元素。
(2) 最壞情況下,最後一個元素才是要找的元素,則需要與線性表中所有元素比較,比較次數為n。
(3) 二分查找:二分查找也稱折半查找,它是一種高效率的查找方法。但二分查找有條件限制,它要求表必須用順序存儲結構,且表中元素必須按關鍵字有序(升序或降序均可)排列。對長度為n的有序線性表,在最壞情況下,二分查找法只需比較log2n次。
1.8 排序技術
(1) 交換類排序法。
冒泡排序:通過對待排序序列從後向前或從前向後,依次比較相鄰元素的排序碼,若發現逆序則交換,使較大的元素逐漸從前部移向後部或較小的元素逐漸從後部移向前部,直到所有元素有序為止。在最壞情況下,對長度為n的線性表排序,冒泡排序需要比較的次數為n(n-1)/2。
快速排序:是迄今為止所有內排序演算法中速度最快的一種。它的基本思想是:任取待排序序列中的某個元素作為基準(一般取第一個元素),通過一趟排序,將待排元素分為左右兩個子序列,左子序列元索的排序碼均小於或等於基準元素的排序碼,右子序列的排序碼則大於基準元素的排序碼,然後分別對兩個子序列繼續進行排序,直至整個序列有序。最壞情況下,即每次劃分,只得到一個序列,時間效率為O(n2)。
(2) 插人類排序法。
簡單插入排序法:把n個待排序的元素看成為一個有序表和一個無序表,開始時有序表中只包含一個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第一個元素,把它的排序碼依次與有序表元素的排序碼進行比較,將它插入到有序表中的適當位置,使之成為新的有序表。在最壞情況下,即初始排序序列是逆序的情況下,比較次數為n(n-1)/2,移動次數為n(n-1)/2。
希爾排序法:先將整個待排元素序列分割成若干個子序列(由相隔某個「增量」的元素組成的)分別進行直接插入排序。待整個序列中的元素基本有序(增量足夠小)時,再對全體元素進行一次直接插入排序。
(3) 選擇類排序法。
簡單選擇排序法:掃描整個線性表。從中選出最小的元素。將它交換到表的最前面;然後對剩下的子表採用同樣的方法,直到子表空為止。最壞情況下需要比較n(n-1)/2次。
堆排序的方法:首先將一個無序序列建成堆;然後將堆頂元素(序列中的最大項)與堆中最後一個元素交換(最大項應該在序列的最後)。不考慮已經換到最後的那個元素,只考慮前n-1個元素構成的子序列,將該子序列調整為堆。反復做步驟②,直到剩下的子序列空為止。在最壞情況下,堆排序法需要比較的次數為0(nlog2n)
第二章 程序設計基礎
2.1 程序設計方法與風格
(1)設計方法:指設計、編制、調試程序的方法和過程,主要有結構化程序設計方法、軟體工程方法和面向對象方法。
(2)設計風格:良好的'設計風格要注重源程序文檔化、數據說明方法、語句的結構和輸入輸出。
2.2 結構化程序設計
1.結構化程序設計的原則
結構化程序設計強調程序設計風格和程序結構的規范化,提倡清晰的結構。。
(1)自頂向下:即先考慮總體,後考慮細節;先考慮全局目標,後考慮局部目標。
(2)逐步求精:對復雜問題,應設計一些子目標做過渡,逐步細化。
(3)模塊化:把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊;
(4)限制使用GOT0語句。
2.結構化程序的基本結構與特點
(1)順序結構:自始至終嚴格按照程序中語句的先後順序逐條執行,是最基本、最普遍的結構形式。
(2)選擇結構:又稱為分支結構,包括簡單選擇和多分支選擇結構。
(3)重復結構:又稱為循環結構,根據給定的條件,判斷是否需要重復執行某一相同的或類似的程序段。
結構化程序設計中,應注意事項:
(1)使用程序設計語言中的順序、選擇、循環等有限的控制結構表示程序的控制邏輯。
(2)選用的控制結構只准許有一個人口和一個出口。
(3)程序語言組成容易識別的塊,每塊只有一個入口和一個出口。
(4)復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現。
(5)語言中所沒有的控制結構,應該採用前後一致的方法來模擬。
(6)盡量避免GOT0語句的使用。
2.3 面向對象的程序設計
面向對象方法的本質是主張從客觀世界固有的事物出發來構造系統,強調建立的系統能映射問題域。
對象:用來表示客觀世界中任何實體,可以是任何有明確邊界和意義的東西。
類:具有共同屬性、共同方法的對象的集合。
實例:一個具體對象就是其對應分類的一個實例。
消息:實例間傳遞的信息,它統一了數據流和控制流。
繼承:使用已有的類定義作為基礎建立新類的定義技術。
多態性:指對象根據所接受的信息而作出動作,同樣的信息被不同的對象接收時有不同行動的現象。面向對象程序設計的優點:與人類習慣的思維方法一致、穩定性好、可重用性好、易於開發大型軟體產品、可維護性好。
第三章 軟體工程基礎
3.1 軟體工程基本概念
1.軟體的定義與特點
(1)定義:軟體是指與計算機系統的操作有關的計算機程序、規程、規則,以及可能有的文件、文檔和數據。
(2)特點。
是邏輯實體,有抽象性。
生產沒有明顯的製作過程。
運行使用期間不存在磨損、老化問題。
開發、運行對計算機系統有依賴性,受計算機系統的限制,導致了軟體移植問題。
復雜性較高,成本昂貴。
開發涉及諸多社會因素。
2.軟體的分類
軟體可分應用軟體、系統軟體和支撐軟體3類。
(1)應用軟體是特定應用領域內專用的軟體。
(2)系統軟體居於計算機系統中最靠近硬體的一層,是計算機管理自身資源,提高計算機使用效率並為計算機用戶提供各種服務的軟體。
(3)支撐軟體介於系統軟體和應用軟體之間,是支援其它軟體的開發與維護的軟體。
3.軟體危機與軟體工程
軟體危機指在計算機軟體的開發和維護中遇到的一系列嚴重問題。軟體工程是應用於計算機軟體的定義、開發和維護的一整套方法、工具、文檔、實踐標准和工序,包括軟體開發技術和軟體工程管理。
4.軟體生命周期
軟體產品從提出、實現、使用維護到停止使用的過程稱為軟體生命周期。
在國家標准中,軟體生命周期劃分為8個階段①軟體定義期:包括問題定義、可行性研究和需求分析3個階段。②軟體開發期:包括概要設計、詳細設計、實現和測試4個階段。③運行維護期:即運行維護階段。
5.軟體工程的原則
軟體工程的原則包括:抽象、信息隱蔽、模塊化、局部化、確定性、一致性、完備性和可驗證性。
3.2 結構化分析方法
需求分析的任務是發現需求、求精、建模和定義需求的過程,可概括為:需求獲取、需求分析、編寫需求規格說明書和需求評審。
1.常用的分析方法
結構化分析方法:其實質著眼於數據流,自頂向下,逐層分解,建立系統的處理流程。
面向對象分析方法。
2.結構化分析常用工具
結構化分析常用工具包括數據流圖、數字字典(核心方法)、判斷樹和判斷表。
(1)數據流圖:即DFD圖,以圖形的方式描繪數據在系統中流動和處理的過程,它只反映系統必須完成的邏輯功能。是一種功能模型。
符號名稱作用:
箭頭代表數據流,沿箭頭方向傳送數據的通道
圓或橢圓代表加工,輸入數據經加工變換產生輸出
雙杠代表存儲文件,表示處理過程中存放各種數據文件
方框代表源和潭,表示系統和環境的介面
(2)數據字典:結構化分析方法的核心。數據字典是對所有與系統相關的數據元素的一個有組織的列表。以及精確的、嚴格的定義,使得用戶和系統分析員對於輸入、輸出、存儲成分和中間計算結果有共同的理解。
(3)判定樹:使用判定樹進行描述時,應先從問題定義的文字描述中分清判定的條件和判定的結論,根據描述材料中的連接詞找出判定條件之問的從屬關系、並列關系、選擇關系,根據它們構造判定樹。
(4)判定表:與判定樹相似,當數據流圖中的加工要依賴於多個邏輯條件的取值,即完成該加工的一組動作是由於某一組條件取值的組合引發的,使用判定表比較適宜。
3.軟體需求規格說明書
軟體需求規格說明書是需求分析階段的最後成果,是軟體開發的重要文檔之一。
(1)軟體需求規格說明書的作用:①便於用戶、開發人員進行理解和交流;②反映出用戶問題的結構,可以作為軟體開發工作的基礎和依據;③作為確認測試和驗收的依據。
(2)軟體需求規格說明書的內容:①概述;②數據描述;③功能描述;④性能描述;⑤參考文獻;⑥附錄。
(3)軟體需求規格說明書的特點:①正確性;②無歧義性;③完整性;④可驗證性;⑤一致性;⑥可理解性;⑦可修改性;⑧可追蹤性。
3.3 結構化設計方法
1.軟體設計的基本概念和方法
軟體沒計是一個把軟體需求轉換為軟體表示的過程。
(1)基本原理:抽象、模塊化、信息隱藏、模塊獨立性(度量標准:耦合性和內聚性,高耦合、低內聚)。
(2)基本思想:將軟體設計成由相對獨立、單一功能的模塊組成的結構。
2.概要設計
(1)4個任務:設計軟體系統結構、數據結構及資料庫設計、編寫概要設計文檔、概要設計文檔評審。
(2)面向數據流的設計方法:數據流圖的信息分為交換流和事物流,結構形式有交換型和事務型。
3.詳細設計的工具
詳細設計的工具包括:
圖形工具:程序流程圖、N-S、PAD、HIPO。
表格工具:判定表。
語言工具:PDL(偽碼)。
3.4 軟體測試
1.目的
為了發現錯誤而執行程序的過程。
2.准則
所有測試應追溯到用戶需求。
嚴格執行測試計劃,排除測試的隨意性。
充分注意測試中的群集現象。
程序員應避免檢查自己的程序。
窮舉測試不可能。
妥善保存設計計劃、測試用例、出錯統計和最終分析報告。
3.軟體測試技術和方法
軟體測試的方法按是否需要執行被測軟體的角度,可分為靜態測試和動態測試,按功能分為白盒測試和黑盒測試。
(1)白盒測試:根據程序的內部邏輯設計測試用例,主要方法有邏輯覆蓋測試、基本路徑測試等。
(2)黑盒測試:根據規格說明書的功能來設計測試用例,主要診斷方法有等價劃分法、邊界值分析法、錯誤推測法、因果圖法等,主要用於軟體確認測試。
4.軟體測試的實施
軟體測試是保證軟體質量的重要手段,軟體測試是一個過程,其測試流程是該過程規定的程序,目的是使軟體測試工作系統化。
軟體測試過程分4個步驟,即單元測試、集成測試、驗收測試和系統測試。
單元測試是對軟體設計的最小單位——模塊(程序單元)進行正確性檢驗測試。
單元測試的目的是發現各模塊內部可能存在的各種錯誤。
單元測試的依據是詳細的設計說明書和源程序。
單元測試的技術可以採用靜態分析和動態測試。
3.5 程序的調試
(1)任務:診斷和改正程序中的錯誤。
(2)調試方法:強行排錯法、回溯法和原因排除法。
第四章 資料庫設計基礎
4.1 資料庫系統的基本概念
(1) 數據(Data):描述事物的符號記錄。
(2) 資料庫(DataBase):長期存儲在計算機內的、有組織的、可共享的數據集合。
(3) 資料庫管理系統的概念
資料庫管理系統(DataBase Management System,DBMS)是資料庫的機構,它是一種系統軟體,負責資料庫中的數據組織、數據操作、數據維護、數據控制及保護和數據服務等。為完成以上6個功能,DBMS提供了相應的數據語言;數據定義語言(負責數據的模式定義與數據的物理存取構建);數據操縱語言(負責數據的操縱);數據控制語言(負責數據完整性、安全性的定義)。資料庫管理系統是資料庫系統的核心,它位於用戶和操作系統之間,從軟體分類的角度來說,屬於系統軟體。
(4) 資料庫技術發展經歷了3個階段。
人工管理階段→文件系統階段→資料庫系統階段
(5) 資料庫系統的特點:集成性、高共享性、低冗餘性、數據獨立性、數據統一管理與控制等。
(6) 資料庫系統的內部機構體系:三級模式(概念模式、內模式、外模式)和二級映射(外模式/概念模式的映射、概念模式/內模式的映射)構成了資料庫系統內部的抽象結構體系。
4.2 數據模型
數據模型是數據特徵的抽象,從抽象層次上描述了系統的靜態特徵、動態行為和約束條件,描述的內容有數據結構、數據操作和數據約束。有3個層次:概念數據模型、邏輯數據模型和物理數據模型。
(1) E—R模型:提供了表示實體、屬性和聯系的方法。實體間聯系有「一對一」、「一對多」和「多對多」。
(2) E-R模型用E-R圖來表示。
(3) 層次模型:利用樹形結構表示實體及其之問聯系。其中節點是實體,樹枝是聯系,從上到下是一對多關系。
(4) 網狀模型:用網狀結構表示實體及其之間聯系。是層次模型的擴展。網路模型以記錄型為節點,反映現實中較為復雜的事物聯系。
(5) 關系模型:採用二維表(由表框架和表的元組組成)來表示,可進行數據查詢、增加、刪除及修改操作。關系模型允許定義「實體完整性」、「參照完整性」和「用戶定義的完整性」三種約束。
鍵(碼):二維表中唯一能標識元組的最小屬性集。
候選鍵(候選碼):二維表中可能有的多個鍵。
主鍵:被選取的一個使用的鍵。
4.3 關系代數
(1) 關系代數的基本運算:投影、選擇、笛卡爾積。
(2) 關系代數的擴充運算:交、連接與自然連接、除。
4.4 資料庫設計與管理
1.資料庫設計概述
基本思想:過程迭代和逐步求精。
方法:面向數據的方法和面向過程的方法。
設計過程:需求分析→概念設計→邏輯設計→物理設計→編碼→測試→運行→進→步修改。
2.資料庫設計的需求分析
需求收集和分析是資料庫設計的第一階段,常用結構化分析方法(自頂向下、逐層分解)和面向對象的方法,主要工作有繪制數據流程圖、數據分析、功能分析、確定功能處理模塊和數據間關系。
數據字典:包括數據項、數據結構、數據流、數據存儲和處理過程,是對系統中數據的詳盡描述。
3.資料庫的設計
(1) 資料庫的概念設計:分析數據問內在的語義關聯,以建立數據的抽象模型。
(2) 資料庫的邏輯設計:從E-R圖向關系模型轉換,邏輯模式規范化,關系視圖設計可以根據用戶需求隨時創建。實體轉換為元組,屬性轉換為關系的屬性,聯系轉換為關系。
(3) 資料庫的物理設計:是數據在物理設備上的存儲結構與存取方法,目的是對資料庫內部物理結構作出調整並選擇合理的存取路徑,以提高速度和存儲空間。
4.資料庫管理
資料庫管理包括資料庫的建立、資料庫的調整、資料庫的重組、資料庫的安全性與完整性控制、資料庫故障恢復和資料庫的監控。
;『叄』 計算機二級C語言考試技巧
全國計算機等級考試二級C語言上機考試具有三種題型:程序填空、程序修改和程序設計,其中程序填空30分沒拍,程序修改30分,程序設計40分。[1]從以往的機試的情況來看,許多考生在程序設計題目上失分比較嚴重,而程序設計題占總分值的40%,一旦答錯,如果程序填空和程序修改又不能取得滿分的話,就不能通過上機考試。
2007年9月,教育部考試中心對現有的全國計算機等級考試大綱進行了改革,二級C語言上機考試時間由60分鍾增加到了90分鍾,編程環境由以前的TC2.0改為VC++6.0。[2]本文根據對近幾年來二級C語言上機考試中的程序設計題進行歸類總結,提出相應的策略,並對考生應對2007新大綱以後的C語言上機環境給出一些建議。
2 對以往考試的分析
歷年的全國計算機等級考試中二級C語言上機考試程序設計題目全部出自於由南開大學出版社編寫南開100題,每次考試教育部考試中心會對題庫做相應的改動,增加一些新的題型或題目,考試中,考生隨機抽取一套進行測試。筆者對2005年4月至2007年9月2004版新大綱以後的6次手慧考試中的程序設計題目進行了總結,將這些題目一共分成了6大類,對每種類型的題目進行了分析。
2.1 對一維數組和字元串的操作
該類型的題目在以往的機試中所佔比例最大,為40%,考生應對該知識點做全面的復習和掌握。一維數組可以分為數值型和字元型,其中數值型數組的數據類型為整型和實型,字元型數組的數據類型為字元型,我們通常會把字元型數組叫做字元串,但是應該注意字元型數組與字元串之間是存在區別的,也就是』\0』結束標志問題。
在復習該部分的時候,考生應該掌握以下兩個問題:
(1)對一維數組的操作
對一維數組進行操作的時候,不可避免的要訪問相關的數組元素,畢察答在C語言中訪問數組元素一般採取單層循環的方法進行遍歷,假設數組長度為n,數組下標是在0到(n-1)之間的,考生應該牢固掌握在一維數組中求最大值、最小值,移動元素,查找特定值,存儲數組元素的方法。
(2)對字元串的操作
該類問題是每次考試的重點和難點,特別是將字元串同指針結合起來以後,難度就更大了。考生在解決此類問題是應特別注意字元串的結束標志』\0』,它不僅僅用來作為字元串的結束標志,而且在對字元串進行操作的時候,它也是循環的結束標志。考生在復習該部分的時候,應該注意這樣的幾個基本問題:大小字母轉換、奇偶數判別、刪除或添加指定的字元和字元的移動。此外,考生應該牢固掌握指針的特性及字元串操作函數的使用和實現方法,特別是字元串連接函數與求子串函數,在以往的考試中多次要求考生自己編寫,考生應對該知識點做重點掌握。
2.2 數值計算
該類型的題目在歷年的機試中佔22%,考查的機率也非常高。該類題目一般給定一個數列計算公式,然後要求考生編寫一個函數類實現求數列的前n項的值、累加和或者積。在解決該類的問題,首先要找到給定數列的變化規律,然後根據其變化規律來編寫一個單層或者雙層的循環來求其相應的值。在編寫程序的過程中,往往還會用到一些數學函數,如:sqrt()、fabs()、pow()等,考生應該牢固掌握math.h中的一些常用數學函數的功能和使用方法。另外,還應該注意數據類型之間的區別,特別是float和int類型,不同的數據類型產生的運算結果也是不一樣的。
2.3 對結構體的操作
該部分對非計算機專業的學生來說是一個難點,因為結構體在《數據結構》這門課程中應用最為廣泛,但考生忽視對該知識點的復習,但在以往的機試中,有17%的題目是屬於該類型。考生在復習這部分的時候,首先應注意結構體成員的兩種不同的引用方法:結構體變數和指向結構體的指針,也就是結構體成員運算符』.』和指向運算符』->』,在編程的過程中,往往會涉及到結構體數組,其實這類數組除了數據類型是結構體以外,其它的特性和普通數組是一樣的,結構體除了定義、賦值和初始化以外,它的其它操作和普通變數也是一樣的,包括在結構體數組(記錄)中進行查找、刪除、求最大最小值等操作,我們應該用對待普通變數的方法來解決結構體的問題,這樣的話,難度就可以大幅度的降低。
2.4 對二維數組的操作
該類問題在歷年的機試中佔16%,考生應對二維數組的數組元素的遍歷方法、存儲方式、矩陣轉換等問題做重點掌握。在C語言中,訪問二維數組的數組元素一般採用雙層循環的方法實現,因為二維數組具有兩個下標:行下標與列下標;二維數組可以按行或者按列轉化成一維數組進行存儲;對二維數組進行行列轉換的時候,要將行下標和列下標進行互換。考生還應該掌握上三角矩陣、下三角矩陣的特性,在考試中,該知識點也有所涉及。
2.5 數制轉換
該部分在以往的機試中佔11%,包括兩類問題:一是整數合並,二是類型轉換。在復習該部分時,考生應該注意C語言中int型、long型、float型和double型數據所佔的存儲空間的大小和精度,注意』%』(模)運算和』/』(除法)運算的特點,特別應該靈活的使用模運算與除法運算求數據相應位數上的數值。掌握強制類型轉換的方法以及按規定的位數保留小數的方法。
2.6 素數
該部分在歷年的機試中佔6%,考生應該牢固掌握素數的基本概念和判斷素數的方法。特別需要考生注意的是整數1不是素數,所以在判斷素數的時候,應該從2開始,到(n-1)結束,能夠除盡的不是素數,不能除盡的是素數。判斷素數問題是C語言中的一個基本演算法,不僅會在程序設計中會考到,而且往往在程序填空和程序改錯中也會有所涉及,因此,考生應對該知識點認真復習。
3 程序設計中應注意的問題
3.1 熟悉編程環境
根據2007年9月教育部考試中心頒布的新大綱,二級C語言的編程環境由TC2.0改為VC++6.0,考生應該熟練掌握VC++6.0的使用方法,雖然VC支持滑鼠操作,但是考生還是應該掌握幾個常用快捷方式來提高編程效率。特別要注意在對程序進行改動以後要保存,要進行編譯連接生成可執行(.exe)文件。
3.2 養成良好的程序設計風格
二級C語言機試中的程序設計題,一般來說程序都比較簡短,源代碼一般不超過5行,在題目指定的函數內編寫程序。考生在答題的時候盡量採用易於理解而且比較簡單的代碼來解決問題,注意不要改動函數的參數,語句的界符「{}」也應該具有層次性的縮進,必要時,使用一定的注釋來幫助自己理解程序。
3.3 謹慎使用指針
指針是C語言的精華,也是機試考查的重點內容,指針的使用非常靈活,在使用的指針的時候一定要注意對其進行初始化,所謂初始化也就是給指針一個初值,沒有初值的指針是很危險的,除了一定得不到正確答案外,如果指針越界,容易引起死機。如果死循環帶來的死機是「假死」,大部分可以用「Ctrl+Break」來恢復,但指針越界引起的死機卻是真死,請考生一定要牢記。[3]
3.4 熟練掌握循環結構
循環結構的程序是程序設計中涉及最多的知識點,根據以上的分析,我們可以看出幾乎每一類題目都會涉及到使用循環來解決問題,因此考生應該掌握循環結構的特徵和使用方法,以達到能夠熟練使用的目標。應該引起注意的是,在編制循環結構程序的時候考生應該盡量使用「for」循環和「while」循環,避免使用「do……while」循環和「goto」語句,因為「for」循環和「while」編寫出來的循環程序易於理解,不容易出錯。
3.5 沉著應戰,認真細心
二級C語言上機考試時間有限,雖然從以前的60分鍾改為了90分鍾,但是相對於其它語種的上機考試來說,二級C語言的上機時間還是非常緊迫的。考生在答題的過程中應該保持一個良好的心態和平靜的心情,遇到問題的時候不能慌亂,最好能夠在機試時帶一張草稿紙和一支筆,在編程之前先畫出程序的流程圖來明確解題思路。在遇到程序錯誤時一定要根據錯誤代碼檢查相應位置,檢查的過程中應該認真仔細,確保能夠解決問題。
4 結束語
二級C語言上機考試是各語種級別中考生最多的,但每年的通過率都不高,主要的原因是考生的重視程度不夠,上機操作的次數過少,很多應該掌握的卻沒有掌握,缺乏考試經驗等。希望每位參加考試的考生能認真對待,積極備考。相信本文能夠助參加二級C語言上機考試的考生一臂之力。
『肆』 計算機二級考試C語言知識點歸納
2017年計算機二級考試C語言知識點歸納
計算頌悄機二級考試是全國計算機等級考試(National Computer Rank Examination,簡稱NCRE)四個等級中的一個等級,考核計算機基礎知識和使用一種高級計算機語言編寫程序以及上機調試的基本技能。下面是2017年計算機二級考試C語言知識點歸納。歡迎閱讀。
總體上必須清楚的
1)程序結構是三種:順序結構 ,循環結構
(三個循環結構),選擇結構(if 和 switch)
2)讀程序都要從main()入口,然後從最上面順序
往下讀(碰到循環做循環,碰到選擇做選擇)。
3)計中含算機的數據在電腦中保存是以二進制的形式。
數據存放的位置就是他的地址。
4)bit是位 是指為0 或者1。 byte 是指位元組,
一個位元組 = 八個位。
5)一定要記住二進制如何劃成十進制。
概念常考到的:
1)、編譯預處理不是C語言的一部分,不再運行
時間。C語言編譯的程序稱為源程序,
它以ASCII數值存放在文本文件中。
2)、每個C語言程序中main函數是有且只有一個。
3)、在函數中不可以再定義函數。
4)、演算法是一定要有輸出的,他可以沒有輸入。
5)、break可用於循環結構和switch語句。
6)、逗號運算符的級別最低。
第一章
1)合法的用戶標識符考查:
合法的要求是由字母,數字,下劃線組成。
有其它元素就錯了。
並且第一個必須為字母或則是下劃線。
第一個為數字就錯了。
關鍵字不可以作為用戶標識符號。
main define scanf printf 都不是關鍵字。迷惑你的
地方If是可以做為用戶標識符。因為If中的
第一個字母大寫了,所以不是關鍵字。
2)實型數據的合法形式:
2.333e-1 就是合法的,且數據是2.333×10-1。
考試口訣:e前e後必有數,e後必為整數。.
3)字元數據的合法形式::
'1'是字元佔一個位元組,"1"是字元串占兩個
位元組(含有一個結束符號)。
'0' 的ASCII數值表示為48,'a' 的ASCII數值是97,
'A'的ASCII數值是65。
4) 整型一般是兩個位元組, 字元型是一個位元組,
雙精度一般是4個位元組:
考試時候一般會說,在16位編譯系統,或者
是32位系統。碰到這種情況,不要去管,一樣做題。
掌握整型一般是兩個位元組, 字元型是一個位元組,
雙精度一般是4個位元組就可以了。
5)轉義字元的考查:
在程序中 int a = 0x6d,是把一個十六進制的數給
變數a 注意這里的0x必須存在。
在程序中 int a = 06d, 是一個八進制的形式。
在轉義字元中,’x6d’才是合法的,0不能寫,
並且x是小寫。
‘141’是合法的。
‘108’是非法的,因為不可賣櫻笑以出現8。
轉義字元意義 ASCII碼值(十進制)
a 響鈴(BEL) 007
退格(BS) 008
f 換頁(FF) 012
換行(LF) 010
回車(CR) 013
水平製表(HT) 009
v 垂直製表(VT) 011
\ 反斜杠 092
? 問號字元 063
' 單引號字元 039
" 雙引號字元 034
空字元(NULL) 000
ddd 任意字元三位八進制
xhh 任意字元二位十六進制
6)算術運算符號的優先順序別:
同級別的有的是從左到右,有的是從右到左。
7)強制類型轉換:
一定是(int)a 不是 int(a),注意類型上
一定有括弧的。
注意(int)(a+b)和(int)a+b 的區別。
前是把a+b轉型,後是把a轉型再加b。
8)表達式的考查:
是表達式就一定有數值。
賦值表達式:表達式數值是最左邊的數值,
a=b=5;該表達式為5,常量不可以賦值。
自加、自減表達式:假設a=5,++a(是為6),
a++(為5);
運行的機理:++a 是先把變數的數值加上1,
然後把得到的數值放到變數a中,然後再用這
個++a表達式的數值為6,而a++是先用該表達
式的數值為5,然後再把a的數值加上1為6,
再放到變數a中。 進行了++a和a++後在下面的
程序中再用到a的話都是變數a中的6了。
考試口訣:++在前先加後用,++在後先用後加。
逗號表達式:優先順序別最低 ;表達式的數值
逗號最右邊的那個表達式的數值。
(2,3,4)的表達式的數值就是4。
9)位運算的考查:
會有一到二題考試題目。
總的處理方法:幾乎所有的'位運算的題目
都要按這個流程來處理(先把十進制變成
二進制再變成十進制)。
例1:char a = 6, b;
b = a<<2; 這種題目的計算是先要把a的十進
制6化成二進制,再做位運算。
例2:一定要記住,
例3:在沒有捨去數據的時候,<<左移一位表示
乘以2;>>右移一位表示除以2。
10)018的數值是非法的,八進制是沒有8的,
逢8進1。
11)%符號兩邊要求是整數。不是整數就錯了。
12)兩種取整丟小數的情況:
1、int a =1.6;
2、(int)a;
第二章
1)printf函數的格式考查:
%d對應整型;%c對應字元;%f對應單精度等等。
寬度的,左對齊等修飾。
%ld對應 long int;%lf 對應double。
2)scanf函數的格式考察:
注意該函數的第二個部分是&a 這樣的地址,不是a;
Scanf(“%d%d%*d%d”,&a,&b,&c);跳過輸入的
第三個數據。
3)putchar ,getchar 函數的考查:
char a = getchar() 是沒有參數的,從鍵盤得到
你輸入的一個字元給變數a。
putchar(‘y’)把字元y輸出到屏幕中。
4)如何實現兩個變數x ,y中數值的互換
(要求背下來)
不可以把 x=y,y=x; 要用中間變數 t=x;x=y;y=t。
5)如何實現保留三位小數,第四位四捨五入
的程序,(要求背下來)
x=(int)(x*1000+0.5)/1000.0
這個有推廣的意義,注意 x = (int)x 這樣是
把小數部分去掉。
第三章
特別要注意:c語言中是用非0表示邏輯真的,
用0表示邏輯假的。
1)關系表達式:
表達式的數值只能為1(表示為真),
或0(表示假)
當關系的表達是為真的時候得到1。
如 9>8這個是真的,所以表達式的數值就是1;
2)邏輯表達式:
只能為1(表示為真),或0(表示假)
a) 共有&& || ! 三種邏輯運算符號。
b) !>&&>|| 優先的級別。
c) 注意短路現象。考試比較喜歡考到。
d) 要表示 x 是比0大,比10小的方法。0
不可以的(一定記住)。是先計算0
結果為1或則0;再用0,或1與10比較得到的
總是真(為1)。所以一定要用(0
示比0大比10小。
3)if 語句
else 是與最接近的if且沒有else的相組合的。
4)條件表達式:
表達式1 ?表達式2 :表達式3
注意是當非0時候是表達式2的數值,當為0是
就是表達式2的數值。
考試口訣:真前假後。
5)switch語句:
a)一定要注意有break 和沒有break的差別,
沒有break時候,只要有一個case匹配了,剩下
的都要執行,有break則是直接跳出了swich語句。
b)switch只可以和break一起用,不可以
和continue用。
第四章
1)三種循環結構:
a)for(); while(); do- while()三種。
b)for循環當中必須是兩個分號,千萬不要忘記。
c)寫程序的時候一定要注意,循環一定要有結束
的條件,否則成了死循環。
d) do-while()循環的最後一個while();的分號一定
不能夠丟。(當心上機改錯)
2) break 和 continue的差別
記憶方法:
break:是打破的意思,(破了整個循環)所以
看見break就退出真個一層循環。
continue:是繼續的意思,(繼續循環運算),
但是要結束本次循環,就是循環體內剩下的語句
不再執行,跳到循環開始,然後判斷循環條件,
進行新一輪的循環。
3)嵌套循環
就是有循環裡面還有循環,這種比較復雜,要一層
一層一步一步耐心的計算,一般記住兩層是處理
二維數組的。
4) while((c=getchar())!=’ ’)和
while(c=getchar() !=’ ’)的差別
先看a = 3 != 2 和(a=3)!=2 的區別:
(!=號的級別高於=號 所以第一個先計算 3!=2)
第一個a的數值是得到的1;第二個a的數值是3。
考試注意點: 括弧在這里的重要性。
第五章
函數:是具有一定功能的一個程序塊;
1) 函數的參數,返回數值(示意圖):
main()
{
int a = 5,b=6,c;
c = add(a,b);
printf(“%d”,c);
}
調用函數
a,b是實參
整個函數得到一個數值就是
Add函數的返回數值。
int add ( int x,int y)
{
int z;
z=x+y;
return z;
}
被調用函數
x,y是形式參數
函數返回數值是整型
z就是這個add函數計算後得到的結果,就是函數
返回給主程序的返回數值。
程序是在從上往下順序執行,當碰到了函數add後,
把a,b的數值穿給調用函數,程序暫時中斷等待返回數值。
當得到了返回數值後,再順序的往下執行
2)一定要注意參數之間的傳遞
實參和形參之間 傳數值,和傳地址的差別。(考試的重點)
傳數值的話,形參的變化不會改變實參的變化。
傳地址的話,形參的變化就會有可能改變實參的變化。
3)函數聲明的考查:
一定要有:函數名,函數的返回類型,函數的參數類型。
不一定要有:形參的名稱。
第六章
指針變數的本質是用來放地址,而一般的變數是放數值的。
int *p 中 *p和p的差別:
*p可以當做變數來用;*的作用是取後面地址p裡面的數值
p是當作地址來使用。
*p++ 和 (*p)++的之間的差別:改錯題目中很重要
*p++是 地址會變化。
(*p)++ 是數值會要變化。
三名主義:(考試的重點)
數組名:表示第一個元素的地址。數組名不可以自加,
他是地址常量名。(考了很多次)
函數名:表示該函數的入口地址。
字元串常量名:表示第一個字元的地址。
第七章
1一維數組的重要概念:
對a[10]這個數組的討論。
1、a表示數組名,是第一個元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出現a++,或者
是a=a+2賦值的都是錯誤的。
3、a是一維數組名,所以它是列指針,也就是
說a+1是跳一列。
對a[3][3]的討論。
1、a表示數組名,是第一個元素的地址,也就是
元素a[10]的地址。
2、a是地址常量,所以只要出現a++,或者
是a=a+2賦值的都是錯誤的。
3、a是二維數組名,所以它是行指針,也就
是說a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以對
它進行賦值操作,同時它們都是列指針,a[0]+1,
a[1]+1,a[2]+1都是跳一列。
5、注意a和a[0] 、a[1]、a[2]是不同的,它們的
基類型是不同的。前者是一行元素,後三者是一列元素。
二維數組做題目的技巧:
如果有a[3][3]={1,2,3,4,5,6,7,8,9}這樣的題目。
步驟一:把他們寫成:
第一列第二列第三列
a[0]à 1 2 3 ->第一行
a[1]à 4 5 6—>第二行
a[2]à 7 8 9->第三行
步驟二:這樣作題目間很簡單:
*(a[0]+1)我們就知道是第一行的第一個元素往後
面跳一列,那麼這里就是a[0][1]元素,所以是1。
*(a[1]+2)我們就知道是第二行的第一個元素往後面
跳二列。那麼這里就是a[1][2]元素,所以是6。
一定記住:只要是二維數組的題目,一定是寫成如
上的格式,再去做題目,這樣會比較簡單。
數組的初始化,一維和二維的,一維可以不寫,
二維第二個一定要寫
int a[]={1,2} 合法。 int a[][4]={2,3,4}合法。
但int a[4][]={2,3,4}非法。
二維數組中的行指針
int a[1][2];
其中a現在就是一個行指針,a+1跳一行數組元素。
搭配(*)p[2]指針
a[0],a[1]現在就是一個列指針。a[0]+1 跳一個數組
元素。搭配*p[2]指針數組使用
還有記住脫衣服法則:
a[2] 變成 *(a+2) a[2][3]變成 *(a+2)[3]再
可以變成 *(*(a+2)+3)
;『伍』 計算機二級C語言考試要怎麼復習
1、理論考試一共60分。
(1)計算機基礎題20分,主要為大學計算機信息技術這門課所學計算機基礎知識,全部為單選題,每題1分。
(2)C語言知識題40分。單選題10分(每題1分),一般考的都是基礎知識;填空題30分,每空1分,其中5分為基礎知識填空,25分為語言運用填空(比如:遞歸、排序、二維數組、單鏈表等知識點讀程序填寫題)。
2、上機考試一共40分,分兩道題。
(1)改錯題(18分):一般為4個錯誤,包括語法錯誤(如數組的聲明與初始化錯誤、函數定義錯誤等)、運行錯誤(如缺少頭文件)、邏輯錯誤(如==寫成=號,給字元數組名賦值等)。
(2)編程題(22分):編程題一般要求編寫兩個函數,涉及到演算法的應用(比如:排序、迴文數問題等)。一般編程題考得最多的是數字處理問題,一般只能平時多積累,多上機編程與調試。
二、如何准備二級C語言考試
其實二級考試目前趨勢:考點越來越廣,而題目難度越來越簡單。
1、重視理論考試中計算機基礎知識的20分題目
該部分佔總分的20%(20分),占理論考試分的33.3%(20/60分)。由於該部分知識是當年計算機一級考試題目,且都是單選題。這些分比C語言部分拿起來更容易,因此,一定要重視計算機基礎知識題,復習時只要將大學計算機信息技術期末考試前老師發的題庫好好做,弄懂了,爭取拿到18-20分。
2、C語言理論知識准備。應有計劃針對考點地做一些往年的二級考試真題。重要的考點包括:遞歸、二維數組、結構體、排序與查找、字元串處理、單鏈表、遞推法、窮舉法、方程求根、靜態局部變數、變數作用域、宏定義與宏替換等。
3、上機考試准備。
(1)應將學校C語言課程實驗中做過的程序全部弄懂,也就是會自己根據題目變化能再編寫出來。
(2)要多找一些往年的真題來調試,不斷體會其中錯誤之處的提示;往年的編程題應該找來自己編編,如果實在編不出來也沒關系,就對照著答案看,看懂了,自己再關上書編寫出來也可以。
(3)平時應該好好積累一些基本功能實現的小程序編寫方法,這些小程序可以稱為「基本動作」,而上考試編程題往往會利用2-3個這樣的基本動作進行有機整合就能編寫出來。這些「基本動作」包括:判斷素數、判斷迴文數、判斷水仙花數、直接選擇排序、二分查找、求反序數、同一數組元素逆置、求某數的(真)因子之和、字元串中插入/刪除字元或子串、單鏈表的建立、單鏈表的查找/檢索、單鏈表的輸出、單鏈表中插入/刪除一個結點、一或二維數組找極值(最大值或最小值)、進制轉換(如:十進制整數轉換成二進制,八、十六進制與二進制互相轉換)、求最大公約數和最小公倍數等。
(4)做改錯題時,一定要利用好上機考試前那幾分鍾,可以好好看看改錯題(注意試卷發給你後不要去看其他的,只看改錯的程序),如果能找出幾個錯誤,應該很好。此時找錯誤應從:函數形參與實參的對應,主函數中字元串或數組定義與初始化部分,字元串賦值、比較等處找錯誤。開始輸入程序時,不要求快,一定要准確,不然因你自己輸入造成的錯誤會給你後面調試程序造成很大麻煩。
(5)編程題編寫的過程:先編寫主函數,因為主函數比較簡單,有些比如打開文件、寫文件、關閉文件部分是固定的,另一按題目要求一步步寫應該很容易寫出主函數;其次再編程自定義函數,編寫時一定要注意這樣的順序:從框架到填寫每個空,這樣大空填成小空,填著填著就編得差不多了。
『陸』 計算機二級C語言做題技巧
2017年計算機二級C語言做題技巧
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。下面是我整理的關於計算機二級C語言做題技巧,歡迎大家參考!
1. 把C++當成一門新的語言學習(和C沒啥關系!真的。)
2. 看《Thinking In C++》,不要看《C++變成死相》;
3. 看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;
4. 不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是集成開發環境,而我們要學的是一門語言;
5. 不要放過任何一個看上去很簡單的我程問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;
6. 會用Visual C++,並不說明你會C++;
7. 學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;
8. 如果不是天才的話,想學編程就不要想玩游戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編游戲的;
9. 看Visual C++的書,是學不了C++語言的;
10. 浮躁的人容易說:XX語言不行了,應該學YY;——是你自己不行了吧!?
11. 浮躁的人容易問:我到底該學什麼;——別問,學就對了;
12. 浮躁的人容易問:XX有錢途嗎;——建議你去搶銀行;
13. 浮躁的人容易說:我要中文版!我英文不行!——不行?學呀!
14. 浮躁的人容易問:XX和YY哪個好;——告訴你吧,都好——只要你學就行銷乎;
15. 浮躁的人分兩種:a)只觀望而不學的.人;b)只學而不堅持的人;
16. 把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;
17. C++不僅僅是支持面向對象的程序設計語言;
18. 學習編程最好的方法之一就是閱讀源代碼;
19. 在任何時刻虧如悉都不要認為自己手中的書已經足夠了;
20. 請閱讀《The Standard C++ Bible》(中文版:標准C++寶典),掌握C++標准;
21. 看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;
22. 別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;
23. 請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24. 不橡銷要停留在集成開發環境的搖籃上,要學會控制集成開發環境,還要學會用命令行方式處理程序;
25. 和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;
26. 請看《程序設計實踐》,並嚴格的按照其要求去做;
27. 不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;
28. C++絕不是所謂的C的“擴充”——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯系得那麼緊密;
29. 請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;
30. 讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;
31. 學習編程的秘訣是:編程,編程,再編程;
32. 請留意下列書籍:《C++面向對象高效編程(C++ Effective Object-Oriented Software Construction)》
《面向對象軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》;
33. 記住:面向對象技術不只是C++專有的;
34. 請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼;
35. 把在書中看到的有意義的例子擴充;
36. 請重視C++中的異常處理技術,並將其切實的運用到自己的程序中;
37. 經常回顧自己以前寫過的程序,並嘗試重寫,把自己學到的新知識運用進去;
38. 不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;
39. C++語言和C++的集成開發環境要同時學習和掌握;
40. 既然決定了學C++,就請堅持學下去,因為學習程序設計語言的目的是掌握程序設計技術,而程序設計技術是跨語言的;
41. 就讓C++語言的各種平台和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;
42. 當你寫C++程序寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請盡快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);
43. 別心急,設計C++的class確實不容易;自己程序中的class和自己的class設計水平是在不斷的編程實踐中完善和發展的;
44. 決不要因為程序“很小”就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;(勿以善小而不為)
45. 每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;
46. 記錄下在和別人交流時發現的自己忽視或不理解的知識點;
47. 請不斷的對自己寫的程序提出更高的要求,哪怕你的程序版本號會變成Version 100.XX;
48. 保存好你寫過的所有的程序——那是你最好的積累之一;
49. 請不要做浮躁的人;
50. 請熱愛C++! ;
『柒』 計算機二級C語言怎麼學
1、首先當然是要看書,這里向大家推薦譚浩強編寫的《C程序設計》,目前是第四版。這本書寫的很細致,適合零基礎學習的新手
2、看完了書當然是要動手練習,剛開始你可以寫最簡單的hallo world,當你成功的寫完一個小程序時,心中會有很大的成就感。
3、如果你發現自己有什麼不懂的,你可以去貼吧詢問,或者到知乎上詢問,相信有很多人會為你熱心的解答的。
4、如果你覺得你自己看書學習效率太低,你可以上網觀看教學視頻,向大家推薦「中國大學」這個網站,在這里你可以向名師學習,並且提出疑問,而且在學習完課程並完成作業後可以獲得該大學的證書。
5、學習編程最快的方法之一就是看別人的源代碼,學習別人是怎樣編程的,對同一個問題別人的思路是什麼?和你的思路有什麼差別?如果你想要進一步提升自己編程的水平,推薦大家去做做ACM的題。想要學好c語言,就要編程,編程,再編程!
『捌』 計算機二級c語言考什麼
『玖』 C語言2級都考什麼啊
C語言二級復習綱要
一、基本知識
1.c是高級語言,結構化程序設計語言
2.程序設計的五個部分
二、變數、常量、表達式
1.常量的值是不能改變的
2.標識符的定義方法
3.c語言中二進制和八進制、十六進制的表示方法
4.算術運算符的優先順序別(++和--放在變數前後的區別)
5.c程序的基本構成結構(由函數構成,函數由基本結構構成)
三、順序結構
1.printf的格式控制串中的格式控制字元和後面的數據在數量上要一一對應,類型要匹配
2.scanf的格式控制串中不要有多餘字元,後面的數據是地址,如果是變數,前面要有&(取地址符)
3.兩個%代表一個%
4.復合語句以及空語句
四、選擇結構
if (表達式) 語句1;
else 語句2;
switch (表達式)
{ case….:……..;
.
.
.
case…:…….;}
1.關系表達式及優先順序別
2.邏輯表達式及優先順序別
3.關系,邏輯,算術優先順序別的問題
4.if後面跟的表達式是判斷真假的,switch是計算值的
5.if表達式後只能跟一個語句,如果要跟多個語句,必須用{ }括起來構成復合語句
6.switch裡面的語句後面一定要跟break才能跳出switch,否則會一致執行下去
7.if語句中,語句1和語句2兩個語句裡面只能有一個語句被執行
五、循環結構
1.三種循環結構及其區別(while和do….while多用於循環次數未知的情況,for用於循環次數已知的情況)
2.循環中的三要素:初始值,結束條件,自增語句
3.break和continue的區別
六、字元
1.字元量是用單引號』引起來的一個字元,用雙引號」引起來的字元是字元串
2.字元量等同於整形量
3.要使用putchar和getchar這兩個函數,就必須在程序的開頭使用#include 「stdio.h」
4.連續輸入
七、函數
1. 函數可以沒有返回值,也可以有返回值,但是只能返回一個值,在函數中,一碰到return語句,函數立即結束,返回調用的地方
2. 函數的返回值也是有類型的,函數的首部要加以說明
3. 函數也必須遵循先定義後使用的原則
4. 函數的實際參數和形式參數必須一一對應,類型也要匹配,同時,參數是變數的,只能進行單向傳遞,即,參數值只能從主函數傳遞給函數,而不能從函數返回主函數,這種稱之為:傳值傳遞
八、指針
1. 存放地址的變數稱為指針
2. 「*」號在數據定義的時候作為指針定義符,在語句中作為間接引用
3. 指針一定要有指向,不能沒有指向,指向空是有意義的]
4. 通過把指針作為函數參數,可以在主函數和函數之間傳遞數據,稱之為:傳地址傳遞
5. 指針每次移動,都移動一個單元,每個單元的長度是由指針的基類型確定的
6. 指向指針的指針是指:這個變數中存放的是指針的地址
7. 函數也可以返回指針,同樣,要在函數首部定義
九、數組
1. 數組是一連串連續的存儲單元的集合,他們是連續的
2. 把數組傳遞給函數,並且希望能改變其值,那麼在函數的首部,用指針定義參數
3. 二維數組是一維數組的特殊形式,可以把二維數組看成每一個一維數組,每個元素都是一個一維數組。
4. 要把二維數組傳遞給函數,並且希望能改變其值,那麼,在函數的首部,用一個行指針{(*sp)[ ]}來定義參數
5. 行指針和指針數組是不同的
行指針 指針數組
十、字元串
1. 字元串其實就是字元數組,一維字元數組可以存放一行字,而二維字元數組可以存放若干行搭亂字
2. 字元串的結束標志是\0,並且包含在字元串長度之內
3. 可以用字元指針指向一個字元串,其實就是指向字元數組的首地址
4. 字元串的輸入輸出使用puts和gets函數
十一、結構
1. 結構是一種特殊的用戶自定義數據類型,他由若干個成員構成
2. 要引用成員,就要看使用什麼來引用。用數據的話:結構體變數名.成員名。是指針的話:結構體指針-〉成員名
3. 成員符優先順序別問題:高於++ ――
4. 傳遞結構體變數給函數,並且希望能改變其值,那麼把該結構體變數的地址傳遞給函數,函數用該類型指針來接受結構體
5. 鏈表:在定義結構體變數的時候,知畢檔在其中增加指向自己的指針,使得這種結構體變數能夠指向同類型結構體變數,由這種變數首尾相連,就能數歷構成鏈表。
6. 鏈表的建立、刪除節點、增加節點,查找節點都要使用動態內存分配malloc和calloc,區別在於前者動態分配一個單元,而後者動態分配一系列單元
十一、文件
1. 文件的打開方法和打開方式及如何關閉
2. 如何對文件進行輸入和輸出
3. 文件指針及其操作函數
『拾』 計算機二級C語言 復習時間要多久才能差不多能過啊
計算機二級C語言復習時間要多久才能差不多能過,這個問題因人而異,如果有一點計算機的基礎肯定比沒有基礎的學得快;有人理解能力強學得就快;有的人考運好,遇到的題全是平時做到過的;有的人用的時間短,自己卻努力好雹。所以,復習多久能考過沒有一個確切的答案。
一般對於計算機二級C語言的復習,2個月就可以充分准備了,但是也是因人而異,首先對於二級的公共知識有一個全面的了解,看一遍書,買一個軟體進行練習,反復練習,認真總結解題方法,多練習就可以了。
基本要求(以當年的考試大綱為准)
熟悉 Visual C++ 6.0 集成開發環境。
掌握結構化程序設計的方法,具有良好的程序設計風格。
掌握程序設計中簡單的數據結構和演算法並能閱讀簡單的程序。
在 Visual C++ 6.0 集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力
考試內容
一、C語言程序的結構
程序的構成,余慧main函數和其他函數。
頭文件,數據說明,函數的開始和結束標志以及程序中的注釋。
源程序的書寫格式。
C語言的風格。
二、數據類型及其運算
C的數據類型(基本類型,構造類型,指針類型,無值類型)及其定義方法。
C運算符的種類、運算優先順序和結合性。
不同類型數據間的轉換與運算。
C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。
三、基本語句
表達式語句,空語句,復合語句。
輸入輸出函數的調用,正確輸入數據並正確設計輸出格式。
四、選擇結構程序設計
用if語句實現選擇結構。
用switch語句實現多分支選擇結構。
選擇結構的嵌套。
五、循環結構程序設計
for循環結構。
while和do-while循環結構。
continue語句和break語句。
循環的嵌套。
六、數組的定義和引用
一維數組和二維數組的定義、初始化和數組元素的引用。
字元串與字元數組。
七、函數
庫函數的正確調用。
函數的定義方法。
函數的類型和返回值。
形式參數與實在參數,參數值傳遞。
函數的正確調用,嵌套調用,遞歸調用。
局部變數和全局變數。
變數的存儲類別(自動,靜態,寄存器,外部),變數的作用域和生存期。
八、編譯預處理
宏定義和調用(不帶參數的宏,帶參數的宏)。
「文件包含」處理。
九、指針
地址與指針變數的概念,地址運算符與友毀帆間址運算符。
一維、二維數組和字元串的地址以及指向變數、數組、字元串、函數、結構體的指針變數的定義。通過指針引用以上各類型數據。
用指針作函數參數。
返回地址值的函數。
指針數組,指向指針的指針。
十、結構體(即「結構」)與共同體(即「聯合」)
用typedef說明一個新類型。
結構體和共用體類型數據的定義和成員的引用。
通過結構體構成鏈表,單向鏈表的建立,結點數據的輸出、刪除與插入。
十一、位運算
位運算符的含義和使用。
簡單的位運算。
十二、文件操作
只要求緩沖文件系統(即高級磁碟I/O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。
文件類型指針(FILE類型指針)。
文件的打開與關閉(fopen,fclose)。
文件的讀寫(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函數的應用),文件的定位(rewind,fseek函數的應用)。