本書共10章,首先讓讀者對C語言、C語言程序設(shè)計進行整體認知,隨后在實踐中了解數(shù)據(jù)類型、常量、變量、運算符及表達式以及C語言的基本語句,逐步引入程序的三大結(jié)構(gòu)、函數(shù)實現(xiàn)模塊化、數(shù)組批量存儲數(shù)據(jù)、指針優(yōu)化程序性能、結(jié)構(gòu)體存儲復雜數(shù)據(jù)和文件完成數(shù)據(jù)的永久存儲。
1 初識C語言
1.1 程序設(shè)計語言概述
1.2 C語言的發(fā)展及其特征
1.3 一個簡單的C語言示例
1.4 程序設(shè)計語言的工作流程
1.5 C語言程序的開發(fā)環(huán)境及步驟
本章小結(jié)
實戰(zhàn)演練1
2 數(shù)據(jù)類型、運算符與表達式
2.1 C程序中的基本符號分類
2.2 C語言的數(shù)據(jù)類型
2.3 常量
2.4 2量
2.5 運算符及表達式
2.6 數(shù)據(jù)類型轉(zhuǎn)換
本章小結(jié)
實戰(zhàn)演練2
3 簡單C語言程序設(shè)計
3.1 C語言基本語句
3.2 基本輸入/輸出操作的實現(xiàn)
本章小結(jié)
實戰(zhàn)演練3
4 程序的控制結(jié)構(gòu)
4.1 引出程序基本結(jié)構(gòu)的原因
4.2 算法及其表述
4.3 順序結(jié)構(gòu)程序設(shè)計
4.4 分支結(jié)構(gòu)程序設(shè)計
4.5 循環(huán)結(jié)構(gòu)程序設(shè)計
4.6 流程的轉(zhuǎn)移控制
本章小結(jié)
實戰(zhàn)演練4
5 函數(shù)
5.1 函數(shù)
5.2 函數(shù)的定義、調(diào)用和聲明
5.3 函數(shù)的嵌套調(diào)用和遞歸調(diào)用
5.4 數(shù)組作為函數(shù)參數(shù)
5.5 2量的作用域和存儲類型
5.6 函數(shù)封裝和預處理指令
本章小結(jié)
實戰(zhàn)演練5
6 數(shù)組
6.1 為什么要引入數(shù)組
6.2 一維數(shù)組
6.3 二維數(shù)組
6.4 字符數(shù)組
6.5 向函數(shù)傳遞數(shù)組
本章小結(jié)
實戰(zhàn)演練6
7 指針
7.1 指針概述
7.2 指針和數(shù)組間的關(guān)系
7.3 返回指針值的函數(shù)
7.4 指針數(shù)組
7.5 指向函數(shù)的指針
7.6 指向指針的指針
7.7 帶參數(shù)的main()
本章小結(jié)
實戰(zhàn)演練7
8 結(jié)構(gòu)體和共用體
8.1 為什么引入結(jié)構(gòu)體和共用體
8.2 結(jié)構(gòu)體類型與結(jié)構(gòu)體2量
8.3 結(jié)構(gòu)體數(shù)組
8.4 結(jié)構(gòu)體與函數(shù)
8.5 結(jié)構(gòu)體指針
8.6 共用體
8.7 動態(tài)數(shù)據(jù)結(jié)構(gòu)——鏈表
本章小結(jié)
實戰(zhàn)演練8
9 文件操作
9.1 計算機中的流
9.2 文件
9.3 文件的打開與關(guān)閉
9.4 文件的讀寫
9.5 文件的定位與隨機讀寫
本章小結(jié)
實戰(zhàn)演練9
10 C程序設(shè)計中常出現(xiàn)的問題及解決方案
10.1 問題1:使用2量之前未對其初始化或賦值
10.2 問題2:忘記考慮數(shù)值溢出的可能
10.3 問題3:沒有使用sizeof()獲得類型或2量的字長
10.4 問題4:假定類型取值范圍
10.5 問題5:總誤認為兩個整數(shù)的運算自動得出浮點數(shù)的結(jié)果
10.6 問題6:忘記預先判斷除數(shù)是否為0
10.7 問題7:混淆“&,|”與“&&,||“
10.8 問題8:使用依賴編譯器求值順序的語句
10.9 問題9:使用依靠算符優(yōu)先級的表達式
10.10 問題10:表達式太過冗長
10.11 問題11:將“=”錯誤地當作“==”使用
10.12 問題12:用“==”比較兩個浮點數(shù)
10.13 問題13:忽略do-while和while的循環(huán)條件
10.14 問題14:printf()和scanf()中格式控制字符串與參數(shù)類型不匹配
10.15 問題15:循環(huán)或判斷語句以“;”結(jié)尾
10.16 問題16:在循環(huán)體內(nèi)改2循環(huán)結(jié)束條件
10.17 問題17:case分支不用break結(jié)束
10.18 問題18:switch-case語句沒有default分支
10.19 問題19:不聲明函數(shù)原型
10.20 問題20:不定義函數(shù)參數(shù)或返回值的類型
10.21 問題21:有返回值的函數(shù)不用return指明返回值
10.22 問題22:調(diào)用函數(shù)后,不檢查函數(shù)是否正確執(zhí)行
10.23 問題23:2量、函數(shù)和模塊功能不單一
10.24 問題24:函數(shù)過長
10.25 問題25:函數(shù)的參數(shù)過于復雜
10.26 問題26:返回指向2部2量的指針
10.27 問題27:隨意修改全22量的值
10.28 問題28:數(shù)組下標越界
10.29 問題29:字符串沒有‘\0’終結(jié)符
10.30 問題30:使用不限制2大處理長度的字符串處理函數(shù)
10.31 問題31:用malloc()申請的內(nèi)存不用free()
10.32 問題32:使用已經(jīng)被free()的指針
10.33 問題33:文件打開后不主動關(guān)閉
10.34 問題34:成對函數(shù)不在同一個模塊或函數(shù)內(nèi)調(diào)用
10.35 問題35:頭文件不加宏定義鎖
10.36 問題36:忽略編譯器發(fā)出的警告
10.37 問題37:用“22+粘貼”的方式復用代碼
10.38 問題38:在字符串和注釋以外的地方使用全角字符
10.39 問題39:不注重代碼的風格
10.40 問題40:代碼與注釋不一致
參考文獻