1991年,筆者還在美國讀計算機博士時,出版了一本在UNIX環(huán)境撰寫的C語言圖書,隨后基于PC環(huán)境編寫了Turbo C、Borland C、Visual C、C 、電玩游戲設計中的C 語言等相關圖書。本書則是將過去筆者撰寫C語言的經驗與目前科技發(fā)展趨勢結合,進行重新詮釋。
這是一本完整講解C語言的教材,從最基本的C語言概念講起,逐步講解程序流程控制、循環(huán)、字符串、指針、函數、結構、文件輸入與輸出,以及完整的大型項目設計。同時本書還進一步講解了數據結構的基礎知識,如串行、堆棧、隊列與二叉樹,奠定讀者未來學習算法的基礎。本書最后一章則是介紹C 與C語言的差異,由此可以幫助讀者學習面向對象的程序開發(fā)方法。
為了讓讀者可以徹底了解C語言,本書使用大量圖例講解語法運作過程與內存間的關系,特別在讀者不易理解的指針、串行、堆棧、二叉樹章節(jié),更是全程記錄每個環(huán)節(jié)內存的變化。整本書用460多個活潑、生動、實用的程序實例輔助解說。每章附帶的是非題、選擇題、填充題等習題可以加深讀者對重點知識的理解,程序實操題則可以加強讀者的程序設計技能,實現(xiàn)舉一反三。所有習題答案可在前言最后掃碼下載。本書也講解了豐富的函數,讀者可以了解系統(tǒng)資源,加快未來的工作效率。通過本書內容,讀者可以徹底理解下列C語言的相關知識。
..C語言的輸入與輸出。
..C語言解數學方程式。
..程序流程控制與循環(huán)設計。
..基礎數學與統(tǒng)計知識。
..排序的內涵。
..遞歸函數設計。
..斐波那契(Fibonacci)數列的產生。
..C語言的前端處理器。
..計算機內存地址及指針。
..將struct應用到平面坐標系統(tǒng)、時間系統(tǒng)。
..將enum應用在結賬系統(tǒng)、薪資計算系統(tǒng)。
..字符串加密。
..文件管理。
..C語言低階應用 處理位運算。
..建立項目執(zhí)行大型程序設計。
..基礎數據結構。
..C 與C語言的差異。
筆者編寫過許多計算機圖書,本書沿襲筆者圖書的特色,程序實例豐富,相信讀者只要遵循本書內容,必定可以在短時間內精通C語言,奠定學習進階計算機知識的基礎。本書雖力求完美,但錯誤難免,尚祈讀者不吝指正。
洪錦魁
第1章 C語言基本概念
1-1 C語言的價值2
1-2 C 語言的特色2
1-3 C語言開發(fā)過程3
1-4 規(guī)劃程序5
1-5 程序除錯6
1-6 程序的名稱7
1-7 C語言程序結構分析8
1-8 C語言程序實例ch1_3c的解說9
1-8-1 程序的行號9
1-8-2 程序的批注9
1-8-3 引用頭文件9
1-8-4 主程序int main( )聲明 12
1-8-5 程序的內容12
1-8-6 變量的聲明12
1-8-7 程序實例ch1_3c的解說 13
1-9 習題13
第2章 C語言數據處理的概念
2-1 變量名稱的使用16
2-1-1 認識C語言的變量 16
2-1-2 認識不需事先聲明變量的
程序語言 17
2-2 變量的聲明17
2-3 基本數據形態(tài)18
2-3-1 整數 18
2-3-2 字符 21
2-3-3 浮點數 22
2-3-4 sizeof( )函數 23
2-3-5 字符串數據形態(tài) 24
2-4 常數的表達方式24
2-4-1 整數常數 24
2-4-2 浮點常數 26
2-4-3 字符常數 26
2-4-4 字符串常數 27
2-4-5 一次設定多個變量值 27
2-5 程序設計的專有名詞28
2-5-1 程序代碼 28
2-5-2 表達式 28
2-5-3 運算符與操作數 28
2-5-4 操作數也可以是一個表達式 29
2-5-5 指定運算符 29
2-5-6 單元運算符 29
2-5-7 二元運算符 29
2-5-8 三元運算符 30
2-6 算術運算30
2-6-1 基礎算術運算符號 30
2-6-2 負號運算 32
2-6-3 否運算 32
2-6-4 運算優(yōu)先級32
2-6-5 程序代碼指令太長的處理 33
2-7 數據形態(tài)的轉換33
2-7-1 基礎數據形態(tài)的轉換 34
2-7-2 整數和字符混合使用 35
2-7-3 學生買球鞋36
2-8 C 語言的特殊表達式36
2-8-1 遞增和遞減表達式 36
2-8-2 設定的特殊表達式 38
2-9 專題實操:圓面積/圓周長/圓周率39
2-9-1 圓面積與周長的計算 39
2-9-2 計算圓周率39
2-10 習題40
第3章 基本的輸入與輸出
第4章 簡易數學函數的使用
第5章 程序的流程控制
第6章程序的循環(huán)設計
6-1 for循環(huán)111
6-1-1 單層for循環(huán) 111
6-1-2 for語句應用到無限循環(huán) 114
6-1-3 雙層或多層for循環(huán) 114
6-1-4 for循環(huán)指標遞減設計 117
6-2 while循環(huán)117
6-2-1 單層while循環(huán) 117
6-2-2 while語句應用到無限循環(huán) 120
6-2-3 雙層或多層while循環(huán) 120
6-3 do … while循環(huán)122
6-3-1 單層do … while循環(huán) 122
6-3-2 do … while語句的無限循環(huán) 124
6-3-3 雙層或多層do … while循環(huán) 124
6-4 循環(huán)的選擇125
6-5 break語句125
6-6 continue語句126
6-7 隨機數函數128
6-7-1 rand( )函數 128
6-7-2 srand( )函數 128
6-7-3 time( )函數 129
6-7-4 建立某區(qū)間的隨機數 130
6-7-5 建立0~1的隨機浮點數 130
6-8 休息函數131
6-8-1 sleep( )函數 131
6-8-2 usleep( )函數131
6-9 專題實操:計算成績/圓周率/最大公
約數/國王的麥粒131
6-9-1 計算平均成績和不及格人數 131
6-9-2 猜數字游戲132
6-9-3 利用輾轉相除法求最大
公約數 133
6-9-4 計算圓周率133
6-9-5 雞兔同籠:使用循環(huán)計算 134
6-9-6 國王的麥粒 135
6-9-7 離開無限循環(huán)與程序結束
Ctrl C組合鍵 135
6-9-8 銀行賬號凍結 136
6-9-9 自由落體 136
6-10 習題137
第7章 數組
7-1 一維數組145
7-1-1 基礎概念 145
7-1-2 認識數組的殘值 146
7-1-3 C語言不做數組邊界的檢查 146
7-1-4 一維數組的初值設定 147
7-1-5 計算數組所占的內存空間和
數組長度 148
7-1-6 讀取一維數組的輸入 149
7-1-7 自行設計數組邊界檢查程序 150
7-1-8 一維數組的實例應用 150
7-2 二維數組151
7-2-1 基礎概念 151
7-2-2 二維數組的初值設定 152
7-2-3 讀取二維數組的輸入 153
7-2-4 二維數組的實例應用 154
7-2-5 二維數組的應用解說 154
7-3 更高維的數組155
7-3-1 基礎概念 155
7-3-2 三維或更高維數組的應用解說 157
7-4 排序157
7-4-1 排序的概念與應用 157
7-4-2 排序實操 158
7-5 專題實操:斐波那契數列/魔術方塊161
7-5-1 斐波那契數列 161
7-5-2 二維數組乘法 162
7-5-3 4 4魔術方塊 162
7-5-4 奇數矩陣魔術方塊 163
7-5-5 基礎統(tǒng)計 165
7-6 習題166
第8章 字符串徹底剖析
8-1 由字符組成的一維數組173
8-2 比較字符數組和字符串173
8-3 完整解說字符串的輸出與輸入176
8-3-1 標準字符串的輸出 176
8-3-2 標準字符串的輸入 176
8-4 gets( )函數和puts( )函數177
8-4-1 gets( )函數 178
8-4-2 puts( )函數 178
8-5 C語言的字符串處理的函數179
8-5-1 strcat( )函數 180
8-5-2 strcmp( )函數 180
8-5-3 strcpy( )函數 181
8-5-4 strlen( )函數 181
第9章 函數的應用
第10章 C語言前端處理器
第11章 指針
11-1 認識地址250
11-2 認識指針252
11-3 使用指針變量252
11-3-1 聲明指針變量 252
11-3-2 從認識到精通&和*
運算符 253
11-3-3 指針變量的地址 254
11-3-4 指針變量的長度 256
11-3-5 簡單指針實例 256
11-3-6 指針常發(fā)生的錯誤:指針
沒有指向地址 260
11-3-7 用指針讀取輸入數據 262
11-3-8 指針的運算 263
11-3-9 指針數據形態(tài)不可變更 264
11-3-10 再談指針聲明方式 265
11-3-11 空指針NULL 266
11-4 指針與一維數組266
11-4-1 認識數組名和數組的地址 266
11-4-2 數組名不是指針常數的
場合 267
11-4-3 數組索引與數組名 268
11-4-4 數組名就是一個指針 269
11-4-5 定義和使用數組指針變量 270
11-4-6 移動指針讀取輸入數組數據271
11-4-7 使用指針讀取和加總數組
元素 272
11-5 指針與二維數組273
11-5-1 認識二維數組的元素地址 273
11-5-2 二維數組名是一個指針 275
11-5-3 建立指針遍歷二維數組 275
11-5-4 雙重指針 276
11-5-5 雙重指針與二維數組 277
11-6 將指針應用在字符串279
11-6-1 認識與建立字符指針 279
11-6-2 字符指針 280
11-6-3 將指針指向字符串 281
11-7 指針與字符串數組282
11-7-1 字符串數組 282
11-7-2 二維的字符串數組 283
11-7-3 字符串內容的更改與指針
內容的更改 283
11-7-4 聲明空字符串 284
11-8 專題實操:44魔術方塊/奇數魔術
方塊285
11-8-1 使用指針執(zhí)行數組元素相加285
11-8-2 使用雙重指針輸出二維
數組洪 285
11-8-3 使用指針設計44魔術方塊 286
11-9 習題287
第12章 指針與函數
第13章 結構struct數據形態(tài)
第14章 union、enum和typedef
第15章 測試符號與符號轉換函數
第16章 文件的輸入與輸出
16-1 文件的輸入與輸出352
16-2 認識文本文件與二進制文件352
16-3 有緩沖區(qū)的輸入與輸出函數353
16-3-1 fopen( )函數 353
16-3-2 fclose( )函數 355
16-3-3 putc( )函數 355
16-3-4 getc( )函數 356
16-3-5 fprintf( )函數357
16-3-6 fscanf( )函數 358
16-3-7 feof( )函數 358
16-3-8 ferror( )函數 359
16-4 有緩沖區(qū)的輸入與輸出應用在二進制
文件360
16-4-1 fwrite( )函數 360
16-4-2 fread( )函數360
16-4-3 fseek( )函數 361
16-4-4 rewind( )函數 362
16-4-5 輸出數據到二進制文件 362
16-4-6 讀取二進制文件數據 363
16-5 C 語言默認的文件指針363
16-6 無緩沖區(qū)的輸入與輸出364
16-6-1 open( )函數 365
16-6-2 close( )函數366
16-6-3 read( )函數 367
16-6-4 creat( )函數 367
16-6-5 write( )函數368
16-7 無緩沖區(qū)的輸入與輸出應用在二進制
文件 368
16-8 專題實操:隨機讀取二進制文件
數據/字符串加密370
16-8-1 隨機讀取數據的應用 370
16-8-2 lseek( )函數371
16-8-3 字符串加密 373
16-9 習題373
第17章 文件與文件夾的管理
17-1 文件的刪除377
17-1-1 remove( )函數 377
17-1-2 unlink( )函數 377
17-2 文件名的更改378
17-3 文件長度計算378
17-4 子文件夾的建立379
17-5 刪除子文件夾379
17-6 獲得目前文件夾路徑380
17-7 習題380
第18章 數據轉換函數
18-1 atof( )函數383
18-2 atoi( )函數383
18-3 atol( )函數384
18-4 gcvt( )函數385
18-5 itoa( )函數385
18-6 ltoa( )函數386
18-7 習題387
第19章 基本位運算
19-1 二進制系統(tǒng)389
19-1-1 十進制轉二進制 389
19-1-2 二進制轉十進制 389
19-2 位運算基礎概念390
19-3 & 運算符391
19-4 | 運算符392
19-5 ^ 運算符393
19-6 ~ 運算符394
19-7 << 運算符394
19-8 >> 運算符395
19-9 位字段396
19-10 習題398
第20章 建立項目:適用大型程序
20-1 程序項目的緣由401
20-2 基礎程序實操401
20-3 模塊化程序402
20-4 建立項目與執(zhí)行403
20-5 增加功能的項目405
20-6 不同文件的全局變量與extern406
20-7 習題407
第21章 基本鏈表結構
第22章 棧與隊列
第23章 二叉樹
第24章 C語言邁向C 之路