C程式設計(2012年清華大學出版社出版的圖書)

C程式設計(2012年清華大學出版社出版的圖書)

《C程式設計》是由姜學鋒、曹光前編著,2012年清華大學出版社出版的大學計算機基礎教育規劃教材。該教材可作為高等院校理工類專業和信息技術類培訓機構“程式設計”“軟體開發技術”課程的教材,也可作為電腦程式設計愛好者學習程式開發和編程技術的自學教材。

該教材以C語言為基礎,介紹了程式語言、算法與數據結構以及高級編程技術。全書由13章組成,以程式設計語言、程式設計方法和程式設計技術三大主題組織教材內容,採用了“數據表示”和“程式實現”雙線索知識體系,最佳化了程式設計知識的安排。

基本介紹

  • 書名:C程式設計
  • 作者:姜學鋒、曹光前
  • ISBN:9787302280118
  • 類別:大學計算機基礎教育規劃教材
  • 頁數:504頁
  • 出版社:清華大學出版社
  • 出版時間:2012年3月1日
  • 裝幀:平裝
  • 開本:16開
  • 字數:821千字
  • CIP核字號:2012019884
成書過程,修訂過程,出版工作,內容簡介,教材目錄,教學資源,教材特色,作者簡介,

成書過程

修訂過程

該教材具體編寫分工如下:第1~7章和第13章由姜學鋒編寫,第8~12章由曹光前、姜學鋒編寫,全書由姜學鋒主編並統稿。在書稿的編著過程中,得到了多位專家的支持,西北工業大學計算機學院的同事們提出了修改意見和建議。

出版工作

2012年3月1日,該教材由清華大學出版社出版。
出版社工作人員
責任編輯封面設計責任校對責任印製
張民、戰曉雷
傅瑞學
李建莊
李紅英

內容簡介

該教材以C語言為基礎,介紹了程式語言、算法與數據結構以及高級編程技術。全書由13章組成,以程式設計語言、程式設計方法和程式設計技術三大主題組織教材內容,採用了“數據表示”和“程式實現”雙線索知識體系,最佳化了程式設計知識的安排。

教材目錄

第1章程式設計基礎11.1計算機系統和工作原理1
1.1.1計算機系統的組成1
1.1.2指令與程式3
1.2信息的表示與存儲5
1.2.1計算機的數字系統5
1.2.2進位計數制的轉換6
1.2.3數值數據的表示9
1.2.4非數值數據的表示13
1.3程式設計語言14
1.3.1機器語言與彙編語言14
1.3.2高級語言15
1.4程式設計概述16
1.4.1計算機問題求解的基本特點16
1.4.2算法的定義與特性17
1.4.3算法的表示17
1.4.4結構化程式設計19
1.4.5面向對象程式設計20
1.4.6程式設計技術前沿21
1.5C語言概述21
1.5.1C語言的歷史與特點21
1.5.2C語言基本詞法22
1.5.3簡單的C程式24
1.5.4C程式基本結構26
1.5.5C程式開發步驟27
1.5.6C程式編碼風格28
習題28
第2章數據類型與表達式30
2.1數據類型30
2.1.1整型31
2.1.2浮點型32
2.1.3字元型33
2.2常量34
2.2.1整型常量34
2.2.2浮點型常量35
2.2.3字元常量35
2.2.4字元串常量37
2.2.5符號常量38
2.3變數39
2.3.1變數的概念39
2.3.2定義變數39
2.3.3使用變數40
2.3.4存儲類別41
2.3.5類型限定41
2.4運算符與表達式42
2.4.1運算符與表達式的概念42
2.4.2算術運算符45
2.4.3自增自減運算符46
2.4.4關係運算符47
2.4.5邏輯運算符48
2.4.6條件運算符50
2.4.7位運算符51
2.4.8賦值運算符55
2.4.9取長度運算符57
2.4.10逗號運算符57
2.4.11圓括弧運算符58
2.4.12常量表達式58
2.5類型轉換59
2.5.1隱式類型轉換59
2.5.2顯式類型轉換61
習題62
第3章程式控制結構64
3.1語句64
3.1.1簡單語句64
3.1.2複合語句66
3.1.3注釋67
3.1.4語句的寫法68
3.2輸入與輸出69
3.2.1字元輸入與輸出69
3.2.2格式化輸出71
3.2.3格式化輸入76
3.3程式順序結構79
3.3.1順序執行79
3.3.2跳轉執行79
3.4程式選擇結構80
3.4.1if語句80
3.4.2switch語句84
3.4.3選擇結構的嵌套86
3.4.4選擇結構程式舉例90
3.5程式循環結構92
3.5.1while語句92
3.5.2do語句94
3.5.3for語句96
3.5.4break語句97
3.5.5continue語句98
3.5.6循環結構的嵌套99
3.5.7循環結構程式舉例99
習題103
第4章函式106
4.1函式定義106
4.1.1函式定義的一般形式106
4.1.2函式返回109
4.2函式參數110
4.2.1形式參數110
4.2.2實際參數111
4.2.3參數傳遞機制111
4.2.4函式調用棧112
4.2.5const參數114
4.2.6可變參數函式114
4.3函式原型與調用116
4.3.1函式聲明和函式原型116
4.3.2庫函式的調用方法119
4.3.3標準庫函式120
4.4內聯函式124
4.5函式調用形式125
4.5.1嵌套調用125
4.5.2遞歸調用128
4.6作用域和生命期130
4.6.1局部變數130
4.6.2全局變數131
4.6.3作用域132
4.6.4程式映像和記憶體布局135
4.6.5生命期138
4.7對象初始化141
4.8聲明與定義143
4.9變數修飾小結145
4.10程式組織結構146
4.10.1內部函式146
4.10.2外部函式146
4.10.3多檔案結構147
4.10.4頭檔案與工程檔案148
4.10.5提高編譯速度149
4.11函式應用程式舉例151
習題154
第5章預處理命令156
5.1宏定義156
5.1.1不帶參數的宏定義157
5.1.2帶參數的宏定義159
5.1.3#和##預處理運算163
5.1.4預定義宏163
5.2檔案包含164
5.3條件編譯166
5.3.1#define定義條件166
5.3.2#ifdef、#ifndef166
5.3.3#if-#elif167
5.4其他命令168
習題169
第6章數組171
6.1一維數組的定義和引用171
6.1.1一維數組的定義171
6.1.2一維數組的初始化173
6.1.3一維數組的引用173
6.2多維數組的定義和引用175
6.2.1多維數組的定義175
6.2.2多維數組的初始化177
6.2.3多維數組的引用178
6.3數組與函式181
6.3.1數組作為函式的參數181
6.3.2數組參數的傳遞機制182
6.4字元串185
6.4.1字元數組185
6.4.2字元串187
6.4.3字元串的輸入和輸出189
6.4.4字元串數組190
6.4.5字元串處理函式191
6.5數組應用程式舉例196
習題206
第7章指針208
7.1指針與指針變數208
7.1.1地址和指針的概念208
7.1.2指針變數209
7.2指針的使用及運算211
7.2.1獲取對象的地址211
7.2.2指針的間接訪問212
7.2.3指針變數的初始化與賦值214
7.2.4指針的有效性216
7.2.5指針運算217
7.2.6指針的const限定222
7.3指針與數組224
7.3.1指向一維數組元素的指針224
7.3.2指向多維數組元素的指針228
7.3.3數組指針232
7.3.4指針數組234
7.3.5指向指針的指針236
7.4指針與字元串238
7.4.1指向字元串的指針239
7.4.2指針與字元數組的比較241
7.4.3指向字元串數組的指針242
7.5指針與函式244
7.5.1指針作為函式參數244
7.5.2函式返回指針值253
7.5.3函式指針254
7.6動態記憶體258
7.6.1動態記憶體的概念258
7.6.2動態記憶體的分配和釋放259
7.6.3動態記憶體的套用260
7.7帶參數的main函式264
習題266
第8章自定義數據類型267
8.1結構體類型267
8.2結構體對象269
8.2.1結構體對象的定義269
8.2.2結構體對象的初始化272
8.2.3結構體對象的使用272
8.3結構體與數組274
8.3.1結構體數組274
8.3.2結構體數組成員274
8.4結構體與指針275
8.4.1指向結構體的指針275
8.4.2指向結構體數組的指針277
8.4.3結構體指針成員278
8.5結構體與函式279
8.5.1結構體對象作為函式參數279
8.5.2結構體數組作為函式參數279
8.5.3結構體指針作為函式參數280
8.5.4函式返回結構體對象或指針280
8.6共用體281
8.6.1共用體概念及類型聲明281
8.6.2共用體對象的定義282
8.6.3共用體對象的使用282
8.6.4結構體與共用體嵌套284
8.7枚舉類型284
8.7.1枚舉類型的聲明284
8.7.2枚舉類型對象285
8.8位域285
8.8.1位域的聲明285
8.8.2位域的使用287
8.9用戶自定義類型288
習題291
第9章鍊表293
9.1鍊表概述293
9.1.1鍊表的概念293
9.1.2單鍊表與雙鍊表294
9.2鍊表的創建295
9.2.1創建單鍊表295
9.2.2創建雙鍊表298
9.3鍊表的運算299
9.3.1鍊表的遍歷299
9.3.2銷毀鍊表301
9.3.3查找結點302
9.3.4鍊表的逆序304
9.4結點的插入與刪除304
9.4.1單鍊表插入結點304
9.4.2單鍊表刪除結點305
9.4.3雙鍊表插入結點306
9.4.4雙鍊表刪除結點307
習題308
第10章檔案311
10.1檔案概述311
10.1.1檔案系統311
10.1.2流式檔案312
10.1.3檔案指針312
10.2檔案打開與關閉313
10.2.1檔案打開313
10.2.2檔案關閉314
10.2.3檔案狀態315
10.2.4檔案緩衝316
10.3檔案讀寫操作317
10.3.1檔案讀寫操作的基本形式317
10.3.2讀寫字元數據317
10.3.3讀寫字元串數據318
10.3.4讀寫格式數據319
10.3.5讀寫數據塊321
10.4檔案定位324
習題325
第11章算法327
11.1算法基本概念327
11.1.1什麼是算法327
11.1.2算法基本要素327
11.1.3算法求解過程328
11.2算法分析329
11.2.1時間複雜度329
11.2.2空間複雜度332
11.3常用算法332
11.3.1分治法332
11.3.2動態規劃335
11.3.3貪心算法338
11.3.4回溯法341
習題343
第12章數據結構345
12.1數據結構基本概念345
12.1.1什麼是數據結構345
12.1.2邏輯結構與存儲結構346
12.1.3數據結構與數據類型346
12.2線性表347
12.2.1線性表的基本概念347
12.2.2線性順序表及其運算350
12.2.3線性鏈式表及其運算355
12.3棧和佇列355
12.3.1棧的定義355
12.3.2棧的順序存儲及基本運算356
12.3.3棧的鏈式存儲及基本運算358
12.3.4佇列的定義358
12.3.5佇列的順序存儲及基本運算359
12.3.6佇列的鏈式存儲及基本運算361
12.4樹和二叉樹361
12.4.1樹的基本概念361
12.4.2二叉樹及其基本性質364
12.4.3二叉樹的存儲結構367
12.4.4二叉樹的遍歷368
習題370
第13章高級編程技術372
13.1配置開發環境372
13.1.1開發環境的路徑參數372
13.1.2開發環境的路徑設定373
13.1.3開發環境的配置375
13.1.4函式館的包含和連線376
13.1.5函式館配置舉例378
13.2界面編程381
13.2.1Windows編程的基本概念381
13.2.2數據定義與數據類型382
13.2.3訊息與訊息循環385
13.2.4資源與資源檔案387
13.2.5Windows應用程式結構396
13.2.6Windows編程框架402
13.2.7圖形輸出409
13.2.8事件處理425
13.2.9控制項與對話框434
13.3圖形編程441
13.3.1圖形編程概述441
13.3.2OpenGL簡介442
13.3.3GLUT編程模式444
13.3.4Win32編程模式449
13.4多媒體編程456
13.4.1MCI編程456
13.4.2MCIWnd編程462
13.4.3MMAPI編程467
13.5網路編程472
13.5.1Winsock簡介472
13.5.2Winsock編程473
13.5.3TCP編程模式476
13.5.4UDP編程模式480
13.6資料庫編程483
13.6.1資料庫編程概述483
13.6.2ODBC簡介484
13.6.3ODBC編程487
13.6.4資料庫編程舉例494
習題497
附錄AASCII碼對照表499
附錄BC語言關鍵字500
附錄CC語言運算符及其優先權、結合性502
參考文獻504
(註:目錄排版順序為從左列至右列

教學資源

  • 配套教材
該教材有配套教材——《C程式設計實驗教程》《C程式設計習題與解析》。
書名書號出版社出版時間作者
《C程式設計實驗教程》
9787302249436
清華大學出版社
2011.03.01
姜學鋒、魏英
《C程式設計習題與解析》
9787302249429
清華大學出版社
2011.03.01
姜學鋒、劉君瑞、汪芳
  • 課程資源
該教材提供書中的所有源程式、各章習題的完整代碼、電子演示文稿和素材。同時,配套程式設計教學平台、系列教育軟體和教學資源。

教材特色

該教材示例代碼具有專業的編程風格;體現了程式設計和算法、數據結構的結合。該教材注重典型案例的選取與提煉。該教材的高級編程技術內容便於開展課程設計和研究型學習。
該教材遵循編者提倡的“精講多練、注重技能、開拓設計”教學理念編寫。在程式語言知識體系的選取與深度的把握上,在算法、數據結構與程式設計的結合上設計,力圖適合高等院校和專業計算機培訓的教學目標與知識結構的要求,體現了以下幾個特色:
  1. 首創雙線索的程式設計知識體系:該教材的雙線索程式設計知識體系以“數據表示”和“程式實現”作為教學上的兩條主線索,螺旋上升、交叉,推進;首先,該教材通過簡單程式引出程式基本結構,以編程為目標給出兩條線索:數據表示和程式實現;其次,從引入簡單數據開始,逐步解決運算和程式組織,進而上升到程式模組化的實現;然後,從基本類型提高到複雜數據類型,上升到數據結構層面的數據表示,程式模組進階到算法實現;最後,兩條線索交匯到高級編程技術套用專題,揭示程式設計與套用軟體開發的一般規律。
  2. 最佳化程式設計知識安排:該教材在程式語言知識方面採用了“快節奏”,在程式設計方法和編程技術方面採用了“慢節奏”;“快節奏”體現為語言基礎知識學時被大幅度壓縮,從一開始即以簡單程式框架展開程式知識,直接進入以程式模組化為主的教與學環境;教材不在語言細節、小片段程式上反覆循環;“慢節奏”體現為以(較難的)編程技術為研究專題展開(費時的)編程方法教學;該教材將軟體開發中的結構化、面向對象、組件模型和敏捷思想融入每個章節,讓學習者接受專業化訓練;與傳統的C語言教學相比,增加了“設計階段”的教學。
  3. 首創高級編程技術教學新思想:高級編程技術是該教材主要的創新成果之一;通過研究型專題的技術教學,拓寬了學生的知識面,使其認識到程式是如何解決套用問題的。
  4. 注重程式設計和算法、數據結構的結合:該教材給出算法和數據結構的初步知識,克服了簡單羅列算法、數據結構內容和算法與程式設計脫節、數據結構與程式數據表示脫節的問題。在講述每一種常用算法和數據結構的基本思路與設計步驟的基礎上,落實到每一個案例求解,從案例的提出到算法設計與數據描述、從程式實現到案例結果的討論與分析,力求理論與實際相結合,數據描述與數據表示、算法與程式實現相統一。
  5. 注重典型案例的選取與提煉:該教材設計了初等難度語言示範型、中等難度算法和數據結構套用型、較高難度綜合設計型三種梯度的案例;其中難度較大的高級編程技術綜合設計案例可作為課程設計、大作業與課後專題研究選用;該教材的部分示例給出了算法改進與程式最佳化的過程。
  6. 注重編程風格:該教材使用ISO/IEC9899:1999C語言標準(簡稱C99標準),採納各專業軟體公司編程規範的優點,無論語法語義、書寫形式、示例代碼等,均採用專業編程風格編寫,潛移默化地引導學習者與專業化接軌;書中所有程式均在VisualC++6.0和GCC4.x(Code::Blocks)上調試通過。

作者簡介

姜學鋒,男,西北工業大學計算機學院副教授,研究方向為elearning、大數據技術。
曹光前,1963年生,男,陝西寶雞人,碩士,西北工業大學航天學院講師,從事飛行力學研究、教學工作。

相關詞條

熱門詞條

聯絡我們