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