初學(xué)者學(xué)習(xí)C程序設(shè)計(jì)的理想教材,可作為高等學(xué)校各專業(yè)的正式教材,也是一本自學(xué)的好教材。
由譚浩強(qiáng)教授著、清華大學(xué)出版社出版的《C程序設(shè)計(jì)》是一本公認(rèn)的學(xué)習(xí)C語言程序設(shè)計(jì)的經(jīng)典教材。
共分4個(gè)部分,第1部分是《C程序設(shè)計(jì)(第四版)》一書的習(xí)題和參考解答,包括了該書各章的全部習(xí)題,對(duì)全部編程習(xí)題都給出了參考解答,共計(jì)132個(gè)程序;第2部分是深入學(xué)習(xí)C程序設(shè)計(jì),包括預(yù)處理指令、位運(yùn)算和C程序案例;第3部分是上機(jī)指南,詳細(xì)介紹了Visual C++ 6.0集成環(huán)境下編輯、編譯、調(diào)試和運(yùn)行程序的方法;第4部分是上機(jī)實(shí)驗(yàn)指導(dǎo),包括程序的調(diào)試與測試、實(shí)驗(yàn)的目的與要求,并提供了本課程12個(gè)實(shí)驗(yàn)。
目錄:
第1章程序設(shè)計(jì)和C語言1
1.1什么是計(jì)算機(jī)程序1
1.2什么是計(jì)算機(jī)語言1
1.3C語言的發(fā)展及其特點(diǎn)3
1.4最簡單的C語言程序5
1.4.1最簡單的C語言程序舉例6
1.4.2C語言程序的結(jié)構(gòu)10
1.5運(yùn)行C程序的步驟與方法12
1.6程序設(shè)計(jì)的任務(wù)14
習(xí)題15
第2章算法——程序的靈魂16
2.1什么是算法16
2.2簡單的算法舉例17
2.3算法的特性21
2.4怎樣表示一個(gè)算法22
2.4.1用自然語言表示算法22
2.4.2用流程圖表示算法22
2.4.3三種基本結(jié)構(gòu)和改進(jìn)的流程圖26
2.4.4用NS流程圖表示算法28
2.4.5用偽代碼表示算法31
2.4.6用計(jì)算機(jī)語言表示算法32
2.5結(jié)構(gòu)化程序設(shè)計(jì)方法34
習(xí)題36
第章最簡單的C程序設(shè)計(jì)——順序程序設(shè)計(jì)37
3.1順序程序設(shè)計(jì)舉例37
3.2數(shù)據(jù)的表現(xiàn)形式及其運(yùn)算39
3.2.1常量和變量39
3.2.2數(shù)據(jù)類型42
3.2.3整型數(shù)據(jù)44
3.2.4字符型數(shù)據(jù)47
3.2.5浮點(diǎn)型數(shù)據(jù)49
3.2.6怎樣確定常量的類型51
3.2.7運(yùn)算符和表達(dá)式52
3.3C語句57
3.3.1C語句的作用和分類57
3.3.2最基本的語句——賦值語句59
3.4數(shù)據(jù)的輸入輸出65
3.4.1輸入輸出舉例65
3.4.2有關(guān)數(shù)據(jù)輸入輸出的概念67
3.4.3用printf函數(shù)輸出數(shù)據(jù)68
3.4.4用scanf函數(shù)輸入數(shù)據(jù)75
3.4.5字符數(shù)據(jù)的輸入輸出78
習(xí)題82
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)85
4.1選擇結(jié)構(gòu)和條件判斷85
4.2用if語句實(shí)現(xiàn)選擇結(jié)構(gòu)87
4.2.1用if語句處理選擇結(jié)構(gòu)舉例87
4.2.2if語句的一般形式 89
4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式91
4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序91
4.3.2關(guān)系表達(dá)式92
4.4邏輯運(yùn)算符和邏輯表達(dá)式92
4.4.1邏輯運(yùn)算符及其優(yōu)先次序93
4.4.2邏輯表達(dá)式94
4.4.3邏輯型變量96
4.5條件運(yùn)算符和條件表達(dá)式97
4.6選擇結(jié)構(gòu)的嵌套99
4.7用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)102
4.8選擇結(jié)構(gòu)程序綜合舉例105
習(xí)題111
第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)114
5.1為什么需要循環(huán)控制114
5.2用while語句實(shí)現(xiàn)循環(huán)115
5.3用do…while語句實(shí)現(xiàn)循環(huán)117
5.4用for 語句實(shí)現(xiàn)循環(huán)120
5.5循環(huán)的嵌套124
5.6幾種循環(huán)的比較125
5.7改變循環(huán)執(zhí)行的狀態(tài)125
5.7.1用break語句提前終止循環(huán)126
5.7.2用continue語句提前結(jié)束本次循環(huán)127
5.7.3break語句和continue語句的區(qū)別128
5.8循環(huán)程序舉例131
習(xí)題140
第6章利用數(shù)組處理批量數(shù)據(jù)142
6.1怎樣定義和引用一維數(shù)組142
6.1.1怎樣定義一維數(shù)組143
6.1.2怎樣引用一維數(shù)組元素144
6.1.3一維數(shù)組的初始化145
6.1.4一維數(shù)組程序舉例146
6.2怎樣定義和引用二維數(shù)組148
6.2.1怎樣定義二維數(shù)組149
6.2.2怎樣引用二維數(shù)組的元素150
6.2.3二維數(shù)組的初始化151
6.2.4二維數(shù)組程序舉例152
6.3字符數(shù)組154
6.3.1怎樣定義字符數(shù)組154
6.3.2字符數(shù)組的初始化155
6.3.3怎樣引用字符數(shù)組中的元素155
6.3.4字符串和字符串結(jié)束標(biāo)志156
6.3.5字符數(shù)組的輸入輸出159
6.3.6使用字符串處理函數(shù)161
6.3.7字符數(shù)組應(yīng)用舉例165
習(xí)題168
第7章用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)170
7.1為什么要用函數(shù)170
7.2怎樣定義函數(shù)172
7.2.1為什么要定義函數(shù)172
7.2.2定義函數(shù)的方法173
7.3調(diào)用函數(shù)174
7.3.1函數(shù)調(diào)用的形式174
7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞175
7.3.3函數(shù)調(diào)用的過程177
7.3.4函數(shù)的返回值178
7.4對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型179
7.5函數(shù)的嵌套調(diào)用182
7.6函數(shù)的遞歸調(diào)用184
7.7數(shù)組作為函數(shù)參數(shù)192
7.7.1數(shù)組元素作函數(shù)實(shí)參193
7.7.2數(shù)組名作函數(shù)參數(shù)194
7.7.3多維數(shù)組名作函數(shù)參數(shù)197
7.8局部變量和全局變量199
7.8.1局部變量199
7.8.2全局變量200
7.9變量的存儲(chǔ)方式和生存期204
7.9.1動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式204
7.9.2局部變量的存儲(chǔ)類別205
7.9.3全局變量的存儲(chǔ)類別208
7.9.4存儲(chǔ)類別小結(jié)212
7.10關(guān)于變量的聲明和定義214
7.11內(nèi)部函數(shù)和外部函數(shù)215
7.11.1內(nèi)部函數(shù)215
7.11.2外部函數(shù)215
習(xí)題218
第8章善于利用指針220
8.1指針是什么220
8.2指針變量222
8.2.1使用指針變量的例子222
8.2.2怎樣定義指針變量223
8.2.3怎樣引用指針變量224
8.2.4指針變量作為函數(shù)參數(shù)226
8.3通過指針引用數(shù)組230
8.3.1數(shù)組元素的指針230
8.3.2在引用數(shù)組元素時(shí)指針的運(yùn)算231
8.3.3通過指針引用數(shù)組元素233
8.3.4用數(shù)組名作函數(shù)參數(shù)237
8.3.5通過指針引用多維數(shù)組245
8.4通過指針引用字符串255
8.4.1字符串的引用方式 255
8.4.2字符指針作函數(shù)參數(shù)259
8.4.3使用字符指針變量和字符數(shù)組的比較263
8.5指向函數(shù)的指針266
8.5.1什么是函數(shù)指針266
8.5.2用函數(shù)指針變量調(diào)用函數(shù)266
8.5.3怎樣定義和使用指向函數(shù)的指針變量268
8.5.4用指向函數(shù)的指針作函數(shù)參數(shù)270
8.6返回指針值的函數(shù)274
8.7指針數(shù)組和多重指針277
8.7.1什么是指針數(shù)組 277
8.7.2指向指針數(shù)據(jù)的指針280
8.7.3指針數(shù)組作main函數(shù)的形參282
8.8動(dòng)態(tài)內(nèi)存分配與指向它的指針變量285
8.8.1什么是內(nèi)存的動(dòng)態(tài)分配285
8.8.2怎樣建立內(nèi)存的動(dòng)態(tài)分配285
8.8.3void指針類型 287
8.9有關(guān)指針的小結(jié)288
習(xí)題291
第9章用戶自己建立數(shù)據(jù)類型293
9.1定義和使用結(jié)構(gòu)體變量293
9.1.1自己建立結(jié)構(gòu)體類型293
9.1.2定義結(jié)構(gòu)體類型變量 295
9.1.3結(jié)構(gòu)體變量的初始化和引用297
9.2使用結(jié)構(gòu)體數(shù)組300
9.2.1定義結(jié)構(gòu)體數(shù)組300
9.2.2結(jié)構(gòu)體數(shù)組的應(yīng)用舉例301
9.3結(jié)構(gòu)體指針303
9.3.1指向結(jié)構(gòu)體變量的指針303
9.3.2指向結(jié)構(gòu)體數(shù)組的指針304
9.3.3用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作函數(shù)參數(shù)306
9.4用指針處理鏈表309
9.4.1什么是鏈表 309
9.4.2建立簡單的靜態(tài)鏈表310
9.4.3建立動(dòng)態(tài)鏈表311
9.4.4輸出鏈表315
9.5共用體類型317
9.5.1什么是共用體類型317
9.5.2引用共用體變量的方式318
9.5.3共用體類型數(shù)據(jù)的特點(diǎn)319
9.6使用枚舉類型323
9.7用typedef聲明新類型名326
習(xí)題330
第10章對(duì)文件的輸入輸出331
10.1C文件的有關(guān)基本知識(shí)331
10.1.1什么是文件331
10.1.2文件名332
10.1.3文件的分類332
10.1.4文件緩沖區(qū)333
10.1.5文件類型指針333
10.2打開與關(guān)閉文件335
10.2.1用fopen函數(shù)打開數(shù)據(jù)文件335
10.2.2用fclose函數(shù)關(guān)閉數(shù)據(jù)文件337
10.3順序讀寫數(shù)據(jù)文件338
10.3.1怎樣向文件讀寫字符338
10.3.2怎樣向文件讀寫一個(gè)字符串341
10.3.3用格式化的方式讀寫文件344
10.3.4用二進(jìn)制方式向文件讀寫一組數(shù)據(jù)345
10.4隨機(jī)讀寫數(shù)據(jù)文件349
10.4.1文件位置標(biāo)記及其定位349
10.4.2隨機(jī)讀寫 352
10.5文件讀寫的出錯(cuò)檢測353
習(xí)題354第11章常見錯(cuò)誤分析355附錄370附錄A在Visual C++ 6.0環(huán)境下運(yùn)行C程序的方法370
附錄B常用字符與ASCII代碼對(duì)照表377
附錄CC語言中的關(guān)鍵字378
附錄D運(yùn)算符和結(jié)合性378
附錄EC語言常用語法提要380
附錄FC庫函數(shù)384
參考文獻(xiàn)390
第4章選擇結(jié)構(gòu)程序設(shè)計(jì)85
4.1選擇結(jié)構(gòu)和條件判斷85
4.2用if語句實(shí)現(xiàn)選擇結(jié)構(gòu)87
4.2.1用if語句處理選擇結(jié)構(gòu)舉例87
4.2.2if語句的一般形式 89
4.3關(guān)系運(yùn)算符和關(guān)系表達(dá)式91
4.3.1關(guān)系運(yùn)算符及其優(yōu)先次序91
4.3.2關(guān)系表達(dá)式92
4.4邏輯運(yùn)算符和邏輯表達(dá)式92
4.4.1邏輯運(yùn)算符及其優(yōu)先次序93
4.4.2邏輯表達(dá)式94
4.4.3邏輯型變量96
4.5條件運(yùn)算符和條件表達(dá)式97
4.6選擇結(jié)構(gòu)的嵌套100
4.7用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)102
4.8選擇結(jié)構(gòu)程序綜合舉例106
習(xí)題112
第5章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)115
5.1為什么需要循環(huán)控制115
5.2用while語句實(shí)現(xiàn)循環(huán)116
5.3用do…while語句實(shí)現(xiàn)循環(huán)118
5.4用for 語句實(shí)現(xiàn)循環(huán)121
5.5循環(huán)的嵌套125
5.6幾種循環(huán)的比較126
5.7改變循環(huán)執(zhí)行的狀態(tài)126
5.7.1用break語句提前終止循環(huán)127
5.7.2用continue語句提前結(jié)束本次循環(huán)128
5.7.3break語句和continue語句的區(qū)別129
5.8循環(huán)程序舉例132
習(xí)題141
第6章利用數(shù)組處理批量數(shù)據(jù)143
6.1怎樣定義和引用一維數(shù)組143
6.1.1怎樣定義一維數(shù)組144
6.1.2怎樣引用一維數(shù)組元素145
6.1.3一維數(shù)組的初始化146
6.1.4一維數(shù)組程序舉例147
6.2怎樣定義和引用二維數(shù)組149
6.2.1怎樣定義二維數(shù)組150
6.2.2怎樣引用二維數(shù)組的元素151
6.2.3二維數(shù)組的初始化152
6.2.4二維數(shù)組程序舉例153
6.3字符數(shù)組155
6.3.1怎樣定義字符數(shù)組155
6.3.2字符數(shù)組的初始化156
6.3.3怎樣引用字符數(shù)組中的元素156
6.3.4字符串和字符串結(jié)束標(biāo)志157
6.3.5字符數(shù)組的輸入輸出160
6.3.6使用字符串處理函數(shù)162
6.3.7字符數(shù)組應(yīng)用舉例166
習(xí)題169
第7章用函數(shù)實(shí)現(xiàn)模塊化程序設(shè)計(jì)171
7.1為什么要用函數(shù)171
7.2怎樣定義函數(shù)173
7.2.1為什么要定義函數(shù)173
7.2.2定義函數(shù)的方法174
7.3調(diào)用函數(shù)175
7.3.1函數(shù)調(diào)用的形式175
7.3.2函數(shù)調(diào)用時(shí)的數(shù)據(jù)傳遞176
7.3.3函數(shù)調(diào)用的過程178
7.3.4函數(shù)的返回值179
7.4對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型181
7.5函數(shù)的嵌套調(diào)用183
7.6函數(shù)的遞歸調(diào)用185
7.7數(shù)組作為函數(shù)參數(shù)193
7.7.1數(shù)組元素作函數(shù)實(shí)參193
7.7.2數(shù)組名作函數(shù)參數(shù)195
7.7.3多維數(shù)組名作函數(shù)參數(shù)198
7.8局部變量和全局變量200
7.8.1局部變量200
7.8.2全局變量201
7.9變量的存儲(chǔ)方式和生存期205
7.9.1動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式205
7.9.2局部變量的存儲(chǔ)類別206
7.9.3全局變量的存儲(chǔ)類別209
7.9.4存儲(chǔ)類別小結(jié)213
7.10關(guān)于變量的聲明和定義215
7.11內(nèi)部函數(shù)和外部函數(shù)216
7.11.1內(nèi)部函數(shù)216
7.11.2外部函數(shù)216
習(xí)題219
第8章善于利用指針221
8.1指針是什么221
8.2指針變量223
8.2.1使用指針變量的例子223
8.2.2怎樣定義指針變量224
8.2.3怎樣引用指針變量225
8.2.4指針變量作為函數(shù)參數(shù)227
8.3通過指針引用數(shù)組232
8.3.1數(shù)組元素的指針232
8.3.2在引用數(shù)組元素時(shí)指針的運(yùn)算233
8.3.3通過指針引用數(shù)組元素234
8.3.4用數(shù)組名作函數(shù)參數(shù)239
8.3.5通過指針引用多維數(shù)組247
8.4通過指針引用字符串257
8.4.1字符串的引用方式 257
8.4.2字符指針作函數(shù)參數(shù)261
8.4.3使用字符指針變量和字符數(shù)組的比較265
8.5指向函數(shù)的指針268
8.5.1什么是函數(shù)指針268
8.5.2用函數(shù)指針變量調(diào)用函數(shù)268
8.5.3怎樣定義和使用指向函數(shù)的指針變量270
8.5.4用指向函數(shù)的指針作函數(shù)參數(shù)272
8.6返回指針值的函數(shù)276
8.7指針數(shù)組和多重指針279
8.7.1什么是指針數(shù)組 279
8.7.2指向指針數(shù)據(jù)的指針282
8.7.3指針數(shù)組作main函數(shù)的形參284
8.8動(dòng)態(tài)內(nèi)存分配與指向它的指針變量287
8.8.1什么是內(nèi)存的動(dòng)態(tài)分配287
8.8.2怎樣建立內(nèi)存的動(dòng)態(tài)分配287
8.8.3void指針類型 289
8.9有關(guān)指針的小結(jié)290
習(xí)題293
第9章用戶自己建立數(shù)據(jù)類型295
9.1定義和使用結(jié)構(gòu)體變量295
9.1.1自己建立結(jié)構(gòu)體類型295
9.1.2定義結(jié)構(gòu)體類型變量 297
9.1.3結(jié)構(gòu)體變量的初始化和引用299
9.2使用結(jié)構(gòu)體數(shù)組302
9.2.1定義結(jié)構(gòu)體數(shù)組302
9.2.2結(jié)構(gòu)體數(shù)組的應(yīng)用舉例304
9.3結(jié)構(gòu)體指針305
9.3.1指向結(jié)構(gòu)體變量的指針305
9.3.2指向結(jié)構(gòu)體數(shù)組的指針306
9.3.3用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作函數(shù)參數(shù)308
9.4用指針處理鏈表311
9.4.1什么是鏈表 311
9.4.2建立簡單的靜態(tài)鏈表312
9.4.3建立動(dòng)態(tài)鏈表313
9.4.4輸出鏈表317
9.5共用體類型319
9.5.1什么是共用體類型319
9.5.2引用共用體變量的方式320
9.5.3共用體類型數(shù)據(jù)的特點(diǎn)321
9.6使用枚舉類型325
9.7用typedef聲明新類型名328
習(xí)題332
第10章對(duì)文件的輸入輸出333
10.1C文件的有關(guān)基本知識(shí)333
10.1.1什么是文件333
10.1.2文件名334
10.1.3文件的分類334
10.1.4文件緩沖區(qū)335
10.1.5文件類型指針335
10.2打開與關(guān)閉文件337
10.2.1用fopen函數(shù)打開數(shù)據(jù)文件337
10.2.2用fclose函數(shù)關(guān)閉數(shù)據(jù)文件339
10.3順序讀寫數(shù)據(jù)文件340
10.3.1怎樣向文件讀寫字符340
10.3.2怎樣向文件讀寫一個(gè)字符串343
10.3.3用格式化的方式讀寫文件346
10.3.4用二進(jìn)制方式向文件讀寫一組數(shù)據(jù)347
10.4隨機(jī)讀寫數(shù)據(jù)文件351
10.4.1文件位置標(biāo)記及其定位351
10.4.2隨機(jī)讀寫 354
10.5文件讀寫的出錯(cuò)檢測355
習(xí)題356