章程序設計與軟件開發11.1程序設計的基本概念1
1.1.1程序1
1.1.2程序設計語言2
1.1.3程序設計4
1.2算法與數據結構7
1.2.1算法及其特征7
1.2.2算法的結構9
1.2.3算法的描述10
1.2.4數據結構14
1.3軟件開發16
1.3.1軟件16
1.3.2軟件工程16
1.4本章小結17
習題119
第2章C語言概述202.1C語言的發展與特點20
2.1.1C語言的發展20
2.1.2C語言的特點21
2.2一個C程序實例22
2.2.1編寫和運行C程序23
2.2.2注釋23
2.2.3預處理命令24
2.2.4程序主體24
2.3C語言的字符集與標識符26
2.4數據類型27C程序設計:方法與實踐目錄2.5常量和變量28
2.5.1常量28
2.5.2變量28
2.6運算符和表達式30
2.6.1運算符30
2.6.2表達式32
2.7輸入與輸出33
2.7.1輸出函數printf33
2.7.2輸入函數scanf34
2.8語句36
2.8.1簡單語句36
2.8.2語句塊36
2.8.3if語句37
2.8.4while語句39
2.8.5for語句39
2.9函數41
2.10編程實踐: 代碼風格42
2.11本章小結44
習題248
第3章數據類型與輸入輸出493.1整型50
3.1.1整數的內部表示51
3.1.2整型常量51
3.1.3整數的輸出52
3.1.4整數的輸入55
3.2浮點型57
3.2.1浮點常量58
3.2.2浮點數的內部表示58
3.2.3浮點數的輸出58
3.2.4浮點數的輸入60
3.2.5浮點數的比較和計算60
3.3字符型62
3.3.1字符型數據的內部表示62
3.3.2字符常量和變量63
3.3.3字符輸出64
3.3.4字符輸入65
3.3.5字符處理66
3.4數組68
3.4.1什麼是數組68
3.4.2數組的內部表示69
3.4.素的訪問69
3.4.4數組的初始化70
3.5字符串71
3.5.1字符串常量71
3.5.2用字符數組處理字符串72
3.5.3字符串的輸出73
3.5.4字符串的輸入74
3.6文本文件輸入與輸出77
3.6.1聲明FILE 類型的變量78
3.6.2打開文件78
3.6.3關閉文件79
3.6.4讀寫文件79
3.7變量的進一步討論81
3.7.1變量的聲明與初始化81
3.7.2限定詞const82
3.8編程實踐: 命名82
3.9本章小結83
習題386
第4章運算符與表達式894.1運算符與表達式概述89
4.1.1C運算符簡介89
4.1.2C表達式簡介91
4.2算術運算符和算術表達式91
4.2.1算術運算符91
4.2.2算術表達式92
4.2.3算術表達式的例子93
4.3賦值運算符和賦值表達式93
4.3.1賦值運算符94
4.3.2賦值表達式94
4.3.3復合賦值運算符95
4.4增量減量運算符96
4.5子表達式的求值順序97
4.6數據類型的轉換99
4.6.1隱式類型轉換99
4.6.2賦值運算符兩側數據的類型轉換100
4.6.3強制類型轉換103
4.7逗號運算符和逗號表達式104
4.8本章小結105
習題4107
第5章分支結構1105.1關繫運算符和關繫表達式110
5.2邏輯運算符和邏輯表達式111
5.2.1邏輯運算符111
5.2.2邏輯表達式112
5.3條件運算符和條件表達式114
5.4C語句概述114
5.5if語句116
5.6switch語句119
5.7應用舉例122
5.8本章小結127
習題5128
第6章循環結構與程序設計基本算法1336.1循環結構與控制語句133
6.1.1while語句133
6.1.2for語句134
6.1.3dowhile語句136
6.1.4循環嵌套139
6.1.5流程控制語句(break語句、continue語句和goto語句)140
6.2控制循環的基本方法144
6.2.1通過計數器變量控制循環144
6.2.2通過程序執行的狀態控制循環148
6.3窮舉算法153
6.4迭代與遞推算法157
6.4.1迭代157
6.4.2遞推159
6.5程序設計實例162
6.6編程實踐: 程序計時171
6.7本章小結172
習題6175
第7章函數與結構化程序設計1807.1函數180
7.1.1為什麼要使用函數180
7.1.2函數定義183
7.1.3函數調用188
7.1.4函數原型與函數聲明190
7.1.5函數的執行193
7.1.6主調函數與被調函數之間的數據傳遞195
7.1.7函數設計的思路198
7.2遞歸調用與遞歸算法202
7.2.1遞歸調用的執行過程202
7.2.2遞歸算法204
7.2.3Hanoi塔問題206
7.3程序的函數分解208
7.4C程序結構217
7.4.1編譯預處理命令217
7.4.2全局聲明224
7.4.3函數225
7.4.4C程序的邏輯與物理構成225
7.5編程實踐: 軟件測試227
7.6本章小結229
習題7232
第8章指針與數組2368.1指針與指針變量237
8.1.1指針的概念237
8.1.2指針變量的聲明與初始化239
8.1.3指針的基本運算241
8.2數組的指針246
8.2.1一維數組的指針246
8.2.2二維數組251
8.2.3二維素指針和行指針256
8.2.4指向一維數組的指針變量(行指針變量)260
8.3字符指針與字符串262
8.3.1字符串處理函數262
8.3.2指向字符的指針變量處理字符串265
8.4指針作為函數參數267
8.4.1變量的指針作為函數參數267
8.4.2一維數組的指針作為函數參數270
8.4.3二維數組的指針作為函數參數273
8.5返回指針的函數275
8.6指針數組277
8.6.1指針數組的概念及其應用277
8.6.2指針數組作main函數的形參280
8.6.3行指針數組282
8.7編程實踐: 實用字符串處理284
8.8本章小結288
習題8297
第9章C程序運行原理3049.1一個C程序的運行之旅304
9.2計算機指令的執行過程306
9.3計算機的存儲模型308
9.4程序的內存布局310
9.4.1概述310
9.4.2棧311
9.4.3堆312
9.4.4可執行文件映像314
9.5變量的存儲類型314
9.5.1作用域315
9.5.2存儲期限(生存期)319
9.5.3鏈接322
9.5.4變量分類323
9.6編程實踐: 程序設計與操作繫統327
9.7本章小結329
習題93320章復雜問題的求解算法33410.1分治法334
10.1.1分治法的基本思想334
10.1.2折半查找335
10.1.3循環賽賽程安排338
10.2貪心算法340
10.2.1貪心算法的基本概念340
10.2.2活動安排問題342
10.2.3背包問題344
10.3動態規劃算法348
10.3.1動態規劃介紹348
10.3.2公共子序列問題349
10.3.301背包問題353
10.3.4動態規劃算法總結355
10.4回溯法356
10.4.1回溯法的基本思想356
10.4.2n皇後問題357
10.4.301背包問題359
10.4.4回溯法總結362
10.5本章小結363
習題10365
1章結構體、聯合共用體與枚舉類型36811.1數據類型的再討論368
11.1.1數據類型與事物屬性368
11.1.2數據類型的定義369
11.2結構體370
11.2.1結構體類型的定義370
11.2.2結構體變量的聲明與存儲371
11.2.3結構體變量的引用與初始化373
11.3結構體數組375
11.4結構體指針377
11.5結構體與函數379
11.5.1函數的結構體類型參數379
11.5.2結構體類型的函數381
11.6結構體嵌套382
11.7線性鏈表383
11.7.1線性鏈表概述383
11.7.2C語言實現線性鏈表384
11.8聯合共用體389
11.9枚舉類型393
11.9.1枚舉類型定義與變量聲明393
11.9.2枚舉類型的使用方法394
11.9.3類型名重新定義typedef396
11.10編程實踐: 中文處理397
11.11本章小結400
習題11403
2章文件40612.1C文件概述406
12.1.1C文件的基本概念406
12.1.2文本文件與二進制文件407
12.1.3文件的處理方法408
12.2流與文件類型的指針408
12.3文件操作409
12.3.1文件的打開409
12.3.2文件的關閉411
12.3.3字符方式讀寫文件411
12.3.4數據塊方式讀寫文件414
12.4文件的定位與讀寫418
12.4.1文件的定位418
12.4.2讀寫421
12.5文件操作的出錯檢測422
12.6文件讀寫操作應用實例422
12.6.1文件中數據的修改423
12.6.2文件中數據的刪除424
12.6.3向文件中追加或插入數據425
12.7編程實踐: C與C 426
12.8本章小結428
習題124313章指針的進一步討論與位運算43213.1多級指針432
13.1.1指向指針的指針與指向行指針的指針432
13.1.2指向指針的指針數組與指向行指針的指針數組434
13.2函數與指針435
13.2.1指向函數的指針變量435
13.2.2指向函數的指針數組440
13.2.3指向返回指針的函數的指針變量440
13.2.4指向返回指針的函數的指針數組441
13.2.5返回行指針的函數441
13.2.6指向返回行指針的函數的指針變量442
13.2.7指向返回行指針的函數的指針數組443
13.3位運算443
13.3.1二進制位運算概述443
13.3.2位運算符444
13.3.3位段448
13.4本章小結450
習題13452
4章C程序開發環境與調試45514.1Visual Studio Community 2015的安裝與使用455
14.1.1Visual Studio Community 2015簡介455
14.1.2Visual Studio Community 2015的安裝457
14.1.3Visual Studio Community 2015中編寫C程序459
14.1.4Visual Studio Community 2015中運行C程序461
14.1.5Visual Studio Community 2015中調試C程序463
14.2Code::Blocks的安裝與使用468
14.2.1Code::Blocks簡介468
14.2.2Code::Blocks的安裝469
14.2.3在Code::Blocks中編寫程序471
14.2.4在Code::Blocks中運行和調試程序476
5章C語言上機實驗47815.1實驗概述478
15.1.1實驗目的478
15.1.2實驗步驟478
15.2實驗項目479
15.2.1實驗1: C程序調試與輸入輸出479
15.2.2實驗2: 運算符、表達式及簡單C程序設計481
15.2.3實驗3: 分支及循環結構483
15.2.4實驗4: 循環程序設計485
15.2.5實驗5: 函數程序設計487
15.2.6實驗6: 函數設計489
15.2.7實驗7: 數組、指針的應用491
15.2.8實驗8: 二維數組的應用492
15.2.9實驗9: 結構體與文件494
附錄部分字符與ASCII代碼對照表496
參考文獻497