本書是一本實(shí)用型C語言程序設(shè)計(jì)教程,所講內(nèi)容既充分考慮了C語言重要語法的全面性,又突出了對(duì)學(xué)生程序開發(fā)實(shí)踐能力和工程能力的訓(xùn)練。本書共分為13章,內(nèi)容包括C語言概述,面向過程的算法設(shè)計(jì),數(shù)據(jù)類型及格式輸出,運(yùn)算符、格式輸入與順序結(jié)構(gòu)程序設(shè)計(jì),選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)結(jié)構(gòu)程序設(shè)計(jì),函數(shù)框架及語法,數(shù)組使用,結(jié)構(gòu)體和共用體,指針,文件操作,鏈表,位運(yùn)算和預(yù)處理命令。本書通過大量實(shí)例介紹C語言,引導(dǎo)讀者運(yùn)用調(diào)試手段完善程序設(shè)計(jì),讓讀者逐步加深對(duì)程序設(shè)計(jì)方法的理解,掌握程序的設(shè)計(jì)與調(diào)試,初步了解安全編程。
本書語言通俗易懂,示例豐富,并提供了適量習(xí)題和參考答案,以及程序代碼、PPT等資源。
本書可作為高等學(xué)校計(jì)算機(jī)及相關(guān)專業(yè)的教材,也可供計(jì)算機(jī)應(yīng)用開發(fā)者自學(xué)使用。
好學(xué)好用,案例豐富
C語言程序設(shè)計(jì)是計(jì)算機(jī)及相關(guān)專業(yè)的一門基礎(chǔ)程序入門課程。通過該課程的學(xué)習(xí),讀者可以熟悉計(jì)算機(jī)編程的基本思想和方法,了解結(jié)構(gòu)化程序的編程方法,編寫基于字符模式的應(yīng)用程序,掌握程序調(diào)試方法,學(xué)習(xí)應(yīng)用計(jì)算機(jī)解決和處理實(shí)際問題。
初次接觸程序設(shè)計(jì)的讀者普遍有能理解語法卻無法下手編寫程序的感受,為了讓讀者更好地掌握C語言,本書在編寫時(shí)使用了大量的程序例題來說明語法的具體用法,讀者可在練習(xí)這些程序段的同時(shí),充分理解語法的各種用法,再結(jié)合習(xí)題的訓(xùn)練,達(dá)到對(duì)C語言語法的靈活掌握。
希望讀者邊學(xué)邊練,融會(huì)貫通。
本書由長(zhǎng)期從事C語言課程教學(xué)的一線老師編寫,書中蘊(yùn)含了編者多年的教學(xué)實(shí)踐經(jīng)驗(yàn),旨在提高學(xué)生的實(shí)踐動(dòng)手能力和理論聯(lián)系實(shí)際的能力。本書除了詳細(xì)介紹C語言語法以外,還突出了實(shí)例的講解,并列舉了教學(xué)過程中學(xué)生常犯的錯(cuò)誤。
本書可作為高等學(xué)校計(jì)算機(jī)及相關(guān)專業(yè)的教材,也可作為計(jì)算機(jī)應(yīng)用開發(fā)人員的參考書籍。對(duì)于計(jì)算機(jī)及相關(guān)專業(yè),本書的參考學(xué)時(shí)數(shù)為48學(xué)時(shí),另需進(jìn)行24學(xué)時(shí)左右的上機(jī)練習(xí);對(duì)于其他專業(yè),可適當(dāng)壓縮內(nèi)容,講授40學(xué)時(shí)。
本書第1、13章由刁仁宏編寫,第2~5章由王力洪編寫,第6~9章由藺冰編寫,第10章由柏世兵編寫,第11、12章由王燚編寫,藺冰、王力洪負(fù)責(zé)全書的統(tǒng)稿工作。
本書在第一版的基礎(chǔ)上,增加了強(qiáng)制轉(zhuǎn)換運(yùn)算符和sizeof運(yùn)算符的相關(guān)內(nèi)容,修訂了部分文字錯(cuò)誤,并提供了配套電子資源(程序代碼、習(xí)題參考答案、PPT),讀者可通過掃描二維碼或登錄出版社網(wǎng)站查閱。
由于作者水平有限,加上計(jì)算機(jī)科學(xué)技術(shù)發(fā)展迅速,書中難免有不妥之處,懇請(qǐng)廣大讀者賜教。
作 者
?2021年8月
第1章 C語言概述 1
1.1 計(jì)算機(jī)語言 1
1.2 C語言出現(xiàn)的歷史背景 3
1.3 C語言的特點(diǎn) 3
1.4 運(yùn)行C程序的步驟 4
1.4.1 使用VC++ 6.0運(yùn)行C程序的步驟 4
1.4.2 使用GCC運(yùn)行C程序的步驟 10
1.5 簡(jiǎn)單的C語言程序介紹 10
習(xí)題 14
第2章 面向過程的算法設(shè)計(jì) 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 簡(jiǎn)單算法的舉例 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)識(shí)符 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 浮點(diǎn)型數(shù)據(jù) 32
3.4.1 浮點(diǎn)型常量 32
3.4.2 浮點(diǎn)型變量 32
3.4.3 浮點(diǎn)格式輸出 32
3.4.4 浮點(diǎn)型數(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)存中的存儲(chǔ)形式 36
習(xí)題 37
第4章 運(yùn)算符、格式輸入與
順序結(jié)構(gòu)程序設(shè)計(jì) 39
4.1 運(yùn)算符 39
4.1.1 運(yùn)算符 39
4.1.2 賦值運(yùn)算符 39
4.1.3 算術(shù)運(yùn)算符 40
4.1.4 復(fù)合賦值運(yùn)算符 40
4.1.5 自增、自減運(yùn)算符 41
4.1.6 變量賦初值 41
4.1.7 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 41
4.1.8 強(qiáng)制轉(zhuǎn)換運(yùn)算符 42
4.1.9 sizeof運(yùn)算符 43
4.1.10 逗號(hào)運(yùn)算符和逗號(hào)表達(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è)計(jì) 50
習(xí)題 52
第5章 選擇結(jié)構(gòu)程序設(shè)計(jì) 54
5.1 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 54
5.1.1 關(guān)系運(yùn)算符及其優(yōu)先級(jí) 54
5.1.2 關(guān)系表達(dá)式 54
5.2 邏輯運(yùn)算符和邏輯表達(dá)式 55
5.2.1 邏輯運(yùn)算符及其優(yōu)先級(jí) 55
5.2.2 邏輯表達(dá)式 55
5.3 if語句 56
5.3.1 if語句的三種形式 56
5.3.2 if語句的嵌套 62
5.3.3 條件運(yùn)算符 65
5.4 switch語句 66
5.5 選擇結(jié)構(gòu)程序設(shè)計(jì) 68
習(xí)題 71
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 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 庫(kù)函數(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 對(duì)被調(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 變量的存儲(chǔ)類別 102
7.5.1 動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式 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ū)域劃分簡(jiǎn)介 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ù)實(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 二進(jìn)制文件讀寫函數(shù) 204
11.5 文件隨機(jī)讀寫 206
習(xí)題 209
第12章 鏈表 210
12.1 鏈表概述 210
12.2 簡(jiǎn)單鏈表 210
12.3 動(dòng)態(tài)鏈表 212
12.3.1 創(chuàng)建動(dòng)態(tài)鏈表 213
12.3.2 鏈表的查找 217
12.3.3 對(duì)鏈表的刪除操作 218
12.3.4 對(duì)鏈表的插入操作 220
習(xí)題 223
第13章 位運(yùn)算和預(yù)處理命令 224
13.1 位運(yùn)算符和位運(yùn)算 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 運(yùn)算符及結(jié)合性 235
附錄D 常用C語言庫(kù)函數(shù) 236
附錄E 二、八、十、十六進(jìn)制換算 243
附錄F 整數(shù)的補(bǔ)碼 245
附錄G 文件路徑 246
參考文獻(xiàn) 248