C語言是國內(nèi)外廣泛使用的編程語言,已被大多數(shù)高等學校作為典型的計算機教學語言!冻绦蛟O計基礎——C語言(第2版)》共10章,內(nèi)容包括:C語言概述,數(shù)制、基本數(shù)據(jù)類型,運算符和表達式、輸入輸出,控制結構,數(shù)組,函數(shù),指針,結構體與共用體,文件,綜合應用案例——學生學籍管理系統(tǒng),以及4個附錄。
《程序設計基礎——C語言(第2版)》內(nèi)容深入淺出,例題豐富,側重程序設計思維的構建和程序算法的分析與設計。《程序設計基礎——C語言(第2版)》采用“問題提出→問題分析→算法分析→程序實現(xiàn)→說明歸納”的步驟組織教材內(nèi)容,符合讀者的認知規(guī)律,強化了算法的分析和設計,有助于幫助讀者建立良好的思維模式,培養(yǎng)讀者分析問題和解決問題的能力,掌握軟件開發(fā)的工作原理和系統(tǒng)方法。書中的典型程序一題多解,有助于新舊知識對比學習,融會貫通,啟迪思維,拓展讀者的程序設計能力和靈活運用能力。
《程序設計基礎——C語言(第2版)》可作為高等學校各相關專業(yè)“程序設計基礎”“C語言程序設計”課程的教材,也可作為程序開發(fā)人員的培訓用書,還可作為全國計算機等級考試、編程愛好者的學習參考用書。
前 言
《程序設計基礎——C語言(第2版)》為《程序設計基礎——C語言》(ISBN 978-7-302-42444-4)的第2版。在第1版的基礎上,將C語言的編譯環(huán)境從Visual C++ 6.0改為CodeBlocks,修訂了書中的部分錯誤,同時在章節(jié)中增加了二維碼,讀者可以通過掃描二維碼查看對應章節(jié)的詳細視頻講解,以便進一步學習和掌握書中的內(nèi)容。
程序設計基礎的入門課程——C 語言是目前廣泛應用的程序設計語言之一,它具有功能強大、使用靈活、可移植性好的特點,同時兼?zhèn)涞图壵Z言和高級語言的優(yōu)點,可用于編寫系統(tǒng)軟件和應用軟件。另外,C語言的語法規(guī)則清晰,便于掌握和記憶,因此適合作為大多數(shù)人學習計算機程序設計的入門語言。通過《程序設計基礎——C語言(第2版)》的學習,可以加深學生對計算機系統(tǒng)的認識;建立良好的計算機思維模式;培養(yǎng)學生模塊化、結構化編程方法與技巧;訓練學生運用計算機分析問題和解決問題的實踐能力;熟練使用CodeBlocks開發(fā)環(huán)境進行C語言編程、調(diào)試、運行等各個環(huán)節(jié)的基本操作,為今后進一步學習打下堅實的基礎。
《程序設計基礎——C語言(第2版)》是作者在多年C語言教學、研究和實踐積累的基礎上,吸收國內(nèi)外C語言程序設計課程的教學理念和方法,依據(jù)C語言程序設計課程教學大綱的要求編寫而成的。
《程序設計基礎——C語言(第2版)》每章都配備了大量的例題講解,所有程序例題均在CodeBlocks平臺中調(diào)試通過。程序例題采用了“問題提出→問題分析→算法分析→程序實現(xiàn)→說明歸納”的步驟講解,符合讀者的認知規(guī)律,對例題的重點難點位置強化算法的分析和設計,有助于讀者建立良好的思維模式,培養(yǎng)讀者分析問題和解決問題的能力!冻绦蛟O計基礎——C語言(第2版)》最后通過一個綜合應用案例——學生學籍管理系統(tǒng),按照軟件工程的思想,沿著“需求分析→總體設計→詳細設計→編碼實現(xiàn)”的軟件開發(fā)流程,完整地開展系統(tǒng)的分析設計與實現(xiàn),有助于讀者掌握軟件開發(fā)的工作原理和系統(tǒng)方法。
全書共分為10章,具體內(nèi)容如下。
第1章:講述計算機編程語言的發(fā)展過程、在CodeBlocks集成開發(fā)環(huán)境中編寫第一個程序的步驟和方法。
第2、3章:講解數(shù)據(jù)類型、運算符和表達式的使用方法、基本輸入輸出函數(shù)的應用。
第4章:講述運用三種基本的控制結構(順序、選擇和循環(huán))進行編程的方法。
第5、6章:講解數(shù)組和字符串的運用、函數(shù)的使用、變量的作用域與生存期、編譯預處理命令。
第7、8章:講解指針、結構體、共用體的使用方法和鏈表的相關操作。
第9章:講解文件操作的標準庫函數(shù)的應用。
第10章:完整講解一個綜合應用案例——學生學籍管理系統(tǒng)的分析設計與實現(xiàn)的全過程。
《程序設計基礎——C語言(第2版)》中加*的章節(jié)為有一定深度和開放性的選學內(nèi)容,可以有選擇性地講授或留給學生自學。
《程序設計基礎——C語言(第2版)》具有以下特色。
1. 實例豐富
《程序設計基礎——C語言(第2版)》不僅理論完備,還通過100多個實例夯實基礎,100多個課后習題鞏固練習,并通過分布在《程序設計基礎——C語言(第2版)》第6、8和10章的3個綜合應用案例——學生成績統(tǒng)計程序、學生成績查詢系統(tǒng)、學生學籍管理系統(tǒng)全面提升實戰(zhàn)開發(fā)能力。
2. 一題多解
典型實例可采用多種算法來設計和實現(xiàn),有助于新舊知識對比學習,融會貫通,啟迪思維,拓展讀者的程序設計能力和靈活運用能力。
3. 貼心提示
為了便于讀者閱讀,書中還穿插了一些說明、注意和思考等小貼士,體例約定如下。
? “說明”:進一步闡述相關知識點的應用,力求規(guī)范、全面。
? “注意”:指出在學習過程中需要特別注意的一些知識點和內(nèi)容,讓讀者加深印象。同時,還為讀者提供建議及解決問題的方法。
? “思考”:讀者可利用課余時間獨立思考、解決提出的問題,進一步深入學習訓練。
4. 習題豐富
《程序設計基礎——C語言(第2版)》每章最后提供了大量習題,涵蓋了每章知識的重難點內(nèi)容,題型靈活多樣,包括選擇題、填空題、閱讀程序填空題及編程題,方便讀者課后鞏固練習。
《程序設計基礎——C語言(第2版)》可作為高等學校各相關專業(yè)“程序設計基礎”“C語言程序設計”課程的教材,也可作為程序開發(fā)人員的培訓用書,還可作為全國計算機等級考試、編程愛好者的學習參考用書。
《程序設計基礎——C語言(第2版)》還特別為任課教師免費提供整套教學資源(教學視頻資源、電子課件、全部程序源代碼和習題參考答案等),請從http://www.tupwk.com.cn/downpage下載!冻绦蛟O計基礎——C語言(第2版)》還配有相關上機環(huán)節(jié)指導書《程序設計基礎上機指導——C語言》(ISBN 978-7-302-42445-1),建議與《程序設計基礎——C語言(第2版)》配套使用。
《程序設計基礎——C語言(第2版)》的統(tǒng)稿工作由金蘭負責,第1、2、3、4、5、7、9、10章及附錄由金蘭編寫,第6、8章由梁潔編寫,張碩和陳蘇紅老師參與了部分的改版校驗工作。在《程序設計基礎——C語言(第2版)》的編寫過程中,武昌首義學院的領導們給予了諸多的鼓勵和關心。書稿中的例題和習題程序的調(diào)試過程中,楊景瑩和楊明等做了大量工作。《程序設計基礎——C語言(第2版)》在編寫過程中得到了許多同行的幫助,還參閱了許多相關資料,在此衷心地感謝。因編者水平有限,書中難免會有疏漏和錯誤之處,懇請廣大讀者給予指正。
服務郵箱:476371891@qq.com。
編 者
目 錄
第1章 C語言概述 1
1.1 計算機編程語言 1
1.1.1 機器語言 1
1.1.2 匯編語言 2
1.1.3 高級語言 3
1.2 第一個C程序 5
1.3 C程序的上機步驟 7
1.3.1 CodeBlocks的安裝 7
1.3.2 新建工程 9
1.3.3 多工程切換 13
1.3.4 單步調(diào)試程序 14
課后習題1 19
第2章 數(shù)制、基本數(shù)據(jù)類型 20
2.1 整數(shù)數(shù)制 20
2.1.1 十進制數(shù) 20
2.1.2 二進制數(shù) 20
2.1.3 八進制數(shù) 22
2.1.4 十六進制數(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標準中的新增類型 28
2.4 常量 28
2.4.1 整型常量 29
2.4.2 實型常量 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
課后習題2 38
第3章 運算符和表達式、輸入輸出 40
3.1 算術運算符 40
3.2 賦值運算符 42
3.3 增1、減1運算符 43
3.4 關系運算符 44
3.5 邏輯運算符 45
3.6 條件運算符 46
3.7 強制類型轉換運算符 47
3.8 逗號運算符 47
3.9 位運算符 48
3.10 sizeof運算符 50
3.11 類型轉換 51
3.12 運算符的優(yōu)先級和結合性 53
3.13 基本輸入輸出函數(shù) 54
3.13.1 字符輸入輸出函數(shù) 54
3.13.2 格式化輸入輸出函數(shù) 56
課后習題3 67
第4章 控制結構 71
4.1 算法及其描述方法 71
4.1.1 算法的概念 71
4.1.2 算法的描述方法 72
4.2 順序結構 74
4.3 選擇結構 76
4.3.1 if語句 76
4.3.2 switch語句 86
4.4 循環(huán)結構 93
4.4.1 while語句 94
4.4.2 do…while語句 97
4.4.3 for語句 99
4.4.4 三種循環(huán)控制語句的應用舉例 102
4.4.5 循環(huán)的嵌套 107
4.4.6 提前結束循環(huán) 110
4.5 綜合應用舉例 113
課后習題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
課后習題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 小結 184
6.8 內(nèi)部函數(shù)和外部函數(shù) 185
6.8.1 內(nèi)部函數(shù) 185
6.8.2 外部函數(shù) 186
6.9 預處理命令 188
6.9.1 宏定義 188
6.9.2 文件包含 192
6.9.3 條件編譯 193
6.10 綜合應用舉例 194
課后習題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 有關指針的運算 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
課后習題7 247
第8章 結構體與共用體 253
8.1 結構體問題的引出 253
8.2 結構體類型和結構體類型變量 255
8.2.1 結構體類型的聲明 255
8.2.2 結構體類型變量的定義 255
8.2.3 結構體的嵌套 257
8.3 結構體類型變量的引用和初始化 258
8.4 結構體數(shù)組 260
8.5 結構體指針 263
8.5.1 指向結構體類型變量的指針 263
8.5.2 指向結構體數(shù)組的指針 264
8.6 結構體與函數(shù) 266
8.7 結構體綜合應用實例 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 鏈表的定義和特點 285
8.11.3 鏈表的創(chuàng)建 286
8.11.4 鏈表的刪除操作 290
8.11.5 鏈表的插入操作 292
課后習題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 文件的打開與關閉 307
9.2.1 用fopen()函數(shù)打開文件 307
9.2.2 用fclose()函數(shù)關閉文件 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
課后習題9 325
第10章 綜合應用案例——學生學籍管理系統(tǒng) 328
10.1 需求分析 328
10.2 總體設計 329
10.2.1 系統(tǒng)總體設計 329
10.2.2 數(shù)據(jù)結構 329
10.3 詳細設計 330
10.3.1 系統(tǒng)包含的函數(shù) 330
10.3.2 各個功能模塊的軟件功能 330
10.3.3 各個功能模塊的程序流程圖和算法描述 331
10.4 編碼實現(xiàn) 336
10.5 運行結果 343
課后習題10 346
參考文獻 349
附錄A C關鍵字 350
附錄B C運算符的優(yōu)先級和結合性 351
附錄C ASCII碼字符表 352
附錄D 常用的ANSI C標準庫函數(shù) 356
D.1 數(shù)學函數(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