全國計算機二級知識點彙總

算法的有窮性是指:算法程序的運行時間是有限的

算法的空間複雜度是指:算法在執行過程中所需要的臨時工作單元數

算法的時間複雜度是指:算法在執行過程中所需要的基本運算次數(計算工作量)

算法的時間複雜度和空間複雜度沒有直接關係

數據的存儲結構是指:數據的邏輯結構在計算機中的表示

有一個以上根結點的數據結構一定是非線性結構

只有一個根結點的數據結構不一定是線性結構,比如樹只有一個根結點,但是樹不是線性結

循環鏈表和雙向鏈表都是線性結構 線性結構的定義是,有且只有一個根結點,且中間每個

結點有且僅有一個前驅和後繼

線性表即順序表,數據之間是一對一的關係,除首尾,其他所有的元素都首尾相接

棧 只能在棧頂插入數據

支持子程序調用的數據結構是 棧 因爲遞歸調用子程序的時候就是先入後出的線性結構 符

合棧

棧有記憶作用;棧既能順序存儲,又能鏈式存儲

在循環隊列中,隊頭指針可以大於隊尾指針,也可以小於隊尾指針

循環隊列是隊列的一種,而隊列和棧是一種順序存儲結構。

線性表的鏈式存儲結構所需要的存儲空間一般要多於順序存儲結構

二叉樹的性質:

在非空二叉樹中,第 i 層結點總數不超過 2^(i-1)

深度爲 h 的二叉樹最多有 2^h-1 個結點 最少有 h 個結點

對於任意一顆二叉樹,其葉子結點數 N0 = 度數爲 2 的結點總數 N2 + 1

具有 n 個結點的完全二叉樹的深度爲 log2(n+1)

對於完全二叉樹 度爲 1 的結點數只有兩種可能:0 或 1

二分查找的最壞情況爲 log2n 次(這是查找這是查找這是查找!)(以下是排序以下是排序以下是排序!)

冒泡排序、快速排序、直接插入排序在最壞情況下的比較次數是 n(n-1)/2

堆排序在最壞情況下比較次數最少,爲 nlogn

程序既要注重效率又要注重清晰的可讀性結構化程序設計的基本原則(方法):自頂向下、逐步求精、模塊化繼承是指類之間共享屬性和操作的機制

對象的基本特點:分類性、多態性、標識唯一性不是任何對象都必須有繼承性,對象的多態性是指同一個操作可以是不同對象的行爲面向對象程序設計的特徵有 繼承性、多態性、封裝性 不包括類比性

構成計算機軟件的是 程序、數據以及相關文檔

軟件危機的表現:軟件開發的生產率低、軟件質量難以控制、軟件成本不斷提高軟件工程的主要思想是強調在軟件開發過程中需要應用工程化原則

軟件工程的 3 個要素:工具、過程、方法

軟件工程過程的 4 個基本活動:軟件規格說明、軟件開發、軟件確認、軟件演進軟件生命週期的定義階段:可行性研究、計劃制定、需求分析軟件生命週期的開發階段:測試、概要設計、詳細設計、實現軟件設計的基本原則是 抽象、信息隱藏、模塊化、局部化、確定性、一致性、可驗證性

需求分析階段:需求分析、需求評審、需求獲取

需求分析階段可以使用的工具是:DFD、DD、判斷樹、判斷表

在軟件設計中不使用的工具是:程序流程圖,使用的工具有:系統結構圖、PAD 圖、數據

流圖(DFD 圖)

概要設計->系統結構圖

詳細設計->程序流程圖、N-S、PAD等

數據字典(DD)所定義的對象都包含於數據流圖(DFD 圖),數據字典在需求分析階段建立。軟件設計中的模塊劃分應遵循 高內聚、低耦合。

數據流程圖中沒有控制流、程序流程圖中沒有數據流。

軟件測試的目的是儘可能多的發現錯誤,而並非改正錯誤。

檢查軟件產品是否符合需求定義的過程稱爲確認測試黑盒測試方法是邊界值分析、白盒測試方法是邏輯覆蓋軟件測試實施步驟有:集成測試、確認測試、單元測試軟件調試的任務是 診斷並改正程序中的錯誤數據庫管理系統是在操作系統支持下的系統軟件數據庫應用系統的核心問題是數據庫設計

數據庫系統的核心是數據庫管理系統

數據庫管理系統 DBMS 包含數據庫 DB 和數據庫系統 DBS數據庫管理系統中負責數據模式定義的語言是數據定義語言數據庫技術的根本目標是解決數據的共享問題

數據庫設計是指在已有數據庫管理系統的基礎上建立數據庫

E-R 模型(實體-聯繫模型)

在 E-R 模型中,用來表示實體聯繫的圖形是菱形,用來表示實體的圖形是矩形,用來表現屬性的是橢圓。

E-R 圖設計數據數據庫設計的概念設計階段用樹形結構表示實體之間聯繫的模型是層次模型在關係模型中,每一個二維表稱爲一個關係

在滿足實體完整性約束的條件下一個關係中應該有一個或多個候選關鍵字

在學生管理的關係數據庫中,存取一個學生信息的數據單位是記錄負責數據庫中查詢操作的數據庫語言是數據操縱語言(查詢、添加、刪除)運算關係中不改變關係表的屬性個數但能減少元組個數的是:交投影:元組數量不變、屬性減少選擇:元組數量減少、屬性不變

自然連接:提取兩個表中相同的內容然後連接起來

兩個表之間的運算關係 只能是投影和選擇

當對關係 R 和 S 進行自然連接時、要求 R 和 S 含有一個或多個共有的屬

性在數據庫設計中,將 E-R 圖轉換成關係數據模型的過程屬於邏輯設計階

將 E-R 圖轉換爲關係模式時、實體和聯繫都可以表示爲關係數據庫設計的四個階段是:需求分析、概念設計、邏輯設計和物理設計

一個 C 語言程序可以實現多種算法

C 語言源程序可以放在不同的文件中,同一個源程序也可以放在不同的文件中算法正確的程序可以有零個輸入,但不能有零個輸出

每一個 C 語言的文件或者函數都可以單獨編譯,但只有 main 函數纔可以執行

sizeof(int) = 4 || sizeof(double) = 8

C 語言函數可以嵌套調用,但是不是所有的函數之間都可以相互調用,比如說不可以調用

main 函數

規定 C 程序中 不能在函數的內部定義函數塊狀註釋不能嵌套使用

C 語句與機器指令不是一一對應關係

我們所寫的每條 C 語句,經過編譯最終都將轉換成二進制的機器指令

115L 可以用作數據常量,L 表示長整型

在 C 語言中沒有定義邏輯類型,而是用 0 表示假,非零表示真

case 是系統關鍵字,不能用作用戶自定義標識符

常量中 在前面加 0 表示八進制 不能出現 8 和以上的數字 在前面加 0x 表示十六進制

前面不會出現 o 這個字母的

在轉義字符中,\後面只能 0~127 表示 ASCII 碼(即八進制中的0~177) 符號常量是指在程序中通過宏定義用一個符號名來代表一個常量

標識符的長度不能任意長,最多隻能包含 32 個字符

E/e 前後都必須要有數字,且後面必須爲整數

整型數據 10,000 這樣的表示形式是錯誤的

單引號裏面的字符串有 ASCII 碼和轉義字符兩種,ASCII 必須爲八進制或者十六進制 即\

ddd 或者\\xhh

x/y 若左右兩邊都爲 int 型 那麼運算結果也是 int 型

double 類型不能進行取餘操作

&&表示邏輯與

C 語言本身沒有提供輸入輸出語句,但是可以通過調用標準庫函數中提供的輸入和輸出函數來實現輸入和輸出

C 語言中的註釋可以出現在程序中的任何位置,但是不能夾在變量或者關鍵字之間

C 語言的變量在函數開始位置進行定義,也可以在變量使用前位置定義一個浮點數可以和一個整數相加,運算符兩側的運算類型也可以不一致數值常量中不允許夾帶空格

sizeof 爲測試內存的運算符,()爲算數運算符,&&爲邏輯運算符,<>不是運算符

強制轉換類型表達式格式爲(類型名)(表達式),兩個括號都不能省略

關係運算符兩邊的運算對象可以是 C 語言中任意合法的表達式

在 C 語言中,邏輯真值爲任何非零數(!!),邏輯假值爲 0賦值表達式左邊必須爲變量,不能是常量!!

邏輯表達式的運算比較複雜,有短路現象

"邏輯與"和"邏輯或"運算低於關係運算和算術運算,但是"邏輯非"卻高於算術運算

採用 printf 輸出數據,輸出數據都默認爲右對齊,若要左對齊,可以在格式控制的"%"和

寬度之間加一個"-"來實現

printf 的輸出精度由變量的類型決定,與域寬無關賦值語句是一種執行語句,必須放在函數的可執行部分

由 printf輸出的數據都隱含右對齊!!

%8.6f 的意思是 一共連着小數點佔 8 位,小數點後面留 6 位數

字在 printf 語句中用%%輸出一個%符號

負數取餘後結果爲負數:先按照正數時候情況算,然後加上負號

scanf 語句中中間無間隔符,可以空格或者 tab 或者回車隔開 不能用逗號隔開 中間有逗號那必須用逗號隔開輸入

double 型數據 scanf 中要%lf 格式

當 scanf 從鍵盤輸入數據時,按下回車鍵後,scanf 即接受了這一行數據,不能修改

分支結構是根據表達式的結果來判斷流程走向的,不一定是算數表達式

關係運算符的結果只有兩種,0 和 1

在 scanf 函數中的格式控制字符串是爲了輸入數據用的,不會輸出到屏幕上覆合語句也可以是空語句,並沒有規定語句條數

在 scanf 函數的格式字符前可以加入一個正整數指定輸入數據所佔的寬度,但不可以用實數制定小數位的寬度

scanf("格式字符串",輸入項首地址列表) 對於 double 型,輸入時要輸入 l 修飾,否則會產生錯誤的輸入信息,同時輸入項必須爲地址,也可以是保存變量地址的指針變量。

if(表達式) 表達式可以是任意合法的數值

看清 if 語句裏面爲賦值還是爲== 賦值語句 只要非零就爲真 賦值爲 0 就是假

case 後面只能跟常量表達式,不能跟變量表達式

在 switch 語句中並不是必須有 break 和 default 語句,可以根據需要安排是否有這兩個語句

default 後面看有沒有 break;如果沒有 break;那麼後面的 case 還是要執行的

if(表達式);傻逼空語句= =

switch 後面如果是表達式,那麼要加括號。case 後面必須要有一個空格。case 後面也可以是表達式 不一定非要數字

while 語句 條件表達式的執行次數總是比循環體的執行次數多一次

do……while語句 條件表達式的執行次數和循環體的執行次數一樣

while(y—);每次變量 y 的值減 1,直到等於 0 退出循環

continue 是終止本次循環(但還繼續下一輪循環),break 是跳出當前循環體,後面的不執行了,只執行到這一步

if(i == 3)

continue:0,1,2,4,5

break:0,1,2

3005351866QQ更多資料,歡迎加 QQ 羣 627337810

!0 爲 1 非任何非零數的結果爲 0 如!2 爲 0

for(i = 0;i < 8;i++){ } 執行完 for 循環體後 最後一步 i++還是要執行的只

要適當地修改代碼,就可以將 do-while 和 while 相互轉換

break 語句!!只能用在循環體內和 switch 語句內

當 break 出現在循環體中的 switch 語句體內時,只是跳出 switch,而不終止循環體執行函數可以在主函數體內進行聲明然後進行調用若調用子函數的主函數在子函數之前,那麼前面必須有子函數的定義,子函數必須先定義後使用

各函數間沒有主從關係,不能嵌套定義函數

strlen(s)計算字符串長度不包括末尾的結束標誌符'\0'

strcmp(str1,str2) 若 str1 == str2 那麼函數值爲 0 若 str1 > str2 函數值是一個

正數 若 str1 < str2 函數值是一個負數

\n \t \\這些都是轉義字符,只要一個字節長度函數名代表該函數的入口地址

一個自定義函數中可以根據不同情況設置多條 return 語句

int fun(int *p) {return *p;} fun函數返回值是一個整數,因爲返回的是整型指針變量

p 所指向的數據

無論有多少個 return 語句,return 只能執行一次,返回一個函數值

若函數有返回值,必須通過 return 語句返回

C 程序必須由一個或一個以上的函數組成

( )的優先級高於*

static 在函數定義的靜態變量,只需賦值 1 次,即可保存初始值,不需要每次調用時都賦初始值函數的形參和實參分別佔用不同的存儲單元

函數的形式參數屬於局部變量

子函數中可以給全局變量賦值,如在頭文件下所有函數之外定義 int a = 1; 然後 void f

un(){a = 3;}這樣 a 的值在調用 fun()的時候變成了 3

在一個 C 源程序文件中所定義的全局變量,其作用域由具體定義位置和 extern 說明來決定範圍

子函數中的靜態局部變量 a 和主函數中定義的一個 a 是沒有任何關係的

C 語言中形式參數組是指針變量,其數組中元素的個數由傳遞的實參數組決定,因此可以在定義的時候,不給出元素個數的具體說明

在函數內定義的變量是局部變量,而在函數之外定義的變量稱爲外部變量,也就是全局變量。 全局變量可以爲源文件中其他函數所公用,其作用域爲從定義變量的位置開始到源文件結

束。因此只要用戶定義的標識符,全部都有作用域。局部變量可以說明爲 auto、register

以及 static。

動態變量 auto 存儲在內存中的動態存儲區,在程序運行中,只有當調用變量所在的函數時,

系統才臨時給變量分配存儲單元,全局變量 extern 一經定義,系統爲其分配固定的內存單

元;靜態變量 static 編譯系統爲其分配固定的存儲空間;寄存器變量 register 不保存在內

存上,而是直接存儲在 CPU 的寄存器中。

所以說在 C 語言中,只有在使用時才佔用內存單元的變量,其存儲類型是 auto 和 registe

r。

在 C 語言中,有兩種對文件的存儲方式:順序存取和直接存取。

如果以"a"的方式對一個已打開的文件進行寫操作後,則原有文件中內容將保存,新的數據寫在原有內容之後。

如果以"a+"的方式爲讀和寫而打開一個文件,則既可以對文件進行讀,也可以對文件進行寫,而且在讀和寫操作之間不必關閉文件,可以從頭開始讀。

當對文件的讀(寫)操作完成之後,必須將它關閉。

文件指針實際上是指向一個結構體類型的指針,這個結構體中包含如緩衝區的地址、在緩衝

區中當前存取的字符的位置、對文件是"讀"或"寫"、是否出錯、是否已經遇到文件結束標誌等信息。

一般稱文件指針結構體類型名爲 FILE,可以用此類型名來定義文件指針。所以說 文件指針

是程序中用 FILE 定義的指針變量

文件由數據序列構成,可以工程二進制文件或文本文件

調用函數 rewind 把文件內部的位置指針重新指向一個文件的開頭

fread(buffer,size,count,fp); buffer 是數據塊指針,對 fread 來說,它是內存塊的首地址,輸入的數據存入此內存塊中

gets 和 getchar 函數用於從標準輸入設備終端讀入字符串和字符,並非從磁盤文件讀入,f

puts 用於把字符串輸出到文件,fwrite 用於以二進制形式輸出數據到文件。

fp = (filename,"rb+");

fwrite 的調用形式爲:int fwrite(char *pt,unsigned size,unsigned n,FILE *fp); 其

功能是把 pt 所指向的 n*size 個字節輸出到 fp 所指文件中。

ANSIC 提供的 feof 函數的功能是判斷 fp 所指的文件的位置是否已達到文件尾,如果達到

文件尾,則 feof 函數的值爲 1,否則爲 0,表示文件尚未結束。

fputc()是以字符(字節)爲單位的讀寫函數。每次可從文件讀出或向文件寫入一個字符。

使用格式爲 fputc(ch,fp);

EOF 是 stdio.h 庫函數文件中定義的符號常量,其值等於-1.EOF 用作文件結束標誌(!!!)。

在二進制或者文本文件內部有一個位置指針,用以指示文件內部的當前讀寫位置。使用 fge

tc 函數,每讀寫一次,該指針均向後移動。

每個數組包含一組具有同一類型的變量,這些變量在內存中佔有連續的存儲單元

語句 float a[10],x; a =&x;是非法的,a 表示首地址,在程序中爲常量不可更改二維數組的初始化時,允許省略行下標,不允許省略列下標

羣 627337810

在邏輯上,可以把二維數組看成是一個具有行和列的表格或矩陣

int x[2][3]; 數組 x 可以看作是由 x[0]和 x[1]兩個元素組成的一維數組;元素 x[0]可

看作是由 3 個整型元素組成的一維數組;x[0]和 x[1]是數組名,分別代表一個地址常量在定義一維數組時,數組的下標應該是一個確定的整數值。要注意的是在定義二維數組時,

其第一維下標可以省略,但第二維下標不能省略。

不可以 int n = 5; a[n];在 C 語言中,定義以爲數組中 n 不可以是變量,必須是整型常量表達式。

char ss[][20] = {"right?"} 這樣的賦值是錯誤的,定義二維數組後,字符串的存儲不能通過賦值,只能通過初始化或輸入得到

不可以對字符串進行關係運算

兩個連續的雙引號("")是合法的字符串常量

char s[5] = {'a','b','c','d','e'}; 是錯誤的 字符串結束標誌無法存儲

char *s;gets(s); 是錯誤的 要先對指針變量初始化

C 語言中沒有字符串數據存儲類型

字符串數組,是指數組中的每個元素都是一個存放字符串的一維數組

C 語言本身沒有提供對字符串進行整體操作的運算符

sizeof是實際佔用內存,strlen是實際字符個數

字符數組不能直接賦值

字符數組僅僅可以採用定義時初始化以及輸入得到數據,在程序其他部分不允許對其進行賦值。字符串常量中除了實際字符之外還有結束標誌,沒有字符串結束標誌的運行是不安全的

gets(s)函數的作用是將輸入的字符讀入字符串 s,直到遇到回車。而 scanf()函數接收字符串時的結束標誌爲回車或者空格。

char *s; s = "hello";是正確的 而 char *s;s = {"hello"};是錯誤的 定義指針變量

s,通過賦值語句保存字符串常量的地址是可以的,而字符數組決不能賦值,而只能初始化或者輸入。

s[] = "abcde"; s += 2; 因爲 s 表示的是一個地址常量,常量是不可以被賦值的,所以這句話是錯的,程序會出錯預處理命令可以放在程序的任何位置,其有效範圍是從定義開始到文件結束。預處理命令有宏定義、文件包含和條件編譯三類。預處理語句後面不能加分號!!宏定義僅僅只是符號替換,不是賦值語句,因此不做語法檢查;雙引號中出現的宏名不替換; 使用宏定義可以嵌套,即後定義的宏中可以使用先定義的宏。

預處理命令行是在系統對源程序進行編譯之前處理的,不是在程序執行的過程中

在 C語言中,凡是以"#"開頭的行,都稱爲"編譯預處理"。

包含頭文件的#include 命令行是通常書寫在所用源程序文件的開頭,故有時也把包含文件

稱爲頭文件。頭文件名可以由用戶指定,其後綴不一定用".h"

當包含文件修改後,對包含該文件的源程序必須重新進行編譯連接

a = b = ( int *)malloc(sizeof(int));含義爲 申請了一個整型的存儲空間,讓指針 a,b,c

分別指向它,*a = 1; *b = 2; *c = 3;語句的含義爲所申請的整型存儲空間的內容,*c

= 3; 最後執行導致存儲空間的內容爲 3.

ANSIC 標準規定 calloc 函數返回值的類型爲 void*。具體使用格式爲:calloc(n,size)。

該函數用來給 n 個同一類型的數據項分配連續的存儲空間,每個數據項的長度爲 size 個字

節。若分配成功,函數返回存儲空間的首地址;否則返回空。通過調用 calloc 函數所分配

的存儲單元,系統自動置初值 0。

指針變量賦地址值的方式有 3 種方式:通過求地址運算符(&);通過指針變量獲得地址值;通過標準函數獲得地址值。

NULL是 stdio.h頭文件中定義的預定義符。NULL的代碼值爲 0.可以給指針變量賦

NUL L值。例如 p =NULL;賦值語句,稱 p爲空指針。這條語句等價於 p = '\0';或者

p = 0; 這時,指針 p並不是指向地址爲 0的存儲單元,而是具有一個確定的值——

"空"。

在 C 語言中,二維數組名也是一個存放地址常量的指針,其值爲二維數組中第一行的地址。

int x = 0,*p; p = NULL;

float x; float *p = &x;

*(s + 3)表示的是引用數組 a[3].

char ss[][20] = {"right?"} 這樣的賦值是錯誤的

查看原文 >>
相關文章