C程序設計(第六版)
譚浩強
商品描述
由譚浩強教授著、清華大學出版社出版的《C程序設計》經過三十余年近兩千萬讀者的實踐檢驗,被公認為學習C語言程序設計的經典教材。根據C語言的發展趨勢和人工智能時代的編程教學需求,作者在《C程序設計(第五版)》的基礎上精心修訂,使內容更臻完善,通俗易懂,更契合當前的教學實際。本書梳理了C99,C11,C17及C23語言標準的演化,鑒於主流編譯器對新標準的支持現狀,書中示例均符合C99與C11規範,並對新舊標準的明確差異做出標註,使編寫程序更加規範;對C語言及程序設計的核心概念與要點講解透徹、深入全面;創新采用“提出問題—解決問題—歸納分析”的三部曲模式組織教學內容;書中例題均遵循“提出任務—解題思路—編寫程序—運行程序—程序分析—有關說明”的規範流程展開,符合讀者認知規律,容易入門與提高。本書內容先進,體系合理,概念清晰,講解詳盡,降低臺階,分散難點,例題豐富,深入淺出,文字流暢,通俗易懂,是初學者學習C語言程序設計的理想教材,既可作為高等學校各專業的正式教材,也適合讀者自學。本書配有輔助教材《C程序設計(第六版)學習輔導》,以及AI智能體、AI助教、微課視頻、在線題庫等豐富的教學資源。
目錄大綱
目錄
第1章程序設計和C語言1
1.1什麼是計算機程序1
1.2什麼是計算機語言1
1.3C語言的發展及其特點3
1.4最簡單的C語言程序5
1.4.1最簡單的C語言程序舉例5
1.4.2C語言程序的結構9
1.5運行C程序的步驟與方法12
1.6程序設計的任務13
習題14
第2章算法——程序的靈魂16
2.1程序=算法+數據結構16
2.2什麼是算法17
2.3簡單的算法舉例17
2.4算法的特性21
2.5怎樣表示一個算法22
2.5.1用自然語言表示算法22
2.5.2用流程圖表示算法22
2.5.3三種基本結構和改進的流程圖26
2.5.4用NS流程圖表示算法28
2.5.5用偽代碼表示算法32
2.5.6用計算機語言表示算法33
2.6結構化程序設計方法34
習題36
第3章最簡單的C程序設計——順序程序設計37
3.1順序程序設計舉例37
3.2數據的表現形式及其運算39
3.2.1常量和變量39
3.2.2數據類型42
3.2.3整型數據44
3.2.4字符型數據47
3.2.5浮點型數據49
3.2.6怎樣確定常量的類型50
3.3運算符和表達式52
3.3.1C運算符52
3.3.2基本的算術運算符52
3.3.3自增(++)、自減(--)運算符53
3.3.4算術表達式和運算符的優先級與結合性53
3.3.5不同類型數據間的混合運算54
3.3.6強制類型轉換運算符55
3.4C語句56
3.4.1C語句的作用和分類56
3.4.2最基本的語句——賦值語句58
3.5數據的輸入輸出64
3.5.1輸入輸出舉例64
3.5.2有關數據輸入輸出的概念65
3.5.3用printf函數輸出數據67
3.5.4用scanf函數輸入數據73
3.5.5字符輸入輸出函數76
習題79
第4章選擇結構程序設計82
4.1選擇結構和條件判斷82
4.2用if語句實現選擇結構84
4.2.1用if語句處理選擇結構舉例84
4.2.2if語句的一般形式86
4.3關系運算符和關系表達式88
4.3.1關系運算符及其優先次序88
4.3.2關系表達式89
4.4邏輯運算符和邏輯表達式89
4.4.1邏輯運算符及其優先次序90
4.4.2邏輯表達式90
4.5條件運算符和條件表達式93
4.6選擇結構的嵌套95
4.7用switch語句實現多分支選擇結構97
4.8選擇結構程序綜合舉例100
習題105
第5章循環結構程序設計108
5.1為什麼需要循環控制108
5.2用while語句實現循環109
5.3用do…while語句實現循環110
5.4用for語句實現循環114
5.5循環的嵌套118
5.6幾種循環的比較119
5.7改變循環執行的狀態119
5.7.1用break語句提前終止循環119
5.7.2用continue語句提前結束本次循環121
5.7.3break語句和continue語句的區別122
5.8循環程序舉例124
習題134
第6章利用數組處理批量數據136
6.1怎樣定義和引用一維數組136
6.1.1怎樣定義一維數組137
6.1.2怎樣引用一維數組元素137
6.1.3一維數組的初始化138
6.1.4一維數組程序舉例139
6.2怎樣定義和引用二維數組142
6.2.1怎樣定義二維數組142
6.2.2怎樣引用二維數組的元素144
6.2.3二維數組的初始化144
6.2.4二維數組程序舉例145
6.3字符數組147
6.3.1怎樣定義字符數組147
6.3.2字符數組的初始化148
6.3.3怎樣引用字符數組中的元素148
6.3.4字符串和字符串結束標誌149
6.3.5字符數組的輸入輸出151
6.3.6使用字符串處理函數153
6.3.7字符數組應用舉例157
習題160
第7章用函數實現模塊化程序設計162
7.1為什麼要用函數162
7.2怎樣定義函數164
7.2.1為什麼要定義函數164
7.2.2定義函數的方法165
7.3調用函數166
7.3.1函數調用的形式166
7.3.2函數調用時的數據傳遞167
7.3.3函數調用的過程169
7.3.4函數的返回值169
7.4對被調用函數的聲明和函數原型171
7.5函數的嵌套調用174
7.6函數的遞歸調用176
7.7數組作為函數參數183
7.7.1數組元素作函數實參184
7.7.2一維數組名作函數參數185
7.7.3多維數組名作函數參數188
7.8局部變量和全局變量190
7.8.1局部變量190
7.8.2全局變量191
7.9變量的存儲方式和生存期195
7.9.1動態存儲方式與靜態存儲方式195
7.9.2局部變量的存儲類別196
7.9.3全局變量的存儲類別199
7.9.4存儲類別小結203
7.10關於變量的聲明和定義205
7.11內部函數和外部函數206
7.11.1內部函數206
7.11.2外部函數206
習題209
第8章善於利用指針211
8.1指針是什麼211
8.2指針變量213
8.2.1使用指針變量的例子213
8.2.2怎樣定義指針變量214
8.2.3怎樣引用指針變量216
8.2.4指針變量作為函數參數217
8.3通過指針引用數組222
8.3.1數組元素的指針222
8.3.2在引用數組元素時指針的運算223
8.3.3通過指針引用數組元素224
8.3.4用數組名作函數參數229
8.3.5通過指針引用多維數組236
8.4通過指針引用字符串246
8.4.1字符串的引用方式246
8.4.2字符指針作函數參數250
8.4.3使用字符指針變量和字符數組的比較254
8.5指向函數的指針256
8.5.1什麼是函數的指針256
8.5.2用函數指針變量調用函數257
8.5.3怎樣定義和使用指向函數的指針變量258
8.5.4用指向函數的指針作函數參數261
8.6返回指針值的函數264
8.7指針數組和多重指針267
8.7.1什麼是指針數組267
8.7.2指向指針數據的指針變量269
8.7.3指針數組作main函數的形參272
8.8動態內存分配與指向它的指針變量274
8.8.1什麼是內存的動態分配274
8.8.2怎樣建立內存的動態分配275
8.8.3void指針類型276
8.9有關指針的小結278
習題281
第9章用戶自己建立數據類型283
9.1定義和使用結構體變量283
9.1.1自己建立結構體類型283
9.1.2定義結構體類型變量285
9.1.3結構體變量的初始化和引用286
9.2使用結構體數組289
9.2.1定義結構體數組289
9.2.2結構體數組的應用舉例291
9.3結構體指針292
9.3.1指向結構體變量的指針292
9.3.2指向結構體數組的指針294
9.3.3用結構體變量和結構體變量的指針作函數參數295
9.4用指針處理鏈表298
9.4.1什麼是鏈表298
9.4.2建立簡單的靜態鏈表299
9.4.3建立動態鏈表300
9.4.4輸出鏈表303
9.5共用體類型306
9.5.1什麼是共用體類型306
9.5.2引用共用體變量的方式307
9.5.3共用體類型數據的特點307
9.6使用枚舉類型311
9.7用typedef聲明新類型名314
習題317
第10章對文件的輸入輸出319
10.1C文件的有關基本知識319
10.1.1什麼是文件319
10.1.2文件名320
10.1.3文件的分類320
10.1.4文件緩沖區321
10.1.5文件類型指針321
10.2打開與關閉文件323
10.2.1用fopen函數打開數據文件323
10.2.2用fclose函數關閉數據文件325
10.3順序讀寫數據文件326
10.3.1怎樣向文件讀寫字符326
10.3.2怎樣向文件讀寫一個字符串329
10.3.3用格式化的方式讀寫文本文件333
10.3.4用二進制方式向文件讀寫一組數據333
10.4隨機讀寫數據文件338
10.4.1文件位置標記及其定位338
10.4.2隨機讀寫 341
10.5文件讀寫的出錯檢測342
習題343
附錄344
附錄A常用字符與ASCII碼對照表344
附錄BC語言中的關鍵字345
附錄C運算符和結合性346
附錄DC語言常用語法提要349
附錄EC庫函數353
參考文獻359







