當前位置:首頁 » 編程語言 » c語言期末復習及重要知識點
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言期末復習及重要知識點

發布時間: 2022-10-23 00:41:15

c語言知識點有哪些

c語言知識點有:

1、C語言程序是由多個函數構成的。

2、每個C語言程序中有且只有一個main函數。

3、C語言不使用行號,無程序行的概念。

4、程序中可使用空行和空格。

5、C語言程序格式常用鋸齒形書寫格式。

6、C語言程序中可加任意多的注釋,注釋形式/*……*/,並且注釋形式不能嵌套,即不能注釋裡面又有另一個注釋。//行注釋是C++當中新增加的內容。

7、引用C語言標准庫函數,一般要用文件包含預處理命令將其頭文件包含進來。

8、用戶自定義的函數,必須先定義後使用。

9、變數必須先定義後使用。

10、變數名,函數名必須是合法的標識符,標識符習慣用小寫字母,C語言是字母大小寫敏感的語言。

11、不能用關鍵字來命名變數和函數。

12、C語言的語句都是以分號結尾的。

13、計算機中使用的進制數是二進制數,而不是十進制數,因為二進制只有兩個數碼,運算簡單便於硬體實現,同時二進制便於邏輯運算。

將十進制數轉換成二進制數應分為整數部分轉換和小數部分轉換,整數部分轉換可採用基數除法來實現,小數部分轉換可採用基數乘法來實現。八進制和十六進制也是C語言中經常表示數據的進制,因為它們與二進制之間的轉換非常方便,但要注意他們不是計算機中使用的進制。

14、機器數的表示形式有原碼、反碼和補碼幾種形式,計算機中通常使用補碼的形式來表示一個數,因為補碼運算可以連同符號位一起參與運算,這便於運算器的設計與實現。

⑵ 計算機二級c語言常見知識點

計算機二級c語言常見知識點

資料庫是為了更容易地組織、存儲和檢索大量數據。資料庫由資料庫管理系統管理,通過資料庫模型和查詢語言來存儲、創建、維護和搜索數據。下面是我整理的關於計算機二級c語言常見知識點,歡迎大家參考!

計算機二級c語言常見知識點 篇1

文件

【考點1】文件類型指針

文件指針是一個指向結構體類型的指針,定義格式為:FILE *指針變數名。在使用文件時,都需要先定義文件指針。

【考點2】文本文件與二進制文件

文本形式存放的是字元的ASCII碼,二進制形式存放的是數據的二進制。例如「100」如果是文本形式就是存儲』1』、 』0』、 』0』三個字元的ASCII碼(00110001 00110000 00110000),如果是二進制形式就把100轉化成二進制(01100100)。

【考點3】打開文件

文件的打開形式:

FILE *fp;

fp=fopen(「c:lab.c」,」rb」);。

fopen函數的前面一部分為文件名,後面一部分為文件的使用方式。其中r代表讀,w代表寫,a代表添加,b代表二進制位的。

【考點4】文件函數

判斷文件結束feof函數,移動文件指針位置fseek函數,獲得文件位置ftell函數,文件位置移到開頭rewind函數,文件字元輸入輸出fgetc函數和fputc函數,文件輸入輸出fscanf函數和fprintf函數,文件字元串輸入輸出fgets函數和fputs函數,讀寫二進制文件fread函數和fwrite函數。

對C語言的深入探討

【考點1】編譯預處理

凡以#開頭的這一行,都是編譯預處理命令行,編譯預處理不加分號,不佔運行時間。宏替換僅是簡單的文本替換,如#define f(x) (x)*(x)和#define f(x) x*x替換f(2+2)時就有區別,前者展開為(2+2)*(2+2),後者為2+2*2+2。

如果源文件f2.c中有#include"f1.c"可以理解為把源文件f1.c原樣包含到f2.c中,使f1.c和f2.c融合到一起成為一個C程序編譯。所以一個C程序必有主函數,但一個C源文件未必有主函數。

【考點2】標識符作用域

局部變數是在函數內或復合語句內定義的變數,作用域為定義它的函數內。局部變數有三種類型:自動auto,寄存器register和靜態static。

自動變數隨著函數的使用與否創建消失;寄存器變數分配在cpu中,沒有內存地址;靜態變數佔用固定存儲單元,在程序執行過程不釋放,直到程序運行結束。

全局變數是在函數外定義的變數,作用域從定義它的位置到整個源文件結束為止,生存期為整個程序運行期間。全局變數都是靜態變數。

【考點3】動態存儲分配

malloc(size)用來創建size個位元組的連續存儲空間,返回值類型為void *型。malloc函數常用於動態創建鏈表結點,如int *p; p=(int *)malloc(sizeof(int));。

calloc(n,size)創建n個同一類型的連續存儲空間,可以理解為n個malloc。

int *p; p=(int *) calloc (10,sizeof(int));。p指向首地址。

free(p)釋放動態分配的存儲單元。

【考點4】main函數的參數

還有main(int argc,char **argv) {}

這種含有參數的題目,是很呆板的題目。第一個參數是表示輸入的字元串的數目,第二個參數是指向存放的字元串。

【考點5】函數指針

函數指針的用法(*f)()記住一個例子:

int add(int x, int y)

{....}

main()

{ int (*f)();

f=add;

}

賦值之後:合法的調用形式為

1、add(2,3);

2、f(2,3);

3、(*f)(2,3);

計算機二級c語言常見知識點 篇2

【考點1】函數的定義

函數:是具有一定功能的一個程序塊;是C 語言的基本組成單位。

函數的首部為:函數類型 函數名(類型1 形參1,類型2 形參2,……)。在函數定義中不可以再定義函數,即不能嵌套定義函數。函數類型默認為int型。

【考點2】庫函數

調用C語言標准庫函數時要包含include命令,include命令行以#開頭,後面是「」或<>括起來的後綴為」.h」的頭文件。以#開頭的一行稱為編譯預處理命令行,編譯預處理不是C語言語句,不加分號,不佔運行時間。

【考點3】函數的返回值

函數通過return語句返回一個值,返回的值類型與函數類型一樣。return語句只執行一次,執行完或函數體結束後退出函數。

【考點4】函數的聲明

函數要「先定義後調用」,或「先聲明再調用後定義」。函數的聲明一定要有函數名、函數返回值類型、函數參數類型,但不一定要有形參的名稱。

【考點5】函數的調用

程序從上往下執行,當碰到函數名後,把值傳給調用函數,當程序得到了返回值或調用函數結束,再順序往下執行。

【考點6】函數的參數及值傳遞

形式參數簡稱形參,是定義函數時函數名後面括弧中的參數。實在參數簡稱實參,是調用函數時函數名後面括弧中的`參數。實參和形參分別占據不同的存儲單元。實參向形參單向傳遞數值。

「傳值」與「傳址」的區別:傳數值的話,形參的變化不會改變實參的變化。傳地址的話,形參的變化就有可能改變實參所對應的量。(考試的重點)

函數的參數,返回數值(示意圖)。

【考點7】函數的遞歸調用

函數直接或間接地調用自己稱為函數的遞歸調用。遞歸調用必須有一個明確的結束遞歸的條件。在做遞歸題時可把遞歸的步驟一步步寫下來,不要弄顛倒了。

【考點8】要求掌握的庫函數

sqrt()算術平方根函數,fabs()絕對值函數,sin()正弦函數,sin(3.14159/180*30);,pow()冪函數,23是由pow(2,3)表示的。

;

⑶ 大一期末C語言考試的重點是什麼

C語言的初學者,大學考試試卷有四種題型:一是選擇題,二是理論題,三是程序填空題,四是編程題。選擇題比較綜合,理論題純粹是書本上的是答案(如:一些語法等等),至於程序填空題和編程題,要多去做一些題(尤其是書本上的題)。。。要想學好,就要多練,看程序是沒用的。。

⑷ 計算機c語言基礎知識

計算機c語言的特性

C語言是世界上最流行、使用最廣泛的高級程序設計語言之一。在操作系統和系統使用程序以及需要對硬體進行操作的場合,用C語言明顯優於其它高級語言,許多大型應用軟體都是用C語言編寫的。C語言的主要特性有以下幾種:

1、C是高級語言:它把高級語言的基本結構和語句與低級語言的實用性結合起來。

2、C是結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。

3、C語言功能齊全:具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。

4、C語言適用范圍大:適合於多種操作系統,如Windows、DOS、UNIX等等;也適用於多種機型。

5、C語言應用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性。

6、C語言創始人D.M.Ritchie6、C語言文件由數據序列組成:可以構成二進制文件或文本文件常用的C語言IDE有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc,xcode等。

計算機c語言的語法結構

1.順序結構

順序結構的程序設計是最簡單的,只要按照解決問題的順序寫出相應的語句就行,它的執行順序是自上而下,依次執行。順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算,輸出三步曲的程序就是順序結構。

2.選擇結構

選擇結構的執行是依據一定的條件選擇執行路徑,而不是嚴格按照語句出現的物理順序。選擇結構的程序設計方法的關鍵在於構造合適的分支條件和分析程序流程,根據不同的程序流程選擇適當的選擇語句。

3.循環結構

循環結構可以減少源程序重復書寫的工作量,用來描述重復執行某段演算法的問題,這是程序設計中最能發揮計算機特長的程序結構,C語言中提供四種循環,即goto循環、while循環、do while循環和for循環。

4.模塊化程序結構

C語言的模塊化程序結構用函數來實現,即將復雜的C程序分為若干模塊,每個模塊都編寫成一個C函數,然後通過主函數調用函數及函數調用函數來實現一大型問題的C程序編寫,因此常說:C程序=主函數+子函數。因此,對函數的定義、調用、值的返回等中要尤其注重理解和應用,並通過上機調試加以鞏固。

計算機c語言基礎知識

【知識點1】C程序

C語言程序結構有三種: 順序結構 , 循環結構(三個循環結構), 選擇結構(if 和 switch)

【知識點2】main函數

每個C語言程序中main 函數是有且只有一個。讀程序都要從main()入口, 然後從最上面順序往下讀(碰到循環做循環,碰到選擇做選擇)。

【知識點3】存儲形式

計算機的數據在電腦中是以二進制的形式保存。最低的存儲單元是bit(位),位是由為 0 或者1構成。 byte 是指位元組, 一個位元組 = 八個位。數據存放的位置就是它的地址。

【知識點4】注釋

是對程序的說明,可出現在程序中任意合適的地方,注釋從「/*」開始到最近一個「*/」結束,其間任何內容都不會被計算機執行,注釋不可以嵌套。

【知識點5】書寫格式

每條語句的後面必須有一個分號,分號是語句的一部分。一行內可寫多條語句,一個語句可寫在多行上。

【知識點6】標識符

合法的用戶標識符考查:

合法的要求是由字母,數字,下劃線組成。有其它元素就錯了。

並且第一個必須為字母或則是下劃線。第一個為數字就錯了。

C語言標識符分如下3類

(1)關鍵字。它們在程序中有固定的含義,不能另作他用。如int、for、switch等。

(2)預定義標識符。預先定義並具有特定含義的標識符。如define、include等。

(3)用戶標識符。用戶根據需要定義的標識符,符合命名規則且不與關鍵字相同。

關鍵字不可以作為用戶標識符號。main define scanf printf 都不是關鍵字。迷惑你的地方If 是可以做為用戶標識符。因為If 中的'第一個字母大寫了,所以不是關鍵字。

【知識點7】實型數據

實型數據的合法形式:小數形式和指數形式。掌握判定指數形式合法性。

2.333e-1 就是合法的,且數據是2.333×10-1。

考試口訣:e 前e 後必有數,e 後必為整數。

【知識點8】字元

字元數據的合法形式::

'1' 是字元佔一個位元組,"1"是字元串占兩個位元組(含有一個結束符號)。

'0' 的ASCII 數值表示為48,'a' 的ASCII 數值是97,'A'的ASCII 數值是65。

字元型和整數是近親:

char a = 65 ;

printf(「%c」, a); 得到的輸出結果:a

printf(「%d」, a); 得到的輸出結果:65

一般考試表示單個字元錯誤的形式:'65' "1"

字元是可以進行算術運算的,記住: '0'-0=48

大寫字母和小寫字母轉換的方法: 'A'+32='a' 相互之間一般是相差32。

【知識點9】整型數據

整型一般是兩個位元組, 字元型是一個位元組,雙精度一般是4 個位元組:

考試時候一般會說,在16 位編譯系統,或者是32 位系統。碰到這種情況,不要去管,

一樣做題。掌握整型一般是兩個位元組, 字元型是一個位元組,雙精度一般是4 個位元組就可以了。

【知識點10】轉義字元

轉義字元的考查:

在程序中 int a = 0x6d,是把一個十六進制的數給變數a 注意這里的0x 必須存在。

在程序中 int a = 06d, 是一個八進制的形式。

在轉義字元中, 』x6d』 才是合法的,0 不能寫,並且x 是小寫。

『141』 是合法的, 0 是不能寫的。

『108』是非法的,因為不可以出現8。

【知識點11】算術運算

算術運算符一共有+、—、*、/、%這五個。%符號兩邊要求是整數。不是整數就錯了。

三種取整丟小數的情況:不是四捨五入是舍掉小數部分。

1、int a =1.6;

2、(int)a;

3、1/2; 3/2;

【知識點12】強制類型轉換

將一個運算對象轉換成指定類型,格式為(類型名)表達式

一定是 (int)a 不是 int(a),注意類型上一定有括弧的。

注意(int)(a+b) 和(int)a+b 的區別。前是把a+b 轉型,後是把a 轉型再加b。

【知識點13】賦值

是表達式就一定有數值。

賦值表達式:表達式數值是最左邊的數值,a=b=5;該表達式為5,常量不可以賦值。

復合賦值運算符:注意:a*=m+2 是 a=a*(m+2)

自加、自減表達式:假設a=5,++a(表達式的值為6), a++(表達式的值為5);

j=a++;等價於j=a;a=a+1; 而j=++a;等價於a=a+1;j=a;。

考試口訣:++在前先加後用,++在後先用後加。

【知識點14】逗號運算

逗號表達式:優先順序別最低; 表達式的數值逗號最右邊的那個表達式的數值。

(2,3,4)的表達式的數值就是4。

【知識點15】數制轉換

一定要記住二進制 如何轉換成十進制。

八進制是沒有8 的,逢8 進1,018 的數值是非法的。

【知識點16】位運算

會有一到二題考試題目。

C語言提供6種位運算符:按位求反~,按位左移<<,按位右移>>,按位與&,按位異或|,按位或^。

總的處理方法:幾乎所有的位運算的題目都要按這個流程來處理(先把十進制變成二進制再變成十進制)。

異或運算的規則:0異或1得到1,0異或0得到0,1異或1得到0。可記為「相同為0,不同為1」。

在沒有捨去數據的時候,<<左移一位表示乘以2;>>右移一位表示除以2。

⑸ c語言有哪些基礎知識

C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。

C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。

(5)c語言期末復習及重要知識點擴展閱讀:

C語言的字元串其實就是以''字元結尾的char型數組,使用字元型並不需要引用庫,但是使用字元串就需要C標准庫裡面的一些用於對字元串進行操作的函數。

它們不同於字元數組。使用這些函數需要引用頭文件<string.h>。

在C語言中,輸入和輸出是經由標准庫中的一組函數來實現的。在ANSI C中,這些函數被定義在頭文件<stdio.h>;中。

⑹ C語言的重要內容是什麼

清華譚浩強編《c語言程序設計》一書中語言最重要的知識點是:運算符、數據類型、常量與變數、字元串、函數、指針等。

在這本書中,保留了《C程序設計》一書的特點:體系合理、邏輯清楚、例題豐富、通俗易懂。同時又根據C語言新標準的規定,對該書進行了改寫,使之符合當前的需要。

(6)c語言期末復習及重要知識點擴展閱讀:

C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著跨平台的特性,以一個標准規格寫出的C語言程序可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。

⑺ C語言的知識點有哪些

1、C語言是一門程序的基礎語言,知識點有很多,如果只是應付考試的話,把函數、數組和指針學會了就基本沒有問題了,還有就是幾種結構按是基礎,也是學習必不可少的。C++是在C語言的基礎上而法發展起來的,他繼承了C語言的大多數編程風格,現在市場上對C語言要求的人很少,軟體公司現在都是要C++/java等,極少數招收C語言的,不過學好C++的前提是學好C。

2、非語言部分:
1)首先是基礎數學,簡單的運算需要會,加減乘除問題不大
2)邏輯數學,分析解決問題邏輯需要清晰有條理
3)線性代數,數據結構中使用
4)概率統計

⑻ 計算機二級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語言》知識點歸納(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)