複製鏈接
請複製以下鏈接發送給好友

C程序設計

(2012年清華大學出版社出版的圖書)

鎖定
《C程序設計》是由姜學鋒、曹光前編著,2012年清華大學出版社出版的大學計算機基礎教育規劃教材。該教材可作為高等院校理工類專業和信息技術類培訓機構“程序設計”“軟件開發技術”課程的教材,也可作為計算機程序設計愛好者學習程序開發和編程技術的自學教材。 [1] 
該教材以C語言為基礎,介紹了程序語言、算法與數據結構以及高級編程技術。全書由13章組成,以程序設計語言、程序設計方法和程序設計技術三大主題組織教材內容,採用了“數據表示”和“程序實現”雙線索知識體系,優化了程序設計知識的安排。 [1] 
書    名
C程序設計
作    者
姜學鋒、曹光前
ISBN
9787302280118
類    別
大學計算機基礎教育規劃教材
頁    數
504頁
出版社
清華大學出版社
出版時間
2012年3月1日
裝    幀
平裝
開    本
16開
字    數
821千字
CIP核字號
2012019884

C程序設計成書過程

C程序設計修訂過程

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

C程序設計出版工作

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

C程序設計內容簡介

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

C程序設計教材目錄

第1章程序設計基礎1
1.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
注:目錄排版順序為從左列至右列 [4] 

C程序設計教學資源

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

C程序設計教材特色

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

C程序設計作者簡介

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