本書是一本實用型C語言程序設計教程,所講內容既充分考慮了C語言重要語法的全面性,又突出了對學生程序開發(fā)實踐能力和工程能力的訓練。本書共分為13章,內容包括C語言概述,面向過程的算法設計,數據類型及格式輸出,運算符、格式輸入與順序結構程序設計,選擇結構程序設計,循環(huán)結構程序設計,函數框架及語法,數組使用,結構體和共用體,指針,文件操作,鏈表,位運算和預處理命令。本書通過大量實例介紹C語言,引導讀者運用調試手段完善程序設計,讓讀者逐步加深對程序設計方法的理解,掌握程序的設計與調試,初步了解安全編程。
本書語言通俗易懂,示例豐富,并提供了適量習題和參考答案,以及程序代碼、PPT等資源。
本書可作為高等學校計算機及相關專業(yè)的教材,也可供計算機應用開發(fā)者自學使用。
好學好用,案例豐富
C語言程序設計是計算機及相關專業(yè)的一門基礎程序入門課程。通過該課程的學習,讀者可以熟悉計算機編程的基本思想和方法,了解結構化程序的編程方法,編寫基于字符模式的應用程序,掌握程序調試方法,學習應用計算機解決和處理實際問題。
初次接觸程序設計的讀者普遍有能理解語法卻無法下手編寫程序的感受,為了讓讀者更好地掌握C語言,本書在編寫時使用了大量的程序例題來說明語法的具體用法,讀者可在練習這些程序段的同時,充分理解語法的各種用法,再結合習題的訓練,達到對C語言語法的靈活掌握。
希望讀者邊學邊練,融會貫通。
本書由長期從事C語言課程教學的一線老師編寫,書中蘊含了編者多年的教學實踐經驗,旨在提高學生的實踐動手能力和理論聯系實際的能力。本書除了詳細介紹C語言語法以外,還突出了實例的講解,并列舉了教學過程中學生常犯的錯誤。
本書可作為高等學校計算機及相關專業(yè)的教材,也可作為計算機應用開發(fā)人員的參考書籍。對于計算機及相關專業(yè),本書的參考學時數為48學時,另需進行24學時左右的上機練習;對于其他專業(yè),可適當壓縮內容,講授40學時。
本書第1、13章由刁仁宏編寫,第2~5章由王力洪編寫,第6~9章由藺冰編寫,第10章由柏世兵編寫,第11、12章由王燚編寫,藺冰、王力洪負責全書的統稿工作。
本書在第一版的基礎上,增加了強制轉換運算符和sizeof運算符的相關內容,修訂了部分文字錯誤,并提供了配套電子資源(程序代碼、習題參考答案、PPT),讀者可通過掃描二維碼或登錄出版社網站查閱。
由于作者水平有限,加上計算機科學技術發(fā)展迅速,書中難免有不妥之處,懇請廣大讀者賜教。
作 者
?2021年8月
第1章 C語言概述 1
1.1 計算機語言 1
1.2 C語言出現的歷史背景 3
1.3 C語言的特點 3
1.4 運行C程序的步驟 4
1.4.1 使用VC++ 6.0運行C程序的步驟 4
1.4.2 使用GCC運行C程序的步驟 10
1.5 簡單的C語言程序介紹 10
習題 14
第2章 面向過程的算法設計 15
2.1 算法的概念 15
2.2 面向過程算法采用的結構及
傳統流程圖 15
2.2.1 順序結構 15
2.2.2 選擇結構 16
2.2.3 循環(huán)結構 16
2.2.4 傳統流程圖 17
2.3 簡單算法的舉例 18
2.4 算法的特性和要求 22
習題 22
第3章 數據類型及格式輸出 23
3.1 C語言的數據類型 23
3.2 常量與變量 23
3.2.1 常量 23
3.2.2 標識符 24
3.2.3 變量的定義 24
3.2.4 內存內容和內存地址 24
3.2.5 printf函數格式輸出 27
3.3 整型數據 28
3.3.1 整型常量 28
3.3.2 整型變量 28
3.3.3 整型格式輸出 28
3.3.4 整型數據編碼及溢出 30
3.4 浮點型數據 32
3.4.1 浮點型常量 32
3.4.2 浮點型變量 32
3.4.3 浮點格式輸出 32
3.4.4 浮點型數據編碼及舍入誤差 33
3.5 字符型數據 34
3.5.1 字符常量 34
3.5.2 字符串常量 35
3.5.3 字符變量及其格式輸出 35
3.5.4 字符數據在內存中的存儲形式 36
習題 37
第4章 運算符、格式輸入與
順序結構程序設計 39
4.1 運算符 39
4.1.1 運算符 39
4.1.2 賦值運算符 39
4.1.3 算術運算符 40
4.1.4 復合賦值運算符 40
4.1.5 自增、自減運算符 41
4.1.6 變量賦初值 41
4.1.7 各類數值型數據間的混合運算 41
4.1.8 強制轉換運算符 42
4.1.9 sizeof運算符 43
4.1.10 逗號運算符和逗號表達式 43
4.1.11 C語句 43
4.2 格式輸入 43
4.2.1 數據輸入/輸出的概念 43
4.2.2 格式輸出 43
4.2.3 格式輸入 44
4.3 字符數據的輸入/輸出 47
4.3.1 putchar函數 47
4.3.2 getchar函數 48
4.4 輸入緩沖區(qū) 49
4.5 順序程序設計 50
習題 52
第5章 選擇結構程序設計 54
5.1 關系運算符和關系表達式 54
5.1.1 關系運算符及其優(yōu)先級 54
5.1.2 關系表達式 54
5.2 邏輯運算符和邏輯表達式 55
5.2.1 邏輯運算符及其優(yōu)先級 55
5.2.2 邏輯表達式 55
5.3 if語句 56
5.3.1 if語句的三種形式 56
5.3.2 if語句的嵌套 62
5.3.3 條件運算符 65
5.4 switch語句 66
5.5 選擇結構程序設計 68
習題 71
第6章 循環(huán)結構程序設計 72
6.1 while語句 72
6.2 do-while語句 73
6.3 for語句 74
6.4 嵌套循環(huán) 76
6.5 break語句和continue語句 80
6.5.1 break語句 80
6.5.2 continue語句 82
6.6 goto語句 84
6.7 循環(huán)程序舉例 86
習題 89
第7章 函數框架及語法 90
7.1 函數相關術語及執(zhí)行流程 90
7.2 函數的分類 92
7.2.1 庫函數 92
7.2.2 自定義函數 92
7.2.3 無返回值函數 93
7.2.4 無參函數 94
7.3 函數的調用 94
7.3.1 對被調用函數的聲明 94
7.3.2 函數調用及調用格式 95
7.3.3 函數的遞歸調用 98
7.4 局部變量和全局變量 100
7.4.1 局部變量 100
7.4.2 全局變量 101
7.5 變量的存儲類別 102
7.5.1 動態(tài)存儲方式與靜態(tài)存儲方式 102
7.5.2 auto變量 102
7.5.3 用static聲明的變量 102
7.5.4 用extern聲明的外部變量 103
7.5.5 關于變量的聲明和定義 107
7.5.6 內存區(qū)域劃分簡介 108
習題 108
第8章 數組使用 111
8.1 一維數組的定義和使用 111
8.1.1 一維數組的定義 111
8.1.2 一維數組元素的引用 111
8.1.3 一維數組的初始化 112
8.1.4 一維數組程序示例 112
8.2 二維數組的定義和使用 119
8.2.1 二維數組的定義 119
8.2.2 二維數組的引用 120
8.2.3 二維數組的初始化 120
8.2.4 二維數組程序示例 121
8.3 字符數組 125
8.3.1 字符數組的定義 125
8.3.2 字符串和字符串的結束標志 125
8.3.3 字符數組的初始化 126
8.3.4 字符數組的引用 126
8.3.5 字符數組的輸入/輸出 127
8.3.6 字符串處理函數 129
8.4 數組作函數參數 134
8.4.1 數組元素作函數實參 134
8.4.2 數組名作函數參數 135
習題 137
第9章 結構體和共用體 140
9.1 定義結構體類型變量的方法 140
9.2 結構體變量的引用 142
9.3 結構體數組 143
9.3.1 定義結構體數組 143
9.3.2 結構體數組的初始化 144
9.4 共用體 152
9.5 枚舉類型 159
9.6 用typedef聲明類型 161
習題 161
第10章 指針 163
10.1 地址和指針的概念 163
10.2 變量的指針和指向變量的指針變量 163
10.2.1 指針變量的定義 163
10.2.2 指針變量的引用 164
10.2.3 指針變量作函數參數 166
10.3 數組與指針 169
10.3.1 指向數組元素的指針 169
10.3.2 通過指針引用數組元素 169
10.3.3 數組名作函數參數 171
10.3.4 多維數組與指針 173
10.4 字符串與指針 175
10.4.1 字符串的操作方式 175
10.4.2 字符指針作函數參數 176
10.4.3 const類型限定符 177
10.5 指向結構體類型的指針 179
10.5.1 指向結構體數據類型的指針 180
10.5.2 指向結構體數組的指針 181
10.5.3 用結構體變量和指向結構體的
指針作函數參數 182
10.6 返回指針值的函數 184
10.7 指針數組和指向指針的指針 186
10.7.1 指針數組的概念 186
10.7.2 指向指針的指針 188
10.7.3 指針數組作main函數的形參 190
10.8 指向函數的指針 192
10.8.1 用函數指針變量調用函數 192
10.8.2 用指向函數的指針作函數參數 193
習題 195
第11章 文件操作 197
11.1 C語言文件概述 197
11.2 文件處理流程 198
11.3 文件的打開與關閉 199
11.3.1 文件打開函數 199
11.3.2 文件關閉函數 200
11.4 文件的讀寫 201
11.4.1 文本文件讀寫函數 201
11.4.2 二進制文件讀寫函數 204
11.5 文件隨機讀寫 206
習題 209
第12章 鏈表 210
12.1 鏈表概述 210
12.2 簡單鏈表 210
12.3 動態(tài)鏈表 212
12.3.1 創(chuàng)建動態(tài)鏈表 213
12.3.2 鏈表的查找 217
12.3.3 對鏈表的刪除操作 218
12.3.4 對鏈表的插入操作 220
習題 223
第13章 位運算和預處理命令 224
13.1 位運算符和位運算 224
13.2 位段 227
13.3 預處理命令 228
13.3.1 宏定義 228
13.3.2 文件包含 229
13.3.3 條件編譯 229
習題 230
附錄 232
附錄A ASCII碼表 232
附錄B C語言關鍵字 234
附錄C 運算符及結合性 235
附錄D 常用C語言庫函數 236
附錄E 二、八、十、十六進制換算 243
附錄F 整數的補碼 245
附錄G 文件路徑 246
參考文獻 248