程式設計基礎(C語言)(第3版)

程式設計基礎(C語言)(第3版)

《程式設計基礎(C語言)(第3版)》是由高克寧等編著,2018年清華大學出版社出版的“十二五”普通高等教育本科國家級規劃教材、高等學校計算機基礎教育規劃教材、教育部-英特爾精品課程配套教材、遼寧省精品課程配套教材。該教材適合作為高等學校程式設計基礎課程的教材,也可供程式設計愛好者學習。

該教材介紹程式設計的基本方法和技術,全書共15章,以程式設計思想、程式設計語言、程式設計技術和軟體工程管理四條主線組織內容。

基本介紹

  • 書名:程式設計基礎(C語言)(第3版)
  • 作者:高克寧、李金雙、趙長寬、柳秀梅、徐彬
  • ISBN:9787302488439
  • 類別:“十二五”普通高等教育本科國家級規劃教材
  • 頁數:489頁
  • 出版社:清華大學出版社
  • 出版時間:2018年1月1日
  • 裝幀:平裝
  • 開本:16開
  • 字數:733千字
  • CIP核字號:2017284894
成書過程,修訂情況,出版工作,內容簡介,教材目錄,教學資源,教材特色,作者簡介,

成書過程

修訂情況

該教材由高克寧教授主編,副主編有李金雙、趙長寬、柳秀梅和徐彬。其中第1章由高克寧編寫,第2~5章由李金雙編寫,第7、12、14、15章由趙長寬編寫,第6、9、11章由柳秀梅編寫,第8、10、13章由徐彬編寫。高克寧、趙長寬負責全書的統稿。

出版工作

2018年1月1日,該教材由清華大學出版社出版。
出版社工作人員
責任編輯封面設計責任校對責任印製
袁勤勇、戰曉雷
常雪影
焦麗麗
李紅英

內容簡介

該教材共分15章。第1章按照計算設備的發展過程,介紹圖靈機及現代計算機的工作原理、問題求解與算法以及主流的程式設計思想和程式設計語言。第2章從信息編碼與存儲著手,介紹基本標識符、數據類型、常量和變數。第3章從數值計算角度出發,介紹運算符、表達式、輸入輸出函式館、數值計算函式館以及基本程式設計語句。第4章重點介紹邏輯運算與選擇結構及其實現。第5章介紹疊代邏輯與循環結構及其實現。
第6章從集合數據處理角度介紹數組、字元串及其實現。第7章從分工和重用角度介紹函式以及基於多檔案的程式結構。第8章從地址角度介紹如何通過指針處理數據和指令。第9章圍繞複雜數據結構的表示形式,介紹結構體、共用體和線性鍊表。第10章介紹預編譯處理及其程式移植和泛化編程。
第11章從數據永久存儲角度介紹檔案和常用函式。第12章匯總了常見問題的求解算法。第13章從代碼和數據封裝的角度介紹面向對象的程式設計思想。第14章從高性能計算角度介紹並行程式設計的基本思想以及MPI、OpenMP和多執行緒技術。第15章從培養合格程式設計人員的角度介紹程式設計規範和代碼重用技術,並引入軟體工程的概念,初步介紹個體軟體過程(PSP)。

教材目錄

第1章計算機及程式設計概述11.1概述1
1.2計算與機器2
1.2.1計算器2
1.2.2機械式計算機2
1.2.3圖靈機模型3
1.2.4電子數字計算機4
1.3指令與程式5
1.4計算機的典型套用6
1.5程式設計語言7
1.5.1機器語言8
1.5.2彙編語言8
1.5.3高級語言9
1.6問題求解與算法11
1.6.1算法定義12
1.6.2算法複雜性12
1.7算法描述13
1.7.1偽代碼13
1.7.2流程圖14
1.7.3NS圖15
1.8程式設計15
1.8.1基本步驟15
1.8.2結構化程式設計16
1.8.3面向對象程式設計17
1.8.4並行程式設計17
1.8.5程式設計思想前沿18
1.9C語言簡介18
1.9.1C語言的特點18
1.9.2簡單的C程式設計19
1.9.3C語言程式結構21
1.9.4C程式設計過程23
1.10案例24
練習題25
第2章信息編碼與數據類型27
2.1概述27
2.2二進制與信息編碼27
2.2.1整數編碼27
2.2.2實數編碼28
2.2.3字元編碼29
2.3標識符和關鍵字30
2.3.1標識符構成30
2.3.2關鍵字30
2.3.3自定義標識符31
2.4基本數據類型31
2.4.1整數類型33
2.4.2實數類型34
2.4.3字元類型34
2.4.4邏輯類型36
2.4.5複數類型36
2.5常量37
2.5.1整型常量37
2.5.2實型常量38
2.5.3字元常量38
2.5.4字元串常量39
2.5.5邏輯常量40
2.5.6複數常量40
2.5.7符號常量41
2.6變數41
2.6.1變數聲明42
2.6.2變數初始化43
2.6.3變數賦值44
2.6.4變數讀寫45
2.7案例45
練習題46
第3章基本運算與順序結構48
3.1概述48
3.2運算符與表達式48
3.3賦值運算50
3.4算術運算51
3.4.1基本算術運算51
3.4.2自增或自減運算52
3.4.3整數運算53
3.4.4實數運算55
3.4.5複合賦值運算56
3.5字元運算56
3.5.1算術運算56
3.5.2字元分類57
3.5.3字元轉換58
3.6位運算58
3.6.1位邏輯運算58
3.6.2位移運算60
3.6.3複合位運算及補位原則61
3.7逗號運算61
3.8強制類型轉換62
3.8.1算術運算中的隱式轉換62
3.8.2賦值運算中的隱式轉換62
3.8.3顯式轉換63
3.9sizeof運算64
3.10標準設備輸入輸出庫64
3.10.1字元輸入輸出函式65
3.10.2格式化輸出函式66
3.10.3格式化輸入函式72
3.11數學庫76
3.11.1實數計算函式76
3.11.2複數運算函式77
3.12基本語句78
3.12.1標籤語句78
3.12.2空語句78
3.12.3聲明語句79
3.12.4表達式語句79
3.12.5複合語句79
3.13順序結構80
3.14案例82
練習題83
第4章邏輯判斷與選擇結構85
4.1概述85
4.2關係運算85
4.3邏輯運算86
4.4條件運算88
4.5if語句89
4.5.1單分支選擇結構89
4.5.2雙分支選擇結構91
4.5.3多分支選擇結構93
4.6switch語句96
4.7選擇結構嵌套101
4.8案例106
練習題108
第5章疊代計算與循環結構109
5.1概述109
5.2while語句110
5.3do…while語句112
5.4for語句115
5.5循環語句對比118
5.6循環嵌套119
5.7跳轉控制語句124
5.7.1break語句124
5.7.2continue語句126
5.7.3goto語句126
5.7.4continue、break、goto語句的區別128
5.8案例129
練習題131
第6章集合數據與數組133
6.1概述133
6.2一維數組134
6.2.1一維數組定義134
6.2.2一維數組初始化135
6.2.3一維數組引用136
6.2.4一維數組套用137
6.3二維數組140
6.3.1二維數組定義141
6.3.2二維數組初始化142
6.3.3二維數組引用143
6.3.4二維數組套用143
6.4高維數組147
6.5字元數組與字元串149
6.5.1字元數組149
6.5.2字元串151
6.6字元串處理函式155
6.6.1字元串標準輸入輸出函式155
6.6.2字元串輸入輸出函式157
6.6.3字元串複製函式158
6.6.4字元串連線函式159
6.6.5字元串比較函式159
6.6.6字元串檢索函式160
6.6.7字元串轉換函式162
6.6.8其他字元串常用函式162
6.6.9寬位元組型字元串函式163
6.7數組新特性164
6.8案例165
練習題166
第7章模組化與函式168
7.1概述168
7.2函式定義170
7.2.1函式定義形式170
7.2.2函式返回值與函式類型173
7.3函式聲明、頭檔案的使用和庫函式聲明176
7.3.1函式聲明176
7.3.2頭檔案的使用177
7.3.3庫函式聲明178
7.4參數傳遞180
7.4.1形式參數180
7.4.2實際參數182
7.4.3值複製傳遞機制183
7.4.4地址複製傳遞機制185
7.4.5數組參數新特性189
7.5函式調用190
7.5.1函式調用形式190
7.5.2嵌套調用191
7.5.3遞歸調用192
7.6源程式檔案與函式分類194
7.6.1外部函式194
7.6.2內部函式195
7.6.3內聯函式196
7.7變數存儲類型197
7.7.1普通變數197
7.7.2暫存器變數197
7.8變數作用域198
7.8.1局部變數199
7.8.2全局變數200
7.8.3靜態變數203
7.8.4變數訪問控制204
7.9源程式結構205
7.9.1單檔案單函式結構205
7.9.2單檔案多函式結構206
7.9.3多檔案多函式結構206
7.10案例208
練習題210
第8章地址操作與指針212
8.1概述212
8.2指針和指針變數213
8.2.1指針變數聲明213
8.2.2指針變數的賦值及初始化214
8.2.3指針變數的引用214
8.3指針運算215
8.3.1取地址與取值運算216
8.3.2算術運算216
8.3.3關係運算218
8.3.4指針類型轉換218
8.4數組和指針220
8.4.1用指針訪問數組元素220
8.4.2指向多維數組的指針221
8.5字元串和指針224
8.5.1指針處理字元串224
8.5.2使用字元指針變數與字元數組的區別225
8.6函式和指針227
8.6.1指針作為函式參數227
8.6.2指針作為函式的返回值232
8.6.3指向函式的指針233
8.7指針數組236
8.7.1指針數組定義236
8.7.2帶參數的main函式239
8.8數組指針241
8.9指向指針的指針242
8.10記憶體訪問控制244
8.11案例245
練習題249
第9章複雜數據類型與結構體251
9.1概述251
9.2結構體類型252
9.2.1結構體類型定義253
9.2.2結構體類型變數聲明與初始化254
9.2.3結構體變數的引用257
9.2.4結構體數組259
9.2.5結構體與函式262
9.2.6結構體類型指針264
9.3共用體267
9.4枚舉類型269
9.5類型重定義271
9.6日期和時間273
9.7鍊表274
9.7.1鍊表定義274
9.7.2動態記憶體管理函式275
9.7.3鍊表的基本操作279
9.8結構體新特性283
9.9案例285
練習題290
第10章泛化編程與預編譯292
10.1概述292
10.2#define指令292
10.2.1不帶參數的宏定義292
10.2.2帶參數的宏定義294
10.3#include指令297
10.4條件編譯299
10.4.1#ifdef … #else …#endif299
10.4.2#ifndef … #else …#endif299
10.4.3#if … #else …#endif300
10.5其他指令302
10.6預定義宏305
10.7異常處理305
10.8程式移植307
10.9案例308
練習題310
第11章數據存儲與檔案312
11.1概述312
11.2文本檔案與二進制檔案313
11.2.1文本檔案313
11.2.2二進制檔案313
11.3檔案類型314
11.4檔案打開與關閉315
11.4.1檔案打開315
11.4.2檔案關閉318
11.5檔案讀寫319
11.5.1單字元讀寫319
11.5.2字元串讀寫322
11.5.3格式化讀寫323
11.5.4數據塊讀寫325
11.6檔案定位函式328
11.7檔案狀態跟蹤330
11.8其他檔案操作函式332
11.9案例334
練習題338
第12章程式設計思想及範例 340
12.1概述340
12.2求和/求積問題340
12.2.1多項式求和341
12.2.2數列求和342
12.3遍歷問題344
12.4疊代問題350
12.4.1二分疊代法350
12.4.2牛頓疊代法352
12.5排序問題354
12.5.1直接插入排序355
12.5.2起泡排序357
12.5.3選擇排序359
12.6查找問題361
12.6.1順序查找361
12.6.2折半查找362
12.7遞歸問題364
12.8矩陣運算367
12.8.1矩陣加/減運算367
12.8.2矩陣乘法368
12.8.3矩陣轉置370
練習題371
第13章面向對象與C++基礎373
13.1概述373
13.1.1結構化程式設計373
13.1.2模組封裝與訪問控制374
13.2面向對象程式設計376
13.3類與對象376
13.3.1類376
13.3.2對象378
13.3.3類在C++中的實現378
13.3.4成員變數384
13.3.5成員函式386
13.3.6構造函式和析構函式390
13.3.7函式重載392
13.3.8運算符重載394
13.3.9靜態成員變數396
13.3.10靜態成員函式398
13.4繼承與多態400
13.4.1類繼承400
13.4.2多態性與虛函式403
13.5案例407
練習題408
第14章高性能計算與並行程式設計409
14.1概述409
14.2並行算法409
14.2.1並行問題409
14.2.2並行算法設計410
14.3並行程式設計實現411
14.3.1並行程式設計模型411
14.3.2進程412
14.3.3創建進程412
14.3.4訊息傳遞413
14.4MPI程式設計基礎416
14.4.1MPI簡介416
14.4.2簡單MPI程式設計417
14.4.3MPI初始化與關閉417
14.4.4MPI函式館419
14.4.5MPI訊息傳遞420
14.5多核CPU與多執行緒428
14.5.1多核CPU428
14.5.2執行緒430
14.6OpenMP與多核程式設計431
14.6.1OpenMP簡介431
14.6.2OpenMP並行程式結構431
14.6.3parallel節433
14.6.4for節434
14.6.5其他節435
14.6.6共享變數與信息傳遞436
14.7多執行緒技術437
14.7.1執行緒函式館簡介437
14.7.2Win32執行緒函式館437
14.7.3C11標準執行緒函式館444
練習題451
第15章個體軟體過程管理453
15.1概述453
15.2編碼規範定義454
15.3MPI編碼規範454
15.3.1標識符命名規範455
15.3.2函式或過程規範455
15.4ANSI C程式編碼規範456
15.4.1代碼結構與組織456
15.4.2注釋458
15.4.3標識符命名規範460
15.4.4代碼風格與排版461
15.5代碼重用技術462
15.5.1源程式檔案463
15.5.2靜態庫463
15.5.3動態程式庫465
15.5.4組件技術467
15.6軟體生命周期模型簡介468
15.7CMM簡介470
15.8PSP簡介470
15.9PSP0級471
15.9.1計畫過程管理472
15.9.2開發過程管理472
15.9.3總結過程管理473
15.9.4PSP0過程管理文檔474
15.9.5PSP0.1級475
15.10軟體開發計畫477
15.10.1軟體開發計畫基本內容477
15.10.2制定個體軟體開發計畫478
15.10.3PSP軟體開發計畫過程管理479
15.11PSP1級479
15.11.1規模計算480
15.11.2任務計畫480
15.11.3進度計畫481
15.12PSP2級481
15.12.1代碼評審482
15.12.2設計評審483
15.12.3缺陷預防483
15.12.4PSP2級的改進483
練習題483
附錄AASCII碼錶485
附錄B運算符和結合方向486
參考文獻488
(註:目錄排版順序為從左列至右列

教學資源

  • 配套教材
該教材有配套的實驗與測試教材——《程式設計基礎(C語言)實驗指導與測試(第3版)》,內容包括分別是實驗指導、基本概念測試和工程案例等。
書名書號出版社出版時間作者
《程式設計基礎(C語言)實驗指導與測試(第3版)》
9787302498537
清華大學出版社
2018.05.01
高克寧等
  • 課程資源
該教材提供全部教學PPT教學課件、習題答案、教學計畫、教學講義(中英文)、教學素材、教學例題與案例、教學視頻、線上測試系統等數字資源。

教材特色

  1. 該教材圍繞程式設計能力培養,從程式設計思想、語言、技術和工程管理四個方面組織內容,以結構化程式設計思想為主,兼顧面向對象程式設計和並行程式設計;程式實現以C語言為主,介紹了C11標準,同時介紹其他語言的相應處理;從分解與重用的角度闡述函式、檔案、庫、組件等相關技術,從高性能計算的角度介紹MPI並行程式設計技術;從編碼規範入手引入個體軟體過程管理;
  2. 在教材內容編排模式上,採用將完整案例分解,逐級深入,引導學生有序地用程式設計思想解決實際工程問題;
  3. 配套實驗與測試教材以知識點為單元組織線上資源,利用思維導圖將知識點有機地聯繫到一起;從高度、廣度、深度三個方面立體展示了課程知識網路;
  4. 該教材中的部分程式要求採用支持C11標準的編譯器,建議使用GCC4.9.2或更新版本。

作者簡介

高克寧,女,工學博士,東北大學計算中心教育技術與雲計算研究所長、教授、中國計算機學會辦公自動化專業委員會委員、中國計算機學會高級會員、美國ACM學會會員。主要研究領域為Web信息處理、社會網路。

相關詞條

熱門詞條

聯絡我們