前 言
《程序設(shè)計基礎(chǔ)——C語言(第2版)》為《程序設(shè)計基礎(chǔ)——C語言》(ISBN 978-7-302-42444-4)的第2版。在第1版的基礎(chǔ)上,將C語言的編譯環(huán)境從Visual C++ 6.0改為CodeBlocks,修訂了書中的部分錯誤,同時在章節(jié)中增加了二維碼,讀者可以通過掃描二維碼查看對應(yīng)章節(jié)的詳細(xì)視頻講解,以便進(jìn)一步學(xué)習(xí)和掌握書中的內(nèi)容。
程序設(shè)計基礎(chǔ)的入門課程——C 語言是目前廣泛應(yīng)用的程序設(shè)計語言之一,它具有功能強(qiáng)大、使用靈活、可移植性好的特點(diǎn),同時兼?zhèn)涞图壵Z言和高級語言的優(yōu)點(diǎn),可用于編寫系統(tǒng)軟件和應(yīng)用軟件。另外,C語言的語法規(guī)則清晰,便于掌握和記憶,因此適合作為大多數(shù)人學(xué)習(xí)計算機(jī)程序設(shè)計的入門語言。通過《程序設(shè)計基礎(chǔ)——C語言(第2版)》的學(xué)習(xí),可以加深學(xué)生對計算機(jī)系統(tǒng)的認(rèn)識;建立良好的計算機(jī)思維模式;培養(yǎng)學(xué)生模塊化、結(jié)構(gòu)化編程方法與技巧;訓(xùn)練學(xué)生運(yùn)用計算機(jī)分析問題和解決問題的實(shí)踐能力;熟練使用CodeBlocks開發(fā)環(huán)境進(jìn)行C語言編程、調(diào)試、運(yùn)行等各個環(huán)節(jié)的基本操作,為今后進(jìn)一步學(xué)習(xí)打下堅實(shí)的基礎(chǔ)。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》是作者在多年C語言教學(xué)、研究和實(shí)踐積累的基礎(chǔ)上,吸收國內(nèi)外C語言程序設(shè)計課程的教學(xué)理念和方法,依據(jù)C語言程序設(shè)計課程教學(xué)大綱的要求編寫而成的。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》每章都配備了大量的例題講解,所有程序例題均在CodeBlocks平臺中調(diào)試通過。程序例題采用了“問題提出→問題分析→算法分析→程序?qū)崿F(xiàn)→說明歸納”的步驟講解,符合讀者的認(rèn)知規(guī)律,對例題的重點(diǎn)難點(diǎn)位置強(qiáng)化算法的分析和設(shè)計,有助于讀者建立良好的思維模式,培養(yǎng)讀者分析問題和解決問題的能力!冻绦蛟O(shè)計基礎(chǔ)——C語言(第2版)》最后通過一個綜合應(yīng)用案例——學(xué)生學(xué)籍管理系統(tǒng),按照軟件工程的思想,沿著“需求分析→總體設(shè)計→詳細(xì)設(shè)計→編碼實(shí)現(xiàn)”的軟件開發(fā)流程,完整地開展系統(tǒng)的分析設(shè)計與實(shí)現(xiàn),有助于讀者掌握軟件開發(fā)的工作原理和系統(tǒng)方法。
全書共分為10章,具體內(nèi)容如下。
第1章:講述計算機(jī)編程語言的發(fā)展過程、在CodeBlocks集成開發(fā)環(huán)境中編寫第一個程序的步驟和方法。
第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)庫函數(shù)的應(yīng)用。
第10章:完整講解一個綜合應(yīng)用案例——學(xué)生學(xué)籍管理系統(tǒng)的分析設(shè)計與實(shí)現(xiàn)的全過程。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》中加*的章節(jié)為有一定深度和開放性的選學(xué)內(nèi)容,可以有選擇性地講授或留給學(xué)生自學(xué)。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》具有以下特色。
1. 實(shí)例豐富
《程序設(shè)計基礎(chǔ)——C語言(第2版)》不僅理論完備,還通過100多個實(shí)例夯實(shí)基礎(chǔ),100多個課后習(xí)題鞏固練習(xí),并通過分布在《程序設(shè)計基礎(chǔ)——C語言(第2版)》第6、8和10章的3個綜合應(yīng)用案例——學(xué)生成績統(tǒng)計程序、學(xué)生成績查詢系統(tǒng)、學(xué)生學(xué)籍管理系統(tǒng)全面提升實(shí)戰(zhàn)開發(fā)能力。
2. 一題多解
典型實(shí)例可采用多種算法來設(shè)計和實(shí)現(xiàn),有助于新舊知識對比學(xué)習(xí),融會貫通,啟迪思維,拓展讀者的程序設(shè)計能力和靈活運(yùn)用能力。
3. 貼心提示
為了便于讀者閱讀,書中還穿插了一些說明、注意和思考等小貼士,體例約定如下。
? “說明”:進(jìn)一步闡述相關(guān)知識點(diǎn)的應(yīng)用,力求規(guī)范、全面。
? “注意”:指出在學(xué)習(xí)過程中需要特別注意的一些知識點(diǎn)和內(nèi)容,讓讀者加深印象。同時,還為讀者提供建議及解決問題的方法。
? “思考”:讀者可利用課余時間獨(dú)立思考、解決提出的問題,進(jìn)一步深入學(xué)習(xí)訓(xùn)練。
4. 習(xí)題豐富
《程序設(shè)計基礎(chǔ)——C語言(第2版)》每章最后提供了大量習(xí)題,涵蓋了每章知識的重難點(diǎn)內(nèi)容,題型靈活多樣,包括選擇題、填空題、閱讀程序填空題及編程題,方便讀者課后鞏固練習(xí)。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》可作為高等學(xué)校各相關(guān)專業(yè)“程序設(shè)計基礎(chǔ)”“C語言程序設(shè)計”課程的教材,也可作為程序開發(fā)人員的培訓(xùn)用書,還可作為全國計算機(jī)等級考試、編程愛好者的學(xué)習(xí)參考用書。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》還特別為任課教師免費(fèi)提供整套教學(xué)資源(教學(xué)視頻資源、電子課件、全部程序源代碼和習(xí)題參考答案等),請從http://www.tupwk.com.cn/downpage下載!冻绦蛟O(shè)計基礎(chǔ)——C語言(第2版)》還配有相關(guān)上機(jī)環(huán)節(jié)指導(dǎo)書《程序設(shè)計基礎(chǔ)上機(jī)指導(dǎo)——C語言》(ISBN 978-7-302-42445-1),建議與《程序設(shè)計基礎(chǔ)——C語言(第2版)》配套使用。
《程序設(shè)計基礎(chǔ)——C語言(第2版)》的統(tǒng)稿工作由金蘭負(fù)責(zé),第1、2、3、4、5、7、9、10章及附錄由金蘭編寫,第6、8章由梁潔編寫,張碩和陳蘇紅老師參與了部分的改版校驗(yàn)工作。在《程序設(shè)計基礎(chǔ)——C語言(第2版)》的編寫過程中,武昌首義學(xué)院的領(lǐng)導(dǎo)們給予了諸多的鼓勵和關(guān)心。書稿中的例題和習(xí)題程序的調(diào)試過程中,楊景瑩和楊明等做了大量工作!冻绦蛟O(shè)計基礎(chǔ)——C語言(第2版)》在編寫過程中得到了許多同行的幫助,還參閱了許多相關(guān)資料,在此衷心地感謝。因編者水平有限,書中難免會有疏漏和錯誤之處,懇請廣大讀者給予指正。
服務(wù)郵箱:476371891@qq.com。
編 者
目 錄
第1章 C語言概述 1
1.1 計算機(jī)編程語言 1
1.1.1 機(jī)器語言 1
1.1.2 匯編語言 2
1.1.3 高級語言 3
1.2 第一個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程序常見符號分類 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 符號常量 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 逗號運(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)先級和結(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語句 76
4.3.2 switch語句 86
4.4 循環(huán)結(jié)構(gòu) 93
4.4.1 while語句 94
4.4.2 do…while語句 97
4.4.3 for語句 99
4.4.4 三種循環(huán)控制語句的應(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 遞歸問題的提出 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 變量的存儲類別 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 動態(tài)內(nèi)存分配 241
7.9.1 動態(tài)內(nèi)存分配函數(shù) 241
*7.9.2 動態(tài)內(nèi)存分配與變長數(shù)組 244
*7.10 ANSI C的類型限定詞const 245
課后習(xí)題7 247
第8章 結(jié)構(gòu)體與共用體 253
8.1 結(jié)構(gòu)體問題的引出 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 問題的引出 278
8.8.2 聲明共用體類型和定義共用體類型的變量 279
8.8.3 共用體成員的引用 280
8.9 枚舉類型 281
8.10 typedef 283
*8.11 鏈表 284
8.11.1 問題的引出 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 文件的打開與關(guān)閉 307
9.2.1 用fopen()函數(shù)打開文件 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 移動文件指針 322
9.4.2 獲取文件讀寫位置 324
9.5 出錯檢測 324
課后習(xí)題9 325
第10章 綜合應(yīng)用案例——學(xué)生學(xué)籍管理系統(tǒng) 328
10.1 需求分析 328
10.2 總體設(shè)計 329
10.2.1 系統(tǒng)總體設(shè)計 329
10.2.2 數(shù)據(jù)結(jié)構(gòu) 329
10.3 詳細(xì)設(shè)計 330
10.3.1 系統(tǒng)包含的函數(shù) 330
10.3.2 各個功能模塊的軟件功能 330
10.3.3 各個功能模塊的程序流程圖和算法描述 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)先級和結(jié)合性 351
附錄C ASCII碼字符表 352
附錄D 常用的ANSI C標(biāo)準(zhǔn)庫函數(shù) 356
D.1 數(shù)學(xué)函數(shù) 356
D.2 字符處理函數(shù) 357
D.3 字符串處理函數(shù) 357
D.4 動態(tài)內(nèi)存分配函數(shù) 359
D.5 緩沖文件系統(tǒng)的輸入/輸出函數(shù) 359
D.6 其他常用函數(shù) 361