前 言
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》為《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言》(ISBN 978-7-302-42444-4)的第2版。在第1版的基礎(chǔ)上,將C語(yǔ)言的編譯環(huán)境從Visual C++ 6.0改為CodeBlocks,修訂了書(shū)中的部分錯(cuò)誤,同時(shí)在章節(jié)中增加了二維碼,讀者可以通過(guò)掃描二維碼查看對(duì)應(yīng)章節(jié)的詳細(xì)視頻講解,以便進(jìn)一步學(xué)習(xí)和掌握書(shū)中的內(nèi)容。
程序設(shè)計(jì)基礎(chǔ)的入門課程——C 語(yǔ)言是目前廣泛應(yīng)用的程序設(shè)計(jì)語(yǔ)言之一,它具有功能強(qiáng)大、使用靈活、可移植性好的特點(diǎn),同時(shí)兼?zhèn)涞图?jí)語(yǔ)言和高級(jí)語(yǔ)言的優(yōu)點(diǎn),可用于編寫系統(tǒng)軟件和應(yīng)用軟件。另外,C語(yǔ)言的語(yǔ)法規(guī)則清晰,便于掌握和記憶,因此適合作為大多數(shù)人學(xué)習(xí)計(jì)算機(jī)程序設(shè)計(jì)的入門語(yǔ)言。通過(guò)《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》的學(xué)習(xí),可以加深學(xué)生對(duì)計(jì)算機(jī)系統(tǒng)的認(rèn)識(shí);建立良好的計(jì)算機(jī)思維模式;培養(yǎng)學(xué)生模塊化、結(jié)構(gòu)化編程方法與技巧;訓(xùn)練學(xué)生運(yùn)用計(jì)算機(jī)分析問(wèn)題和解決問(wèn)題的實(shí)踐能力;熟練使用CodeBlocks開(kāi)發(fā)環(huán)境進(jìn)行C語(yǔ)言編程、調(diào)試、運(yùn)行等各個(gè)環(huán)節(jié)的基本操作,為今后進(jìn)一步學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》是作者在多年C語(yǔ)言教學(xué)、研究和實(shí)踐積累的基礎(chǔ)上,吸收國(guó)內(nèi)外C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)理念和方法,依據(jù)C語(yǔ)言程序設(shè)計(jì)課程教學(xué)大綱的要求編寫而成的。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》每章都配備了大量的例題講解,所有程序例題均在CodeBlocks平臺(tái)中調(diào)試通過(guò)。程序例題采用了“問(wèn)題提出→問(wèn)題分析→算法分析→程序?qū)崿F(xiàn)→說(shuō)明歸納”的步驟講解,符合讀者的認(rèn)知規(guī)律,對(duì)例題的重點(diǎn)難點(diǎn)位置強(qiáng)化算法的分析和設(shè)計(jì),有助于讀者建立良好的思維模式,培養(yǎng)讀者分析問(wèn)題和解決問(wèn)題的能力!冻绦蛟O(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》最后通過(guò)一個(gè)綜合應(yīng)用案例——學(xué)生學(xué)籍管理系統(tǒng),按照軟件工程的思想,沿著“需求分析→總體設(shè)計(jì)→詳細(xì)設(shè)計(jì)→編碼實(shí)現(xiàn)”的軟件開(kāi)發(fā)流程,完整地開(kāi)展系統(tǒng)的分析設(shè)計(jì)與實(shí)現(xiàn),有助于讀者掌握軟件開(kāi)發(fā)的工作原理和系統(tǒng)方法。
全書(shū)共分為10章,具體內(nèi)容如下。
第1章:講述計(jì)算機(jī)編程語(yǔ)言的發(fā)展過(guò)程、在CodeBlocks集成開(kāi)發(fā)環(huán)境中編寫第一個(gè)程序的步驟和方法。
第2、3章:講解數(shù)據(jù)類型、運(yùn)算符和表達(dá)式的使用方法、基本輸入輸出函數(shù)的應(yīng)用。
第4章:講述運(yùn)用三種基本的控制結(jié)構(gòu)(順序、選擇和循環(huán))進(jìn)行編程的方法。
第5、6章:講解數(shù)組和字符串的運(yùn)用、函數(shù)的使用、變量的作用域與生存期、編譯預(yù)處理命令。
第7、8章:講解指針、結(jié)構(gòu)體、共用體的使用方法和鏈表的相關(guān)操作。
第9章:講解文件操作的標(biāo)準(zhǔn)庫(kù)函數(shù)的應(yīng)用。
第10章:完整講解一個(gè)綜合應(yīng)用案例——學(xué)生學(xué)籍管理系統(tǒng)的分析設(shè)計(jì)與實(shí)現(xiàn)的全過(guò)程。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》中加*的章節(jié)為有一定深度和開(kāi)放性的選學(xué)內(nèi)容,可以有選擇性地講授或留給學(xué)生自學(xué)。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》具有以下特色。
1. 實(shí)例豐富
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》不僅理論完備,還通過(guò)100多個(gè)實(shí)例夯實(shí)基礎(chǔ),100多個(gè)課后習(xí)題鞏固練習(xí),并通過(guò)分布在《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》第6、8和10章的3個(gè)綜合應(yīng)用案例——學(xué)生成績(jī)統(tǒng)計(jì)程序、學(xué)生成績(jī)查詢系統(tǒng)、學(xué)生學(xué)籍管理系統(tǒng)全面提升實(shí)戰(zhàn)開(kāi)發(fā)能力。
2. 一題多解
典型實(shí)例可采用多種算法來(lái)設(shè)計(jì)和實(shí)現(xiàn),有助于新舊知識(shí)對(duì)比學(xué)習(xí),融會(huì)貫通,啟迪思維,拓展讀者的程序設(shè)計(jì)能力和靈活運(yùn)用能力。
3. 貼心提示
為了便于讀者閱讀,書(shū)中還穿插了一些說(shuō)明、注意和思考等小貼士,體例約定如下。
? “說(shuō)明”:進(jìn)一步闡述相關(guān)知識(shí)點(diǎn)的應(yīng)用,力求規(guī)范、全面。
? “注意”:指出在學(xué)習(xí)過(guò)程中需要特別注意的一些知識(shí)點(diǎn)和內(nèi)容,讓讀者加深印象。同時(shí),還為讀者提供建議及解決問(wèn)題的方法。
? “思考”:讀者可利用課余時(shí)間獨(dú)立思考、解決提出的問(wèn)題,進(jìn)一步深入學(xué)習(xí)訓(xùn)練。
4. 習(xí)題豐富
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》每章最后提供了大量習(xí)題,涵蓋了每章知識(shí)的重難點(diǎn)內(nèi)容,題型靈活多樣,包括選擇題、填空題、閱讀程序填空題及編程題,方便讀者課后鞏固練習(xí)。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》可作為高等學(xué)校各相關(guān)專業(yè)“程序設(shè)計(jì)基礎(chǔ)”“C語(yǔ)言程序設(shè)計(jì)”課程的教材,也可作為程序開(kāi)發(fā)人員的培訓(xùn)用書(shū),還可作為全國(guó)計(jì)算機(jī)等級(jí)考試、編程愛(ài)好者的學(xué)習(xí)參考用書(shū)。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》還特別為任課教師免費(fèi)提供整套教學(xué)資源(教學(xué)視頻資源、電子課件、全部程序源代碼和習(xí)題參考答案等),請(qǐng)從http://www.tupwk.com.cn/downpage下載!冻绦蛟O(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》還配有相關(guān)上機(jī)環(huán)節(jié)指導(dǎo)書(shū)《程序設(shè)計(jì)基礎(chǔ)上機(jī)指導(dǎo)——C語(yǔ)言》(ISBN 978-7-302-42445-1),建議與《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》配套使用。
《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》的統(tǒng)稿工作由金蘭負(fù)責(zé),第1、2、3、4、5、7、9、10章及附錄由金蘭編寫,第6、8章由梁潔編寫,張碩和陳蘇紅老師參與了部分的改版校驗(yàn)工作。在《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》的編寫過(guò)程中,武昌首義學(xué)院的領(lǐng)導(dǎo)們給予了諸多的鼓勵(lì)和關(guān)心。書(shū)稿中的例題和習(xí)題程序的調(diào)試過(guò)程中,楊景瑩和楊明等做了大量工作。《程序設(shè)計(jì)基礎(chǔ)——C語(yǔ)言(第2版)》在編寫過(guò)程中得到了許多同行的幫助,還參閱了許多相關(guān)資料,在此衷心地感謝。因編者水平有限,書(shū)中難免會(huì)有疏漏和錯(cuò)誤之處,懇請(qǐng)廣大讀者給予指正。
服務(wù)郵箱:476371891@qq.com。
編 者
目 錄
第1章 C語(yǔ)言概述 1
1.1 計(jì)算機(jī)編程語(yǔ)言 1
1.1.1 機(jī)器語(yǔ)言 1
1.1.2 匯編語(yǔ)言 2
1.1.3 高級(jí)語(yǔ)言 3
1.2 第一個(gè)C程序 5
1.3 C程序的上機(jī)步驟 7
1.3.1 CodeBlocks的安裝 7
1.3.2 新建工程 9
1.3.3 多工程切換 13
1.3.4 單步調(diào)試程序 14
課后習(xí)題1 19
第2章 數(shù)制、基本數(shù)據(jù)類型 20
2.1 整數(shù)數(shù)制 20
2.1.1 十進(jìn)制數(shù) 20
2.1.2 二進(jìn)制數(shù) 20
2.1.3 八進(jìn)制數(shù) 22
2.1.4 十六進(jìn)制數(shù) 22
2.2 C程序常見(jiàn)符號(hào)分類 24
2.3 數(shù)據(jù)類型 25
2.3.1 數(shù)據(jù)類型的引入 25
2.3.2 類型修飾符 26
*2.3.3 C99標(biāo)準(zhǔn)中的新增類型 28
2.4 常量 28
2.4.1 整型常量 29
2.4.2 實(shí)型常量 29
2.4.3 字符常量 30
2.4.4 字符串常量 31
2.4.5 符號(hào)常量 32
2.4.6 枚舉常量 32
2.5 變量 33
2.5.1 變量的聲明與初始化 33
2.5.2 const類型修飾符 34
2.5.3 變量的類型 34
課后習(xí)題2 38
第3章 運(yùn)算符和表達(dá)式、輸入輸出 40
3.1 算術(shù)運(yùn)算符 40
3.2 賦值運(yùn)算符 42
3.3 增1、減1運(yùn)算符 43
3.4 關(guān)系運(yùn)算符 44
3.5 邏輯運(yùn)算符 45
3.6 條件運(yùn)算符 46
3.7 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 47
3.8 逗號(hào)運(yùn)算符 47
3.9 位運(yùn)算符 48
3.10 sizeof運(yùn)算符 50
3.11 類型轉(zhuǎn)換 51
3.12 運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 53
3.13 基本輸入輸出函數(shù) 54
3.13.1 字符輸入輸出函數(shù) 54
3.13.2 格式化輸入輸出函數(shù) 56
課后習(xí)題3 67
第4章 控制結(jié)構(gòu) 71
4.1 算法及其描述方法 71
4.1.1 算法的概念 71
4.1.2 算法的描述方法 72
4.2 順序結(jié)構(gòu) 74
4.3 選擇結(jié)構(gòu) 76
4.3.1 if語(yǔ)句 76
4.3.2 switch語(yǔ)句 86
4.4 循環(huán)結(jié)構(gòu) 93
4.4.1 while語(yǔ)句 94
4.4.2 do…while語(yǔ)句 97
4.4.3 for語(yǔ)句 99
4.4.4 三種循環(huán)控制語(yǔ)句的應(yīng)用舉例 102
4.4.5 循環(huán)的嵌套 107
4.4.6 提前結(jié)束循環(huán) 110
4.5 綜合應(yīng)用舉例 113
課后習(xí)題4 120
第5章 數(shù)組 125
5.1 一維數(shù)組 125
5.1.1 一維數(shù)組的定義 125
5.1.2 一維數(shù)組的引用 126
5.1.3 一維數(shù)組的初始化 126
5.1.4 一維數(shù)組程序舉例 127
5.2 二維數(shù)組 136
5.2.1 二維數(shù)組的定義 136
5.2.2 二維數(shù)組的引用 137
5.2.3 二維數(shù)組的初始化 138
5.2.4 二維數(shù)組程序舉例 138
5.3 字符數(shù)組與字符串 142
5.3.1 字符數(shù)組的初始化 142
5.3.2 字符數(shù)組的輸入/輸出 144
5.3.3 字符串處理函數(shù) 145
5.3.4 字符數(shù)組和字符串程序舉例 148
課后習(xí)題5 154
第6章 函數(shù) 158
6.1 函數(shù)的分類和定義 161
6.1.1 函數(shù)的分類 161
6.1.2 函數(shù)的定義 162
6.2 函數(shù)的調(diào)用、參數(shù)和返回值 163
6.3 函數(shù)的聲明 164
6.4 函數(shù)的嵌套調(diào)用 168
*6.5 函數(shù)的遞歸調(diào)用 169
6.5.1 遞歸問(wèn)題的提出 169
6.5.2 遞歸函數(shù) 171
6.6 數(shù)組作為函數(shù)參數(shù) 174
6.6.1 一維數(shù)組作為函數(shù)參數(shù) 174
6.6.2 二維數(shù)組作為函數(shù)參數(shù) 176
6.7 變量的作用域與生存期 178
6.7.1 局部變量 178
6.7.2 全局變量 179
6.7.3 變量的存儲(chǔ)類別 180
6.7.4 小結(jié) 184
6.8 內(nèi)部函數(shù)和外部函數(shù) 185
6.8.1 內(nèi)部函數(shù) 185
6.8.2 外部函數(shù) 186
6.9 預(yù)處理命令 188
6.9.1 宏定義 188
6.9.2 文件包含 192
6.9.3 條件編譯 193
6.10 綜合應(yīng)用舉例 194
課后習(xí)題6 201
第7章 指針 206
7.1 內(nèi)存、地址和內(nèi)容 206
7.2 指針與指針變量 207
7.2.1 指針變量的定義 207
7.2.2 指針變量的引用 208
7.2.3 指針變量作為函數(shù)參數(shù) 210
7.3 指針與數(shù)組 213
7.3.1 指向一維數(shù)組的指針 213
7.3.2 有關(guān)指針的運(yùn)算 216
7.3.3 一維數(shù)組的指針作為函數(shù)參數(shù) 217
7.3.4 指向二維數(shù)組的指針 222
7.3.5 二維數(shù)組的指針作為函數(shù)參數(shù) 225
7.4 指針與字符串 227
7.4.1 指向字符串的指針變量 227
7.4.2 指向字符串的指針作為函數(shù)參數(shù) 228
7.4.3 字符數(shù)組與字符串指針變量的區(qū)別 231
7.5 指針與函數(shù) 231
7.5.1 返回指針值的函數(shù) 232
*7.5.2 指向函數(shù)的指針 233
7.6 指針數(shù)組 234
*7.7 指向指針的指針 237
*7.8 帶參數(shù)的函數(shù)main() 239
7.9 動(dòng)態(tài)內(nèi)存分配 241
7.9.1 動(dòng)態(tài)內(nèi)存分配函數(shù) 241
*7.9.2 動(dòng)態(tài)內(nèi)存分配與變長(zhǎng)數(shù)組 244
*7.10 ANSI C的類型限定詞const 245
課后習(xí)題7 247
第8章 結(jié)構(gòu)體與共用體 253
8.1 結(jié)構(gòu)體問(wèn)題的引出 253
8.2 結(jié)構(gòu)體類型和結(jié)構(gòu)體類型變量 255
8.2.1 結(jié)構(gòu)體類型的聲明 255
8.2.2 結(jié)構(gòu)體類型變量的定義 255
8.2.3 結(jié)構(gòu)體的嵌套 257
8.3 結(jié)構(gòu)體類型變量的引用和初始化 258
8.4 結(jié)構(gòu)體數(shù)組 260
8.5 結(jié)構(gòu)體指針 263
8.5.1 指向結(jié)構(gòu)體類型變量的指針 263
8.5.2 指向結(jié)構(gòu)體數(shù)組的指針 264
8.6 結(jié)構(gòu)體與函數(shù) 266
8.7 結(jié)構(gòu)體綜合應(yīng)用實(shí)例 269
8.8 共用體 278
8.8.1 問(wèn)題的引出 278
8.8.2 聲明共用體類型和定義共用體類型的變量 279
8.8.3 共用體成員的引用 280
8.9 枚舉類型 281
8.10 typedef 283
*8.11 鏈表 284
8.11.1 問(wèn)題的引出 284
8.11.2 鏈表的定義和特點(diǎn) 285
8.11.3 鏈表的創(chuàng)建 286
8.11.4 鏈表的刪除操作 290
8.11.5 鏈表的插入操作 292
課后習(xí)題8 296
第9章 文件 304
9.1 文件概述 304
9.1.1 什么是文件 304
9.1.2 文件名 305
9.1.3 文件的分類 305
9.1.4 文件緩沖區(qū) 306
9.1.5 文件指針 306
9.2 文件的打開(kāi)與關(guān)閉 307
9.2.1 用fopen()函數(shù)打開(kāi)文件 307
9.2.2 用fclose()函數(shù)關(guān)閉文件 309
9.3 文件的讀寫 309
9.3.1 讀/寫字符函數(shù) 309
9.3.2 讀/寫字符串函數(shù) 311
9.3.3 格式化讀/寫函數(shù) 313
9.3.4 讀/寫數(shù)據(jù)塊函數(shù) 315
9.4 文件的定位 322
9.4.1 移動(dòng)文件指針 322
9.4.2 獲取文件讀寫位置 324
9.5 出錯(cuò)檢測(cè) 324
課后習(xí)題9 325
第10章 綜合應(yīng)用案例——學(xué)生學(xué)籍管理系統(tǒng) 328
10.1 需求分析 328
10.2 總體設(shè)計(jì) 329
10.2.1 系統(tǒng)總體設(shè)計(jì) 329
10.2.2 數(shù)據(jù)結(jié)構(gòu) 329
10.3 詳細(xì)設(shè)計(jì) 330
10.3.1 系統(tǒng)包含的函數(shù) 330
10.3.2 各個(gè)功能模塊的軟件功能 330
10.3.3 各個(gè)功能模塊的程序流程圖和算法描述 331
10.4 編碼實(shí)現(xiàn) 336
10.5 運(yùn)行結(jié)果 343
課后習(xí)題10 346
參考文獻(xiàn) 349
附錄A C關(guān)鍵字 350
附錄B C運(yùn)算符的優(yōu)先級(jí)和結(jié)合性 351
附錄C ASCII碼字符表 352
附錄D 常用的ANSI C標(biāo)準(zhǔn)庫(kù)函數(shù) 356
D.1 數(shù)學(xué)函數(shù) 356
D.2 字符處理函數(shù) 357
D.3 字符串處理函數(shù) 357
D.4 動(dòng)態(tài)內(nèi)存分配函數(shù) 359
D.5 緩沖文件系統(tǒng)的輸入/輸出函數(shù) 359
D.6 其他常用函數(shù) 361