本書以計算機語言的學習與認知過程為主線,以實踐為主導,按照程序設計與編寫的思路進行講解,盡量使用通俗易懂的語言描述,避免空洞難懂的理論。首先讓讀者對語言、C語言、程序設計、C語言程序設計進行整體認知;隨后為了養成良好的編程習慣,學習編程邏輯與規則;而后在實踐中積累程序設計的基本元素—數據類型、常量、變量、運算符和表達式;在具備基本知識的過程中,逐漸在實踐中感受程序的編寫思路,并逐漸引入三大結構—順序、分支和循環;在能夠編寫一些小程序后,引入數組存儲批量數據;為了實現程序的模塊化引入函數;為了存儲復雜數據類型引入結構體;為了優化程序性能在實踐中引入指針;為了改進程序運行環境,提高程序效率,引入預處理;最終為了完成數據的永久存儲,引入文件的操作。本書精選大量實例貫穿知識點的講解,并在每個章節末配有實訓任務和精選習題,突出了C語言程序設計學習的實用性與可操作性。順應“互聯網+”教材趨勢,本書提供了大量配套資源:微課視頻、源代碼、實訓任務、PPT課件、課程大綱、題庫等。本書適合作為高職院校計算機相關專業的教材;適合作為高職院校理工科公共課“C語言程序設計”的教材;也可作為計算機編程愛好者的入門必備書籍;同時還可作為計算機培訓機構的培訓教材。
王海賓,男,副教授。2009.7至今邢臺職業技術學院任教,自2006年以來長期從事軟件設計與開發,每年都至少有一項企業實際項目,具有豐富的軟件設計與開發經驗。邢臺職業技術學院首屆(2010)觀摩教學比賽一等獎(冠軍)。
第1章 認知C語言程序設計 1
1.1 整體認知 1
1.1.1 什么是語言? 1
1.1.2 什么是C語言? 1
1.1.3 什么是程序設計? 2
1.1.4 什么是C語言程序設計? 4
1.2 為什么學習C語言程序設計 4
1.2.1 C語言的發展與趨勢 4
1.2.2 C語言的重要性 4
1.3 環境搭建與實踐步驟 5
1.3.1 環境搭建 5
1.3.2 開發步驟 7
1.4 第一個C語言程序 9
1.5 程序案例 10
1.6 本章小結 11
實訓任務一 環境搭建與第一個
C語言程序 12
習題1 13
第2章 C語言程序開發前的準備 15
2.1 項目的開發流程 15
2.2 C語言程序的開發流程 16
2.3 C語言程序的結構 17
2.4 程序編寫規范 19
2.5 程序與算法 20
2.6 流程圖 21
2.7 程序案例 22
2.8 本章小結 23
實訓任務二 程序流程圖的繪制 23
習題2 24
第3章 語言基礎—數據與運算 26
3.1 C語言程序的基本元素 26
3.2 標識符與關鍵字 26
3.2.1 標識符 27
3.2.2 關鍵字 28
3.3 數據類型 28
3.4 常量 29
3.4.1 直接常量 30
3.4.2 符號常量 32
3.5 變量 34
3.6 運算符與表達式 35
3.6.1 運算符基礎 35
3.6.2 算術運算符與算術表達式 35
3.6.3 關系運算符和關系表達式 37
3.6.4 邏輯運算符和邏輯表達式 38
3.6.5 賦值運算符和賦值表達式 39
3.6.6 位運算符 40
3.6.7 其他運算符 42
3.6.8 運算符的優先級 43
3.7 類型的轉換 43
3.8 程序案例 44
3.9 本章小結 47
實訓任務三 程序中的數據與運算 48
習題3 48
第4章 程序邏輯處理—三大流程
結構 52
4.1 順序結構 52
4.1.1 C語言程序中的語句 52
4.1.2 格式化數據的輸入輸出 53
4.1.3 字符數據的輸入輸出 58
4.2 分支結構 60
4.2.1 單分支結構 61
4.2.2 雙分支結構 62
4.2.3 多分支結構 65
4.3 循環結構 71
4.3.1 for語句 72
4.3.2 while語句 76
4.3.3 do-while語句 78
4.3.4 三種循環語句的比較 79
4.3.5 break、continue、goto、return
語句 79
4.3.6 循環的嵌套 82
4.4 程序案例 84
4.5 本章小結 89
實訓任務四 程序邏輯處理 90
習題4 91
第5章 批量數據的存儲—數組 100
5.1 數組的認知 100
5.2 一維數組的定義、初始化與引用 101
5.2.1 一維數組的定義 101
5.2.2 一維數組的初始化 102
5.2.3 一維數組的引用 104
5.3 二維數組的定義、初始化與引用 105
5.3.1 二維數組的定義 105
5.3.2 二維數組的初始化 105
5.3.3 二維數組的引用 106
5.4 字符數組的定義、初始化與引用 108
5.4.1 字符數組的定義 108
5.4.2 字符數組的初始化 108
5.4.3 字符數組的引用 109
5.4.4 字符串和字符串結束標志 110
5.4.5 字符數組的輸入輸出 110
5.4.6 字符串處理函數 112
5.5 程序案例 117
5.6 本章小結 121
實訓任務五 數組的應用 121
習題5 122
第6章 程序的模塊化—函數 127
6.1 函數的認知 127
6.1.1 什么是函數? 127
6.1.2 為什么使用函數? 128
6.1.3 函數的分類 131
6.2 函數的定義、調用與聲明 132
6.2.1 函數的定義 132
6.2.2 函數的調用 133
6.2.3 函數的參數和返回值 134
6.2.4 函數的聲明 138
6.3 函數的嵌套 140
6.4 函數的遞歸 141
6.5 數組作為函數的參數 142
6.5.1 數組元素作為函數實參 143
6.5.2 數組名作為函數參數 144
6.6 變量的作用域 145
6.6.1 局部變量 145
6.6.2 全局變量 147
6.6 程序案例 148
6.8 本章小結 152
實訓任務六 函數的應用 153
習題6 154
第7章 程序性能優化—指針 160
7.1 什么是指針? 160
7.2 為什么要使用指針? 161
7.3 指針變量的使用 161
7.3.1 指針變量的聲明 161
7.3.2 指針變量的賦值 162
7.3.3 指針變量的引用 162
7.3.4 指針的加減運算 165
7.4 指針在數組中的應用 165
7.4.1 使用指針引用一維數組的
元素 166
7.4.2 使用指針引用二維數組的
元素 167
7.5 字符型指針引用字符串 169
7.6 指針數組和指向指針的指針 170
7.6.1 指針數組的概念 170
7.6.2 指向指針的指針 172
7.7 指針在函數中的應用 173
7.7.1 使用指針做函數參數 173
7.7.2 用指針做函數的返回值 175
7.7.3 使用指針調用函數 176
7.8 程序案例 179
7.9 本章小結 182
實訓任務七 指針的使用,字符串
的處理 183
習題7 184
第8章 復雜數據類型—結構體與
共用體 190
8.1 結構體的認知 190
8.2 結構體變量的定義、初始化與
引用 191
8.2.1 結構體變量的定義 191
8.2.2 結構體變量的初始化 193
8.2.3 結構體變量的引用 194
8.3 結構體數組 196
8.3.1 結構體數組的定義 196
8.3.2 結構體數組的初始化 197
8.3.3 結構體數組的引用 197
8.4 結構體指針變量 199
8.4.1 指向結構體變量的指針 199
8.4.2 指向結構體數組的指針 200
8.5 共用體 201
8.5.1 定義共用體類型 201
8.5.2 共用體變量的定義 201
8.5.3 共用體變量的初始化與
引用 202
8.6 程序案例 203
8.7 本章小結 205
實訓任務八 結構體和共用體 205
習題8 206
第9章 優化程序設計—預處理 209
9.1 宏定義 209
9.1.1 不帶參數的宏定義 209
9.1.2 帶參數的宏定義 212
9.2 文件包含 213
9.3 條件編譯 215
9.4 程序案例 217
9.5 本章小結 219
實訓任務九 預處理命令的使用 220
習題9 220
第10章 數據永久存儲—文件操作 224
10.1 文件的認知 224
10.1.1 C語言中的數據流 225
10.1.2 文件指針 225
10.2 文件的打開與關閉 226
10.2.1 文件的打開 226
10.2.2 文件的關閉 228
10.3 文件的順序讀寫 228
10.3.1 字符數據的讀寫 228
10.3.2 字符串數據的讀寫 232
10.3.3 二進制數據的讀寫 234
10.3.4 數據的格式化讀寫 236
10.4 文件的隨機讀寫 238
10.5 文件讀寫的出錯檢測 240
10.6 程序案例 241
10.7 本章小結 243
實訓任務十 文本的相關操作 244
習題10 245
附錄A 標準字符與ASCII代碼對照表 250
附錄B C語言常用庫函數 251
參考文獻 255