第一章 C 語言基礎
q 算法就是解決問題的具體方法與步驟
q 流程圖是算法的一種圖形化表示方式
q 程序是爲讓計算機完成某項任務而編寫的逐條執行的指令序列
q C語言的特點包括:結構化的程序設計語言、語句簡潔、功能強大、移植性好
q C程序的基本結構包括:預處理語句、main函數,main函數中的內容使用{ }括起來,每條語句必須用分號結束
q C程序編寫完成後,首先需要通過編譯轉換成目標文件,然後通過連接創建可執行程序,最後纔可以執行該程序
q 可以使用Visual C++ 6.0 IDE編輯和運行C程序
第二章 變量和數據類型
q 常量是在程序中不能被更改的值;而變量在程序中可被更改的,通過變量可以引用存儲在內存中的數據
q C語言中的基本數據類型包括整型、單精度浮點型、雙精度浮點型和字符型
q 整型分爲短整型、整型、長整型,每種整型又可分爲有符號型和無符號型
q 單精度浮點型和雙精度浮點型變量可以存儲實數,但雙精度型取值範圍要比單精度型大的多
q 字符型變量可以存儲單個字符,其值是該字符的ASCII 碼
q 算術運算符提供運算功能,包括+、-、*、/、%、++和--
q printf() 和 scanf() 函數屬於格式輸入輸出函數
q getchar() 和 putchar() 函數用來輸入輸出單個字符的函數
第三章 運算符
q 表達式是操作數和運算符的集合
q 賦值運算符的語法如下:variable = expression
q 關系運算符運用測試兩個操作數之間的關系
q 關系表達式計算出的值始終爲邏輯真(非0)或邏輯假(0)
q 條件結構解決了程序種需要根據不同情況進行判斷的情況
q 條件語句中需要提供判斷條件,該條件要求返回邏輯值(真或假)
q 邏輯運算符用於組合多個條件(&& 和 ||)或者爲某一條件取反(!)
q sizeof運算符用於在程序中測試某一數據類型佔用多少字節
q 在複雜表達式中,通過運算符的優先級確定各種運算符的執行順序
第四章 條件結構
q 多重if結構就是在主if塊的else部分中還包含其他if塊
q 嵌套if結構是在主if塊中還包含另一個if 語句
q C語言規定,嵌套if結構中每個else部分總是屬於前面最近的那個缺少對應的else部分的if語句
q switch結構也可以用於多分支選擇。用於分支條件是整型表達式,而且判斷該整型表達式的值是否等於某些值(可以羅列的),然後根據不同的情況,執行不同的操作
q 條件運算符是 if–else 語句的另一種表現形式
第五章 循環結構 - I
q 循環結構的特點是,在給定條件成立時,重復執行某程序段,直到條件不成立爲止
q while 循環用於在給定條件爲真的情況下重復執行一組操作,while循環先判斷後執行
q do-while循環先執行後判斷,因此循環將至少執行一次
q 在循環中,需要修改循環變量的值以改變循環條件,否則有可能形成死循環
q 循環嵌套必須將內層循環完整的包含在外層循環中
第六章 循環結構 – II
q for 循環與 while 循環類似,屬於先判斷後執行
q for 語句中有三個表達式:表達式1通常用來給循環變量賦初值;表達式2通常是循環條件;表達式3用來更新循環變量的值
q for 語句中的各個表達式都可以省略,但要注意分號分隔符不能省略
q 如果省略表達式2和表達式3需要在循環體內設法結束循環,否則會導致死循環
q break 語句用在循環中時,可以直接終止循環,將控制轉向循環後面的語句
q continue 語句的作用是跳過循環體中剩餘的語句而執行下一次循環
q 嵌套循環時,必須將被嵌套的循環語句完整地包含在外層循環的循環體內
第七章 數組
q 數組是可以在內存中連續存儲多個元素的結構數組中的所有元素必須屬於相同的數據類型
q 數組必須先聲明,然後才能使用。聲明一個數組只是爲該數組留出內存空間,並不會爲其賦任何值
q 數組的元素通過數組下標訪問
q 一維數組可用一個循環動態初始化,而二維數組可用嵌套循環動態初始化
q 二維數組可以看作是由一維數組的嵌套而構成的
第八章 指 針
q 指針是一個變量,它存儲另一個對象的內存地址
q 指針的聲明由基本類型、星號 (*) 和變量名組成
q 爲指針賦值,賦值運算符右側必須是一個地址。如果是普通變量需要在前面加一個取地址運算符 &;如果是另一個指針變量或者是一個數組,不需要加 &運算符
q 運算符 * 用於返回指針指向的內存地址中存儲的值
q 指針的算術運算的含義是指針的移動,將指針執行加上或者減去一個整數值n的運算相當於指針向前或向後移動n個數據單元
q 指針可以執行比較相等的運算,用來判斷兩個指針是否指向同一個變量
q 指向數組的指針,存儲的是數組中元素的地址。數組data的第 (i + 1) 個元素的地址可表示爲 &data[i] 或 (data+i)
第九章 函數
q 函數是程序中的一個相對獨立的單元或模塊,程序在需要時可以任意多次地調用函數來完成特定功能
q 使用函數帶來的好處: 程序更清晰、易維護、分模塊方便設計與開發、提高代碼的重用性
q C語言提供了極爲豐富的內置函數,這些內置函數分門別類地放在不同的頭文件中,要使用這些內置函數,只要在程序前包含相應的頭文件即可
q 自定義函數是用戶在程序中根據需要而編寫的函數
q 函數的結構包括:返回值類型、函數名、參數列表、函數體
q 函數原型說明以便向編譯器指出該函數使用什麼樣的格式和語法
q 函數調用時程序控制流將轉向被調函數,被調函數執行結束時,控制流返回主調函數
q return 語句用於向調用函數返回值
內置函數 |
頭文件 |
用途 |
double sqrt(double x) |
math.h |
計算x的平方根 |
double pow(double x, double y) |
計算x的y次冪 | |
double ceil(double x) |
求不小於x的最小整數,並以double形式顯示 | |
double floor(double x) |
求不大於x的最大整數,並以double形式顯示 | |
int toupper(int x) |
ctype.h |
如果x爲小寫字母,則返回對應的大寫字母 |
int tolower(int x) |
如果x爲大寫字母,則返回對應的小寫字母 | |
int rand(void) |
|
產生一個隨機數 |
void exit(int retval) |
終止程序 |
第十章 帶參數的函數
q 根據變量的作用域可以將變量劃分爲:局部變量和全局變量
q 根據變量的存儲類型(決定生存期)將變量劃分爲: 自動變量、寄存器變量、靜態變量、外部變量
q 靜態局部變量的生存期爲整個源程序,但其作用域爲定義該變量的函數
q 靜態全局變量的生存期爲整個源程序,其作用域爲定義該變量的源文件
q 採用傳值調用方式時,在被調用函數中改變形參的值,只改變其副本值,而不會影響調用函數中實參值
q 採用引用調用方式時,傳遞的是變量地址值,這樣在被調函數中,對形參操作實際上操作的是實參本身
q 數組作爲函數傳遞時,實際採用引用調用方式
第十一章 字符串
q 字符串與字符數組的區別是字符串的末尾有一個空字符'/0'以標識字符串結束
q 用scanf()語句讀入字符串時不允許輸入中存在空格
q gets() 和 puts() 函數分別用於字符串的輸入和輸出
q 在 string.h 中定義了很多字符串處理函數函數,比較常用的有:strcpy()、strcat()、strcmp() 和 strlen()
q 假如程序裏需要一組字符串,一種常用的做法就是用一個字符指針數組表示它們
q 字符串可以作爲參數,函數傳遞機制同數組作爲參數,爲引用方式
第十二章 結構
q 結構是由若干數據項組合而成的複雜數據對象,這些數據項稱爲結構的成員。
q 定義一個結構,需要給出各個成員的類型及名稱。
q 結構定義僅描述了一個結構的形式。要在程序裏使用結構,需要聲明結構變量。
q 訪問結構成員的操作要用圓點運算符(.),一般形式爲:結構變量名.成員名。
q 可以通過指向結構的指針訪問結構成員,常用形式爲:結構指針變量->成員名。
q 數組元素的類型爲結構的數組稱爲結構數組。
q 結構作爲函數參數有三種不同的方式:結構成員的值傳遞給函數參數、整個結構作爲參數傳遞、結構指針變量做函數的參數。