第1章C語言基本概念1
1.1計算機語言和程序2
1.1.1計算機語言2
1.1.2計算機程序2
1.1.3C語言2
1.1.4程序設(shè)計3
1.2算法和算法表示4
1.2.1算法的概念4
1.2.2算法的特征6
1.2.3算法的表示7
1.2.4算法的優(yōu)化14
1.2.5結(jié)構(gòu)化程序設(shè)計方法16
1.3C語言編程20
1.3.1編寫一個經(jīng)典的C程序20
1.3.2編譯和鏈接22
1.4變量、表達式和賦值22
1.4.1類型23
1.4.2聲明23
1.4.3賦值24
1.4.4變量的初始化24
1.4.5顯示變量的值25
1.5從鍵盤讀取輸入25
1.6常量定義26
1.6.1宏常量26
1.6.2const常量27
1.7標識符28
1.8C程序的結(jié)構(gòu)特點291.9C語言編程風格31
問與答32
習題133
目錄
第2章數(shù)據(jù)類型與表達式36
2.1變量聲明與表達式36
2.2基本數(shù)據(jù)類型37
2.3整型37
2.4浮點型40
2.5算術(shù)運算符與表達式41
2.5.1算術(shù)運算符41
2.5.2算術(shù)表達式44
2.6賦值運算符與表達式45
2.6.1賦值運算符46
2.6.2賦值表達式46
2.6.3復(fù)合賦值運算符及表達式46
2.7自增/自減運算符48
2.8字符型49
2.8.1字符操作49
2.8.2有符號字符與無符號字符49
2.8.3轉(zhuǎn)義序列50
2.9字符處理函數(shù)51
2.10類型轉(zhuǎn)換54
2.10.1算術(shù)運算過程中的轉(zhuǎn)換54
2.10.2賦值過程中的轉(zhuǎn)換56
2.10.3強制類型轉(zhuǎn)換57
2.11類型定義57
2.12sizeof運算符59
問與答59
習題262
實驗題65
第3章格式化輸入與輸出66
3.1輸出函數(shù)66
3.1.1轉(zhuǎn)換說明67
3.1.2轉(zhuǎn)義序列71
3.2輸入函數(shù)72
3.2.1轉(zhuǎn)換說明72
3.2.2scanf()函數(shù)的工作原理74
3.2.3格式控制串中的普通字符75
3.2.4scanf()和printf()函數(shù)常見錯誤79
問與答80
習題381
實驗題83
第4章選擇結(jié)構(gòu)84
4.1關(guān)系、等式和邏輯運算符84
4.2邏輯運算符和表達式86
4.3復(fù)合語句88
4.4空語句88
4.5if語句88
4.6ifelse語句91
4.7if語句的嵌套92
4.8級聯(lián)式語句97
4.9switch語句98
4.10條件表達式101
4.11C語言中的布爾值102
4.12程序舉例與測試103
4.13本章擴展內(nèi)容: 位運算107
4.13.1位運算符107
4.13.2位邏輯運算108
4.13.3移位運算109
4.13.4復(fù)合位運算賦值運算符109
4.13.5位運算的應(yīng)用110
問與答111
習題4112
實驗題117
第5章循環(huán)結(jié)構(gòu)119
5.1循環(huán)結(jié)構(gòu)與循環(huán)語句119
5.2計數(shù)控制的循環(huán)126
5.3嵌套循環(huán)128
5.4條件控制的循環(huán)130
5.5流程的控制轉(zhuǎn)移136
5.5.1break語句136
5.5.2continue語句138
5.5.3goto語句139
5.6應(yīng)用舉例141
問與答145
習題5147
實驗題151
第6章函數(shù)153
6.1模塊化程序設(shè)計153
6.2函數(shù)的定義154
6.2.1函數(shù)的分類154
6.2.2函數(shù)的定義155
6.2.3函數(shù)調(diào)用156
6.3函數(shù)原型聲明159
6.4實參162
6.5函數(shù)封裝與防御性編程164
6.6函數(shù)設(shè)計的基本原則170
6.7函數(shù)的嵌套調(diào)用171
6.8函數(shù)的遞歸調(diào)用和遞歸函數(shù)172
6.9變量的作用域和存儲類型175
6.9.1變量的作用域175
6.9.2變量的存儲類型177
6.10模塊化程序設(shè)計實例182
問與答187
習題6189
實驗題194
第7章數(shù)組195
7.1一維數(shù)組195
7.2二維數(shù)組199
7.3一維數(shù)組作為函數(shù)參數(shù)201
7.3.1數(shù)組作為實參201
7.3.2變長數(shù)組作為形參202
7.4排序與查找207
7.5二維數(shù)組作為函數(shù)參數(shù)217
7.6C程序開發(fā)方法220
問與答223
習題7225
實驗題229
第8章指針230
8.1指針和指針變量230
8.2指針變量的定義和初始化231
8.3間接尋址運算符234
8.4指針變量作為函數(shù)參數(shù)237
8.5指針變量作為函數(shù)參數(shù)應(yīng)用舉例240
8.6函數(shù)指針及其應(yīng)用247
問與答250
習題8252
實驗題255
第9章字符串256
9.1字符串常量256
9.2字符串的存儲256
9.3字符指針258
9.4字符串的讀/寫259
9.4.1按%c格式控制符讀/寫259
9.4.2按%s格式控制符讀/寫260
9.4.3使用字符串處理函數(shù)進行讀/寫260
9.4.4逐個字符讀取字符串261
9.5字符串處理函數(shù)263
9.6字符串作為函數(shù)參數(shù)266
9.7從函數(shù)返回字符串指針267
問與答269
習題9270
實驗題273
第10章指針與數(shù)組275
10.1指針的運算275
10.2指針和一維數(shù)組的關(guān)系276
10.3指針和二維數(shù)組的關(guān)系281
10.4指針數(shù)組及其應(yīng)用286
10.5動態(tài)數(shù)組291
10.5.1C程序的內(nèi)存映像291
10.5.2動態(tài)內(nèi)存分配函數(shù)292
10.5.3一維動態(tài)數(shù)組的內(nèi)存分配294
10.5.4二維動態(tài)數(shù)組的內(nèi)存分配295
問與答297
習題10298
實驗題300第11章自定義數(shù)據(jù)類型302
11.1用戶自定義數(shù)據(jù)類型和信息隱藏302
11.2結(jié)構(gòu)體的定義303
11.3結(jié)構(gòu)體變量的初始化305
11.4結(jié)構(gòu)體的嵌套306
11.5結(jié)構(gòu)體變量的引用306
11.6結(jié)構(gòu)體變量在內(nèi)存中的存儲形式308
11.7結(jié)構(gòu)體數(shù)組的定義和初始化310
11.8結(jié)構(gòu)體指針的定義和初始化313
11.9結(jié)構(gòu)體作為函數(shù)參數(shù)315
11.10共用體320
11.11枚舉類型323
11.12單向鏈表327
11.12.1問題的提出327
11.12.2鏈表327
11.12.3單向鏈表的創(chuàng)建328
11.12.4單向鏈表的搜索331
11.12.5從單向鏈表中刪除節(jié)點332
問與答336
習題11337
實驗題340
第12章文件342
12.1文件分類342
12.2文件的打開與關(guān)閉343
12.3順序讀/寫文件345
12.3.1讀/寫字符346
12.3.2讀/寫字符串349
12.3.3格式化讀/寫文件351
12.3.4讀/寫數(shù)據(jù)塊355
12.4隨機讀/寫文件359
12.5標準輸入/輸出重定向361
問與答362
習題12364
實驗題366
第13章構(gòu)建大規(guī)模程序368
13.1頭文件368
13.1.1#include指令的使用368
13.1.2定義共享類型和宏369
13.1.3共享函數(shù)原型370
13.1.4共享變量聲明370
13.1.5嵌套包含371
13.1.6保護頭文件371
13.1.7頭文件中的#error指令372
13.2源文件372
13.3多文件程序的設(shè)計373
13.4構(gòu)建多文件程序377
13.4.1makefile文件378
13.4.2鏈接錯誤379
13.4.3重構(gòu)程序379
13.4.4在程序外定義宏381
問與答382
習題13383
實驗題383
附錄384
附錄ADevC 和Visual C 下基本數(shù)據(jù)類型的取值范圍384
附錄B關(guān)鍵字384
附錄C運算符的優(yōu)先級與結(jié)合性384
附錄DASCII字符表384
附錄EANSI C標準庫函數(shù)384
附錄FDevC 集成開發(fā)環(huán)境385
參考文獻386