C語言年度知識總結

2021-09-07 05:18:25 字數 3682 閱讀 3156

c語言年度知識總結

c資料型別

基本資料型別又有整形,實行和字元型。由於型別不同型別的資料在記憶體中占用不同大小的儲存單元,不同型別的資料的表現形式和可參與的運算子不同,所以使用變數前必須先定義,也有助於在程式中對它們按不同方式和要求進行處理。各種資料和運算子及運算子之間的優先性和結合行等構成了嚴謹的表示式。

簡單的算術運算和表示式

對資料的處理依賴於各種運算子,常見算術運算子有加(+)、減(—)、乘(*)、除(/)、求餘(%)等。算術運算子(結合性左結合)的優先順序高於賦值運算子(結合性右結合)。在後面的迴圈結構中會用到增一和減一運算子,實現對迴圈條件的控制。

在自動型別轉換過程中,將取值範圍小的型別轉換為取值範圍大的型別是安全的,反之則可能造成資料資訊丟失。如果將兩個資料全部定義為整形,例 int a=5,b=2; a/b=2運算結果仍為整數,可見這種方法並不能真正獲得a與b相除後的小數部分的值。為獲取小數值就要用到強制型別轉換,先用(float)a將a的值強轉為實型資料,便實現要求。強制型別轉換的優點在於只將變數的值強轉而不改變變數的資料型別。

在程式中往往會直接使用一些常數,稱之為幻數。為提高程式可讀性和可維護性,我們常把幻數定義為巨集常量或const常量。例如π,我們可以這樣定義:#define pi 3.14159 (行末不加分號,巨集名後不加「=」)或const double pi=3.14159(行末加分號,巨集名後有「=」)。

在數學中擁有豐富的數**算符來完成數學表示式,同樣在c語言中也有豐富的標準數學函式來完成**中的表示式。常用的有:sqrt開根、fabs求絕對值、ceil向上取整負數去掉小數部分、floor向下取整、round就近取整。

鍵盤輸入和螢幕輸出

單個字元的輸入和輸出。字元常量時用單引號括起來的乙個字元,例如』a』是字元常量,a是乙個識別符號。c語言還引用了轉義字元,它是以(\)為開頭的字串行,具有特殊的含義。例如』\n』就是一種轉義字元,用於控制輸出時的換行處理。須注意的是,當轉義序列出現在字串中時,是按單個字元計數的。在ascii碼中每個字元都有對應的編碼。

字元的輸入和輸出。getchar()和putchar()是c標準函式庫中專用於字元輸入輸出的函式。例如:

char ch

ch=getchar();/從鍵盤輸入乙個字元,按回車鍵結束,該字元被存入變數ch/

putchar(ch);/在螢幕上顯示變數ch中的字元/

注意的是getchar()函式沒有引數,因此不能寫成getchar(ch)。

資料的格式化輸入函式scanf()與資料的格式化輸出函式printf().使用時要注意各種格式轉換說明符和格式修飾符。若函式scanf()的格式控制字串中存在除格式說明以外的其他字元,那麼使用者在輸入時也要從鍵盤原樣輸入這些字元。應用:scanf(「 %c」,&b)在%加空格可在使用者輸入空格時將空格讀入。為緩衝回車符可加getchr()將回車符讀入。

選擇控制結構

常用的條件語句有:單分支控制條件的語句,當條件成立執行a操作否則執行後續操作;雙分支條件控制的條件語句,if和else兩種情況非此即彼;多路選擇的switch語句,用於對多種情況的選擇,switch(離散數值);c語言中對邏輯關係的表達,依賴於邏輯運算子,注意在數學上正確的表示式在c語言邏輯上不一定正確。

迴圈控制結構與迴圈語句

學完迴圈後,去做openjudge上的題發現基本每道題都會用到迴圈控制結構。順序結構、選擇結構和迴圈結構是用於結構化程式設計的·三種基本結構,任何複雜問題都可以用這三種基本結構來程式設計實現。今天我就總結一下迴圈控制結構。

c語言提供了for、while、do-while三種迴圈語句來實現迴圈結構。被重複的語句序列被稱為迴圈體。

while語句和do-while語句

一般表現形式 while(迴圈控制條件) do-while

花括號內為迴圈體 }花括號內為迴圈體

while和do-while看上去類似,只是迴圈條件位置不同。實際上whlie和do-while分別代表當型迴圈和直型迴圈兩種不同的迴圈結構。對於至少迴圈一次的語句序列,我們常常採用直型迴圈。

for語句

for語句屬於當型迴圈結構,一般形式:

for(初始化表示式;迴圈控制表示式;增值表示式)

for語句中三個表示式之間的分隔符是分號(有且僅有兩個,既不能多,也不能少)。初始化表示式和增值表示式可以寫在其他地方但是兩個分號是必須寫在括號內的。

計數控制的迴圈和條件控制迴圈

迴圈次數事先已知的迴圈稱為計數控制的迴圈。適用於數值改變時,利用數值控制迴圈,習慣上利用for語句編寫計數控制的迴圈更為簡潔方便。迴圈次數事先未知的迴圈通常是由乙個條件控制的,稱為條件控制的迴圈。此時用while語句和do-while語句程式設計更為方便。

巢狀迴圈

迴圈體中包含另乙個迴圈語句的迴圈稱為巢狀迴圈,while,do-while,for這三種迴圈均可相互巢狀。在畫矩形和金裱花的題目中我常常使用巢狀迴圈來控制行和列的輸出。

for ( i=0; ;i++)/控制行/

}流程的轉移控制

goto語句 goto 語句標號;

語句標號:

常與if(表示式)連用,如if(表示式) goto語句標號;不過最好不要使用goto語句。

break語句和continue語句

continue語句與break語句都可以對迴圈語句進行內部控制,當在迴圈體中遇到continue語句時,程式將跳過continue語句後面尚未執行的語句,開始下一次迴圈。而迴圈體遇到break語句時,迴圈終止,從迴圈後的第一條語句。

備註!!!在巢狀迴圈的情況下,break 語句和continue 語句只對包含它們的最內層的迴圈語句起作用,不能用break語句跳出迴圈。

窮舉法

窮舉簡單地說就是通過嘗試問題的所有可能來找到最終答案,在找到最終答案後常採用break語句退出迴圈,或用exit()來直接結束程式的執行。可讀性更好的方法是使用標誌變數例如將find賦值為假,迴圈判斷條件置為真「!find」。

一維陣列的定義和初始化

在輸入較多資料時,如果每個資料都單獨使用scanf或cin輸入將浪費很多時間也不便於後續對這些資料的使用。解決這些問題就要用到陣列。陣列是一組具有相同型別的變數的集合。

使用乙個統一的名字來標識這組相同型別的資料,這個名字稱為陣列名,每個資料項稱為陣列元素,在c程式中通過陣列的下標實現對陣列元素的訪問。

int score[5];int表示陣列的基型別,表示陣列元素的型別,score表示陣列名,需要注意的是。c語音中陣列的下標都是從0開始的。千萬注意不要越界。

為了增強程式的適應性,常常把幻數定義為巨集常量或conest常量,注意定義陣列時一定要用常量來定義陣列的大小!!!

定義但未進行初始化的陣列仍是隨機數,對一維陣列初始化:

int score[5]=或int score[ ]=

二維陣列的定義和初始化

先做乙個與一維陣列定義格式的對比:

一維陣列 型別 陣列名[元素個數];二維陣列 型別 陣列名[第一維長度][第二維長度]

第一維長度常常可以表示行數,第二維陣列常常表示列數,用二維陣列可對行和列中的資料進行處理。注意,第一維長度宣告可以省略,但是第二維陣列長度宣告不可以省略!!!

常採用特殊值來作為結束的標記值,這種迴圈控制也稱為標記控制的迴圈。

C語言知識總結

分析靜態儲存區 堆 棧 靜態儲存區 編譯時由編譯器分配,由系統釋放,其存放在的是全域性變數 static變數和常量。對 由程式設計師自己分配釋放,若不手動釋放程式結束才釋放。若對分配空間不用時不釋放而一味分配,則可能造成記憶體洩露,其容量取決於虛擬記憶體,較大。區別 1 棧是由高位址向低位址擴充套件...

C語言知識總結

第一章 1 程式語言的發展 機器語言 組合語言 高階語言 2 軟體開發的基本步驟 分析問題,激勵數學模式 確定資料的結構和演算法 程式語言 除錯程式 3 演算法 特徵 有窮性 確定性 有效性 有零個或多個輸入 有乙個或多個輸出 分類 數值運算演算法和非數值運算演算法 4 編碼實現 a.編寫源 b.將...

C語言知識總結(一)

第一章 概述 1 c語言的基本知識 1.1 c語言的執行步驟 編輯 程式 的錄入,生成源程式 c 編譯 語法分析查錯,翻譯生成目標程式 obj 語法或邏輯錯誤,從第乙個開始改,變數定義,語句格式,表示式格式等 鏈結 與其他目標程式或庫鏈結裝配,生成可執行程式 exe 執行1.2 main函式的基本知...