本書是工業(yè)和信息化部“十四五”規(guī)劃教材,新工科建設(shè)·計算機(jī)系列教材。本書針對教學(xué)研究型和教學(xué)應(yīng)用型大學(xué)的學(xué)生綜合素質(zhì)特點(diǎn),基于CDIO的工程教育理念,結(jié)合讀者需要掌握的程序設(shè)計知識點(diǎn)和人工智能時代知識體系需求以及國內(nèi)外C語言程序設(shè)計的最新教材和經(jīng)典應(yīng)用實(shí)例編寫。本書針對每章主要知識點(diǎn)選取了應(yīng)用范例,并通過五子棋人機(jī)對戰(zhàn)和ATM自動取款機(jī)綜合應(yīng)用實(shí)例貫穿C語言主要知識點(diǎn),培養(yǎng)讀者計算思維能力,同時分析比較計算機(jī)程序語言與自然語言的相互對應(yīng)關(guān)系,形象化解釋程序語言的相關(guān)概念,幫助讀者更深層次地理解程序語言的特性,進(jìn)一步增強(qiáng)計算機(jī)相關(guān)領(lǐng)域應(yīng)用知識點(diǎn)和程序設(shè)計語言間的對應(yīng)關(guān)系。本書內(nèi)容與后續(xù)專業(yè)課程知識點(diǎn)相互呼應(yīng),并通過形象化范例加以解釋,增強(qiáng)了可讀性,降低了概念的抽象性,有助于讀者掌握計算機(jī)程序設(shè)計的專業(yè)術(shù)語和概念,促進(jìn)C語言程序設(shè)計水平的提高,學(xué)會智能程序化的基本方法和思想。本書既可作為高等院校開設(shè)的C語言程序設(shè)計課程的教科書,也可作為計算機(jī)程序設(shè)計培訓(xùn)班的教材或計算機(jī)程序設(shè)計人員的參考書。
邱曉紅,江西理工大學(xué)軟件工程學(xué)院教授,副院長。長期從事計算機(jī)教育、智能控制系統(tǒng)的仿真、控制優(yōu)化、故障測試、智能計算等方面研究工作。獲省部級二等獎2項(xiàng)。 2010年聘為江西省第一屆學(xué)科評議組專家(計算機(jī)應(yīng)用技術(shù)專業(yè)),2012年江西省計算機(jī)學(xué)會常務(wù)理事,2015年江西省軟件工程專業(yè)教指委成員,2018年江西省虛擬現(xiàn)實(shí)(VR)專委會成員。1999年榮獲"第十屆北京優(yōu)秀青年工程師”稱號。2001年獲國防科工委國防科學(xué)技術(shù)二等獎,并榮立二等功。2008年獲江西省教育廳教育科學(xué)優(yōu)秀成果二等獎。2004-2006年度江西省高校中青年學(xué)科帶頭人、2011年江西省高等學(xué)校第七批中青年學(xué)科帶頭人,2011年中國信息協(xié)會評為"中國信息化百名優(yōu)秀帶頭人”。
第1章 C語言及程序設(shè)計概述 1
1.1 C語言簡介 1
1.1.1 計算機(jī)語言的發(fā)展過程 1
1.1.2 C語言的發(fā)展過程 1
1.1.3 C語言的主要特點(diǎn) 2
1.2 C語言程序結(jié)構(gòu) 3
1.2.1 C語言程序的結(jié)構(gòu)及其特點(diǎn) 3
1.2.2 標(biāo)識符與關(guān)鍵字 6
1.3 C語言編譯工具簡介 7
1.3.1 C語言程序?qū)崿F(xiàn)的步驟 7
1.3.2 Dev-C++編譯工具 7
1.3.3 Visual C++ 6.0編譯工具簡介 12
1.4 如何學(xué)習(xí)C語言 15
1.4.1 學(xué)習(xí)C語言的理由 15
1.4.2 學(xué)好C語言的步驟 16
1.5 編程實(shí)踐 18
1.5.1 任務(wù):輸出金字塔圖案 18
1.5.2 任務(wù):輸出華氏溫度和攝氏溫度對照表 18
1.6 知識擴(kuò)展材料 19
1.6.1 C語言的標(biāo)準(zhǔn)化過程 19
1.6.2 數(shù)字產(chǎn)業(yè)基礎(chǔ) 20
習(xí)題1 20
第2章 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 22
2.1 常量和變量 22
2.1.1 常量 22
2.1.2 變量 25
2.2 基本數(shù)據(jù)類型 26
2.2.1 整型 27
2.2.2 字符型 28
2.2.3 實(shí)型 28
2.3 數(shù)據(jù)類型的轉(zhuǎn)換 29
2.3.1 自動轉(zhuǎn)換 29
2.3.2 強(qiáng)制轉(zhuǎn)換 31
2.4 運(yùn)算符和表達(dá)式 32
2.4.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 32
2.4.2 關(guān)系運(yùn)算符和關(guān)系表達(dá)式 37
2.4.3 邏輯運(yùn)算符和邏輯表達(dá)式 39
2.4.4 賦值運(yùn)算符和賦值表達(dá)式 40
2.4.5 位運(yùn)算符和位運(yùn)算 42
2.4.6 條件運(yùn)算符和條件表達(dá)式 44
2.4.7 逗號運(yùn)算符和逗號表達(dá)式 45
2.4.8 求字節(jié)數(shù)運(yùn)算符 46
2.4.9 特殊運(yùn)算符 47
2.5 運(yùn)算符的優(yōu)先級和結(jié)合性 47
2.5.1 運(yùn)算符的優(yōu)先級 47
2.5.2 運(yùn)算符的結(jié)合性 48
2.6 編程實(shí)踐 49
任務(wù):分析MD5散列算法的基本運(yùn)算 49
2.7 知識擴(kuò)展材料 50
2.7.1 C語言代碼規(guī)范(編程規(guī)范) 50
2.7.2 代碼規(guī)范的7個原則 51
習(xí)題2 53
第3章 算法概念與順序結(jié)構(gòu)的程序設(shè)計 59
3.1 算法簡介 59
3.1.1 算法的概念 59
3.1.2 算法的常用描述方法 60
3.2 C語句概述 62
3.3 C語言的基本輸入/輸出 64
3.3.1 字符的輸入/輸出函數(shù) 64
3.3.2 格式的輸入/輸出函數(shù) 65
3.4 順序結(jié)構(gòu)的程序設(shè)計 72
3.4.1 順序結(jié)構(gòu)的程序設(shè)計思想 72
3.4.2 順序結(jié)構(gòu)的程序設(shè)計舉例 73
3.5 編程實(shí)踐 74
任務(wù):計算正弦函數(shù)的面積 74
3.6 知識擴(kuò)展材料 75
3.6.1 程序員的責(zé)任事故 75
3.6.2 程序員的違法犯罪行為 75
習(xí)題3 76
第4章 選擇結(jié)構(gòu)的程序設(shè)計 80
4.1 if語句 80
4.1.1 單分支if語句 80
4.1.2 雙分支if語句 81
4.1.3 多分支if語句 82
4.1.4 if語句的嵌套 83
4.1.5 條件運(yùn)算符和條件表達(dá)式 84
4.2 switch語句 85
4.2.1 switch語句 85
4.2.2 switch語句的嵌套 87
4.3 選擇結(jié)構(gòu)程序設(shè)計舉例 88
4.4 編程實(shí)踐 90
任務(wù):計算個人所得稅 90
4.5 知識擴(kuò)展材料 91
4.5.1 個人所得稅的概念 91
4.5.2 我國個人所得稅的特點(diǎn) 91
習(xí)題4 92
第5章 循環(huán)結(jié)構(gòu)的程序設(shè)計 102
5.1 while語句和do-while語句 102
5.1.1 while語句的一般形式 102
5.1.2 while語句的使用說明 103
5.1.3 do-while語句的一般形式 104
5.1.4 do-while語句的使用說明 104
5.2 循環(huán)結(jié)構(gòu)和循環(huán)嵌套 105
5.2.1 for語句的一般形式 105
5.2.2 for語句使用說明 106
5.2.3 循環(huán)嵌套的形式 107
5.2.4 循環(huán)嵌套的說明 108
5.3 流程轉(zhuǎn)向語句 108
5.3.1 goto語句 108
5.3.2 break語句 109
5.3.3 continue語句 110
5.4 循環(huán)結(jié)構(gòu)程序設(shè)計舉例 110
5.4.1 確定循環(huán)次數(shù)與不確定循環(huán)次數(shù) 111
5.4.2 選擇循環(huán)語句 112
5.4.3 提前結(jié)束循環(huán) 114
5.4.4 其他應(yīng)用舉例 114
5.5 編程實(shí)踐 115
任務(wù):驗(yàn)證哥德巴赫猜想 115
5.6 知識擴(kuò)展材料 115
5.6.1 計算思維 116
5.6.2 計算思維養(yǎng)成 116
習(xí)題5 117
第6章 數(shù)組 122
6.1 一維數(shù)組 122
6.1.1 一維數(shù)組的定義 122
6.1.2 一維數(shù)組元素的引用 122
6.1.3 一維數(shù)組的初始化 123
6.1.4 一維數(shù)組應(yīng)用舉例 124
6.2 多維數(shù)組 125
6.2.1 二維數(shù)組的定義 125
6.2.2 二維數(shù)組元素的引用 126
6.2.3 二維數(shù)組的初始化 126
6.2.4 二維數(shù)組應(yīng)用舉例 127
6.3 字符數(shù)組 129
6.3.1 字符數(shù)組的定義 129
6.3.2 字符數(shù)組的初始化 130
6.3.3 字符串與字符串結(jié)束標(biāo)志 131
6.3.4 字符數(shù)組的引用與輸入/輸出 131
6.3.5 字符串處理函數(shù) 132
6.3.6 字符數(shù)組應(yīng)用舉例 135
6.4 數(shù)組應(yīng)用舉例 137
6.5 編程實(shí)踐 139
任務(wù):多規(guī)格打印萬年歷 139
6.6 知識擴(kuò)展材料 141
6.6.1 聚類分析 141
6.6.2 相似性度量 141
習(xí)題6 142
第7章 函數(shù) 145
7.1 函數(shù)的定義 145
7.1.1 函數(shù)概述 145
7.1.2 函數(shù)類型 145
7.1.3 函數(shù)定義和使用 147
7.2 函數(shù)參數(shù)和返回值 149
7.2.1 形式參數(shù)和實(shí)際參數(shù) 149
7.2.2 函數(shù)的返回值 152
7.3 函數(shù)調(diào)用和聲明 153
7.3.1 函數(shù)調(diào)用 153
7.3.2 函數(shù)聲明 154
7.4 函數(shù)的嵌套調(diào)用和遞歸調(diào)用 155
7.4.1 函數(shù)的嵌套調(diào)用 155
7.4.2 函數(shù)的遞歸調(diào)用 156
7.5 變量的作用域 159
7.6 變量的存儲類別 161
7.7 編程實(shí)踐 163
7.7.1 任務(wù):正(余)弦曲線演示 163
7.7.2 任務(wù):輸出楊輝三角 165
7.8 知識擴(kuò)展材料 166
7.8.1 分而治之 166
7.8.2 模塊化設(shè)計 167
習(xí)題7 167
第8章 指針 172
8.1 指針和地址 172
8.2 指針變量 173
8.2.1 指針變量的定義 173
8.2.2 指針變量的賦值 174
8.2.3 指針運(yùn)算符與指針表達(dá)式 175
8.2.4 指針變量引用 177
8.2.5 指針變量作為函數(shù)的參數(shù) 177
8.3 指針和數(shù)組 180
8.3.1 指向數(shù)組的指針 180
8.3.2 通過指針引用數(shù)組元素 181
8.3.3 數(shù)組名作為函數(shù)參數(shù) 183
8.3.4 指向多維數(shù)組的指針和指針變量 185
8.4 指針和字符串 188
8.4.1 字符串的表示 188
8.4.2 字符串指針作為函數(shù)參數(shù) 190
8.4.3 字符數(shù)組與字符串指針的區(qū)別 191
8.5 指針和函數(shù) 192
8.5.1 函數(shù)的指針 192
8.5.2 用指向函數(shù)的指針作為函數(shù)參數(shù) 193
8.5.3 返回指針值的函數(shù) 195
8.6 指向指針的指針 196
8.6.1 指向指針的指針的定義 196
8.6.2 指針數(shù)組 197
8.6.3 指針數(shù)組作為main函數(shù)參數(shù) 198
8.7 編程實(shí)踐 199
8.7.1 任務(wù):黑白棋子交換 199
8.7.2 任務(wù):班干部值日安排 202
8.8 知識擴(kuò)展材料 204
8.8.1 指針的優(yōu)點(diǎn)和缺點(diǎn) 204
8.8.2 指針的本質(zhì) 204
習(xí)題8 205
第9章 結(jié)構(gòu)體和共用體 209
9.1 結(jié)構(gòu)體 209
9.1.1 結(jié)構(gòu)體類型的定義 209
9.1.2 結(jié)構(gòu)體變量的定義 211
9.1.3 結(jié)構(gòu)體變量的引用 212
9.1.4 結(jié)構(gòu)體變量的賦值 213
9.2 結(jié)構(gòu)體數(shù)組與結(jié)構(gòu)體指針 215
9.2.1 結(jié)構(gòu)體數(shù)組 215
9.2.2 指向結(jié)構(gòu)體的指針 217
9.2.3 用結(jié)構(gòu)體作為函數(shù)的參數(shù) 219
9.2.4 結(jié)構(gòu)體舉例 222
9.3 鏈表 224
9.3.1 鏈表概述 224
9.3.2 處理動態(tài)鏈表所需的函數(shù) 225
9.3.3 鏈表的基本操作 227
9.4 共用體 231
9.4.1 共用體類型的定義 231
9.4.2 共用體類型變量的定義 232
9.4.3 共用體變量的引用 232
9.4.4 共用體變量的初始化 232
9.5 枚舉類型和自定義類型 234
9.5.1 枚舉類型的定義 234
9.5.2 枚舉變量的定義和初始化 235
9.5.3 枚舉數(shù)據(jù)的運(yùn)算 236
9.5.4 枚舉數(shù)據(jù)的輸入/輸出 236
9.5.5 枚舉變量舉例 237
9.5.6 用typedef定義類型 238
9.6 編程實(shí)踐 241
9.6.1 任務(wù):三天打魚兩天曬網(wǎng) 241
9.6.2 任務(wù):航班訂票系統(tǒng) 242
9.7 知識擴(kuò)展材料 249
9.7.1 結(jié)構(gòu)體所占內(nèi)存 249
9.7.2 內(nèi)存對齊 250
習(xí)題9 250
第10章 文件 254
10.1 文件概述 254
10.1.1 文件分類 254
10.1.2 文件的編碼形式 254
10.1.3 文件的讀/寫方式 255
10.2 文件的基本操作 255
10.2.1 文件的打開與關(guān)閉 255
10.2.2 文件的讀/寫 257
10.3 文件操作舉例 261
10.4 編程實(shí)踐 267
任務(wù):精挑細(xì)選 267
10.5 知識擴(kuò)展材料 268
10.5.1 嵌入式C語言與標(biāo)準(zhǔn)C語言的區(qū)別 268
10.5.2 嵌入式C語言數(shù)據(jù)類型的特點(diǎn) 269
習(xí)題10 270
第11章 預(yù)處理命令 271
11.1 宏定義 271
11.1.1 無參數(shù)的宏定義 271
11.1.2 有參數(shù)的宏定義 274
11.2 文件包含 277
11.3 條件編譯 278
11.4 編程實(shí)踐 280
任務(wù):串化運(yùn)算 280
11.5 知識擴(kuò)展材料 281
11.5.1 算法復(fù)雜度 281
11.5.2 算法復(fù)雜度示例 281
習(xí)題11 282
第12章 綜合案例實(shí)訓(xùn) 286
12.1 五子棋項(xiàng)目實(shí)訓(xùn) 286
12.1.1 功能模塊設(shè)計 286
12.1.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計 287
12.1.3 函數(shù)功能描述 287
12.1.4 系統(tǒng)數(shù)據(jù)流程 289
12.1.5 程序?qū)崿F(xiàn) 289
12.1.6 運(yùn)行結(jié)果 306
12.2 ATM(自動取款機(jī))案例實(shí)訓(xùn) 306
12.2.1 功能模塊設(shè)計 306
12.2.2 數(shù)據(jù)結(jié)構(gòu)分析 307
12.2.3 函數(shù)功能描述 307
12.2.4 系統(tǒng)數(shù)據(jù)流程 307
12.2.5 程序?qū)崿F(xiàn) 307
12.2.6 運(yùn)行結(jié)果 321
附錄A 常用字符與ASCII對照表 322
附錄B C語言常用語法提要 323
B.1 標(biāo)識符 323
B.2 常量 323
B.3 表達(dá)式 323
B.4 數(shù)據(jù)定義 324
B.5 函數(shù)定義 324
B.6 變量的初始化 325
B.7 語句 325
B.8 預(yù)處理命令 325
附錄C C語言的常用庫函數(shù) 326
C.1 輸入/輸出函數(shù) 326
C.2 數(shù)學(xué)函數(shù) 327
C.3 字符函數(shù)和字符串函數(shù) 328
C.4 動態(tài)存儲分配函數(shù) 328
參考文獻(xiàn) 329