內容簡介
本書從初學者的角度出發,全面介紹了使用C語言進行程式開發的各種技術。在內容布局上由淺入深,讓讀者循序漸進地掌握編程技術;在內容講解上結合豐富的圖解和形象的比喻,幫助讀者理解“晦澀難懂”的技術;在內容形式上附有大量的提示、技巧、說明、情景套用、實戰練習等,夯實讀者編程技術,豐富編程經驗。全書共分18章,主要講述了Turbo C 2.0和
Visual C++ 6.0編譯器的使用、C語言的基礎知識、常量和變數的使用、數據類型、表達式的寫法、運算符的使用、輸入、輸出函式的用法、選擇結構程式的設計、使用
數組的方法、函式的用法、指針的使用、如何掌握結構體與公用體、數組的排序法、鍊表的使用、位運算的算法、儲存管理、函式類型、預處理和檔案的讀、寫,最後,通過一個實戰項目——學生管理系統,使讀者將所學知識更好地套用到實際開發當中。
本書附有配套光碟。光碟中包含本書所有程式的
原始碼、重點難點的實例視頻錄像。其中,所有原始碼都經過了精心的測試,能夠在Windows 2000、Windows XP、Windows 2003、Windows 7系統中編譯和運行。
本書適用於C語言的愛好者、初學者和中級開發人員,也可以作為大中專院校和培訓機構的教材。
目錄
第1篇 基礎篇
第1章 初識C語言 16
1.1 C語言介紹 17
1.1.1 簡述程式語言 17
1.1.2 C語言的產生 18
1.1.3 C語言的特點 19
1.2 選擇C語言的理由 21
1.2.1 C語言的發展趨勢 21
1.2.2 C語言的成功案例 23
1.2.3 C語言的套用領域 25
1.3 如何學好C語言 25
1.3.1 確立學習態度 26
1.3.2 打好基礎 26
1.3.3 多請教、多交流 26
1.3.4 養成良好的編程習慣 27
1.3.5 多動手、勤思考 27
1.3.6 掌握學習方法 27
1.4 本章小結 28
第2章 C語言編程準備 29
2.1 編寫程式的格式 30
2.1.1 一個簡單的C程式 31
2.2 開發環境 37
2.2.1 Turbo C 2.0 38
2.2.2 Visual C++ 6.0 42
2.3 一個完整的C程式 48
2.4 實戰練習 52
2.4.1 編寫一個簡單的C程式 52
2.4.2 熟悉開發工具 53
2.5 本章小結 53
第3章 C語言的靈魂——算法 54
3.1 算法的基本概念 55
3.1.1 算法的特徵 55
3.1.2 算法的優劣 57
3.2 描述算法 57
3.2.1 自然語言 58
3.2.2 描繪流程圖 58
3.2.3 繪製N-S流程圖 64
3.2.4 偽代碼 68
3.3 本章小結 69
第4章 常量和變數 70
4.1 了解數據類型 71
4.2 解讀常量 72
4.2.1 整型常量 72
4.2.2 實型常量 75
4.2.3 字元型常量 76
4.2.4 轉義字元 80
4.2.5 符號常量 81
4.2.6 情景套用一:用putchar函式輸出“I LOVE C” 82
4.2.7 情景套用二:printf函式結合轉義字元 83
4.3 變數 83
4.3.2 情景套用:求出買水果一共花的錢數 86
4.3.3 實型變數 87
4.3.4 字元型變數 89
4.4 掌握混合運算 91
4.5 實戰練習 93
4.5.1 使用printf語句輸出變數 93
4.5.2 使用字元型變數輸出字元串 94
4.6 本章小結 94
第5章 表達式與運算符 95
5.1 解讀表達式 96
5.2 賦值運算符與賦值表達式 98
5.2.1 變數賦初值 98
5.2.2 自動類型轉換 100
5.3 掌握算術運算符與表達式 102
5.3.1 算術運算符 102
5.3.2 算術表達式 102
5.3.3 優先權與結合性 104
5.3.4 自增自減運算符 105
5.3.5 情景套用:求運算後的4個變數的值 107
5.4 了解關係運算符與表達式 108
5.4.1 關係運算符 108
5.4.2 關係表達式 109
5.4.3 優先權與結合性 110
5.5 解讀邏輯運算符與表達式 111
5.5.1 邏輯運算符 111
5.5.2 邏輯表達式 112
5.5.3 優先權與結合性 112
5.6 運用位邏輯運算符與表達式 113
5.6.1 位邏輯運算符 114
5.6.2 位邏輯表達式 114
5.7 介紹逗號運算符與表達式 114
5.8 使用複合賦值運算符 116
5.9 判斷條件運算符 117
5.10 了解運算符的優先權和結合性 118
5.11 實戰練習 119
5.11.1 使用複合賦值運算符求出計算結果 119
5.11.2 用自增、自減運算符求出計算結果 120
5.11.3 編寫簡單的計算加班工資程式 121
5.12 本章小結 122
第6章 輸入、輸出函式 123
6.1 解讀語句 124
6.1.1 表達式語句 124
6.1.2 空語句 124
6.1.3 複合語句 124
6.2 輸入、輸出字元數據 125
6.2.1 輸出字元數據 125
6.2.2 輸入字元數據 126
6.2.3 情景套用:使用getchar函式取消獲取Entet鍵 127
6.3 輸入、輸出字元串 128
6.3.1 使用字元串輸出函式 128
6.3.2 掌握字元串輸入函式 130
6.4 介紹格式輸出函式 131
6.5 講解格式輸入函式 134
6.6 套用順序程式設計 138
6.7 實戰練習 141
6.7.1 將輸入的小寫字元轉換為大寫字元 141
6.7.2 模擬工資計算器 142
6.7.3 輸入、輸出古人名言 142
6.8 本章小結 143
第7章 選擇結構程式設計 144
7.1 if選擇語句 145
7.2 if語句的不同形式 145
7.2.1 單條件單分支的if語句 146
7.2.2 單條件雙分支的if語句 149
7.2.3 多條件多分支的if語句 153
7.2.4 情景套用:輸入數值檢查字元類型 156
7.3 掌握if語句的嵌套形式 157
7.4 注意if語句的常見錯誤 160
7.4.1 使用分號的注意事項 161
7.4.2 條件放置注意事項 161
7.4.3 if和else的配對注意事項 162
7.4.4 大括弧的重要性 162
7.5 判斷分支選擇switch語句 163
7.5.1 switch語句的基本形式 163
7.5.2 多路開關模式的switch語句 167
7.6 區分if…else語句和switch語句 169
7.7 套用選擇結構程式 171
7.8 實戰練習 173
7.8.1 計算函式,求出Y值 173
7.8.2 輸出三個變數中最大的數 174
7.8.3 計算增加後的工資 175
7.9 本章小結 175
第8章 循環語句 176
8.1 編寫循環語句 177
8.2 實現while型循環 177
8.2.1 while循環語句的一般形式 178
8.2.2 情景套用:求出數值內的所有正整數的和 180
8.2.3 避免while循環語句的死循環 182
8.2.4 了解while循環語句的空循環體 183
8.2.5 注意while循環語句常見錯誤 183
8.3 解讀for型循環語句 185
8.3.1 for循環語句的一般形式 185
8.3.2 靈活多變的for循環語句 189
8.3.3 套用for語句中的逗號 192
8.4 介紹do-while語句 193
8.5 比較三種循環 195
8.6 運用循環嵌套 195
8.6.1 各種結構的循環嵌套 195
8.6.2 循環嵌套實例 197
8.7 轉移語句 199
8.7.3 continue語句 203
8.8 區別三種跳轉語句 205
8.9 實踐練習 205
8.9.1 列印出大寫字母的ASCII碼對照表 205
8.9.2 列印出小寫字母的ASCII碼對照表 206
8.9.3 輸出0~100之間不能被3整除的數 207
8.10 本章小結 209
第2篇 核心篇
第9章 數組 212
9.1 介紹數組的概念 213
9.1.1 數組的分類 213
9.1.2 數組的維數 213
9.2 套用一維數組 214
9.2.1 一維數組的定義 214
9.2.2 一維數組的引用 215
9.2.3 一維數組的初始化 217
9.2.4 一維數組的套用 220
9.3 掌握二維數組 222
9.3.1 二維數組的定義 222
9.3.2 二維數組的引用 223
9.3.3 二維數組的初始化 223
9.3.4 二維數組的套用 227
9.5 使用字元數組 229
9.5.1 字元數組的定義 229
9.5.2 字元數組的引用 229
9.5.3 字元數組的初始化 229
9.5.4 字元數組的結束標誌 231
9.5.5 字元數組的輸出 232
9.5.6 字元數組的輸入 233
9.5.7 輸出完整的帶有空格的字元串 234
9.5.8 字元數組的套用 235
9.6 字元串處理函式 236
9.6.1 字元串的複製 237
9.6.2 字元串的連線 238
9.6.3 字元串的比較 240
9.6.4 字元串大小寫轉換 241
9.6.5 獲得字元串長度 243
9.7 熟練套用數組 245
9.7.1 反轉輸出字元串 245
9.7.2 使用數組統計學生成績 246
9.7.3 情景套用:字元串的加密和解密 248
9.8 實踐練習 250
9.8.1 實現strcpy函式的功能 250
9.8.2 統計字元中各元素的個數 251
9.8.3 重新排列字元串 251
9.9 本章小結 252
第10章 函式 253
10.1 函式概述 254
10.2 定義函式 256
10.2.1 函式定義的形式 256
10.2.2 定義與聲明 259
10.3 了解返回語句 262
10.3.1 從函式返回 262
10.3.2 返回值 266
10.4 傳遞函式參數 269
10.4.1 形式參數與實際參數 269
10.4.2 數組作為函式參數 271
10.4.3 了解main的參數 276
10.5 調用函式 276
10.5.1 函式調用方式 277
10.5.2 嵌套調用 280
10.5.3 遞歸調用 282
10.6 靈活套用函式 285
10.6.1 函式的套用 285
10.6.2 情景套用:使用字元函式判斷輸入字元 290
10.7 實踐與練習 292
10.7.1 輸出較大的整數 292
10.7.2 求出10個學生的平均成績 292
10.7.3 驗證6174 293
10.8 本章小結 294
第11章 指針 296
11.1 了解指針相關概念 297
11.1.1 介紹地址與指針 297
11.1.2 解讀變數與指針 298
11.1.3 使用指針變數 299
11.1.4 指針自加自減運算 303
11.1.5 情景套用:輸出整型變數地址 304
11.2 掌握數組與指針 305
11.2.1 一維數組與指針 306
11.2.2 情景套用一:輸出數組元素 309
11.2.3 二維數組與指針 310
11.2.4 情景套用二:將一個3行5列的二維數組的
第二行元素輸出 313
11.2.5 字元串與指針 314
11.2.6 字元串數組 316
11.3 指向指針的指針 318
11.3.1 套用介紹指向指針的指針 318
11.3.2 情景套用:輸出偶數 320
11.4 作為函式參數的指針變數 321
11.5 返回指針值的函式 331
11.5.1 介紹返回指針值的函式 331
11.5.2 情景套用:求長方形的周長 332
11.7 實戰練習 335
11.7.1 將數組中的元素值按照相反順序存放 335
11.7.2 將兩個字元串連線後輸出 336
11.7.3 使用指針實現字元串的複製 336
11.8 本章小結 337
第12章 結構體和共用體 338
12.1 套用結構體 339
12.1.1 結構體類型的概念 339
12.1.2 結構體變數的定義 340
12.1.3 結構體變數的引用 342
12.1.4 結構體類型的初始化 344
12.1.5 情景套用:輸出學生的信息 345
12.2 掌握結構體數組 348
12.2.1 定義結構體數組 348
12.2.2 初始化結構體數組 349
12.2.3 情景套用:輸出學生信息 351
12.3 解讀結構體指針 353
12.3.1 指向結構體變數的指針 353
12.3.2 指向結構體數組的指針 356
12.3.3 結構體作為函式參數 358
12.4 介紹包含結構的結構 360
12.5 套用共用體 362
12.5.1 共用體的概念 362
12.5.2 共用體變數的引用 363
12.5.3 共用體變數的初始化 364
12.5.4 共用體類型的數據特點 365
12.6 解讀枚舉類型 365
12.7 實戰練習 366
12.7.1 統計候選人的得票 366
12.7.3 計算學生的綜合成績 368
12.8 本章小結 368
第13章 鍊表與算法 369
13.1 介紹鍊表 370
13.1.1 鍊表概述 370
13.1.2 創建動態鍊表 371
13.1.3 輸出鍊表 374
13.2 進行鍊表的相關操作 376
13.2.1 鍊表的插入操作 377
13.2.2 鍊表的刪除操作 380
13.3.1 選擇法排序 385
13.3.2 冒泡法排序 387
13.3.3 交換法排序 389
13.3.4 插入法排序 391
13.3.5 折半法排序 394
13.3.6 比較數組排序算法 396
13.4 實戰練習 397
13.4.1 鍊表的刪除操作 397
13.4.2 使用選擇法排序 398
13.4.3 使用冒泡、交換、插入、折半等算法進行排序 399
13.5 本章小節 399
第3篇 高級篇
第14章 位運算 402
14.1 解讀位與位元組 403
14.2 掌握位運算操作符 403
14.2.1 “與”運算符 404
14.2.2 “或”運算符 405
14.2.3 “取反”運算符 407
14.2.4 “異或”運算符 409
14.2.5 “左移”運算符 412
14.2.6 “右移”運算符 413
14.2.7 位運算複合賦值運算符 415
14.2.8 長度不同的數據進行位運算 415
14.3 循環移位 416
14.4 什麼是位域 418
14.4.1 位域的概念與定義 419
14.4.2 位域相關說明 420
14.5 實戰練習 421
14.5.1 求兩個數進行“與”和“或”運算後的結果 421
14.5.2 求出一個數“左移”和“右移”後的結果 422
14.5.3 求一個數“循環左移”和“循環右移”後的結果 422
14.6 本章小結 423
第15章 存儲管理 424
15.1 記憶體組織方式 425
15.1.1 了解記憶體組織方式 425
15.1.2 解讀堆與棧 425
15.2 動態管理 428
15.2.2 動態分配連續記憶體空間數組——calloc函式 429
15.2.4 情景套用:使用realloc函式重新分配記憶體 432
15.2.5 釋放分配整型變數記憶體空間——free函式 432
15.3 記憶體丟失 433
15.4 變數的存儲類別 434
15.4.1 動態存儲與靜態存儲 435
15.4.2 修飾一個
局部變數為自動的auto變數 435
15.4.3 聲明位置不同、意義不同的static變數 436
15.4.4 暫存器存儲類的register變數 437
15.4.5 外部存儲的extern變數 437
15.5 實戰練習 438
15.5.2 為數組動態分配並釋放記憶體 439
15.5.3 用靜態局部整型變數計算3的平方和立方 440
15.6 本章小結 440
第16章 函式類型和預處理 441
16.1 內部函式和外部函式 442
16.1.1 介紹內部函式 442
16.1.2 解讀外部函式 443
16.2 靈活使用宏定義 444
16.2.1 不帶參數的宏定義 445
16.2.2 帶參數的宏定義 446
16.3 編寫#include指令 448
16.4 掌握條件編譯 450
16.4.1 #if命令 450
16.4.2 #ifdef及#ifndef命令 453
16.4.3 #undef命令 455
16.4.4 #line命令 455
16.4.5 #pragma命令 456
16.5 實踐練習 457
16.5.1 求兩個數相乘的積 457
16.5.2 從3個數中找出最小數 457
16.5.3 從3個數中找出最大數 458
16.6 本章小結 459
第17章 讀寫檔案 460
17.1 檔案概述 461
17.2 掌握檔案基本操作 462
17.3 運用檔案指針 463
17.4 打開和關閉檔案 464
17.4.1 檔案的打開 464
17.4.2 檔案的關閉 465
17.5 讀 寫 文 件 466
17.5.1 寫字元函式——fputc函式 466
17.5.2 讀字元函式——fgetc函式 468
17.5.3 寫字元串函式——fputs函式 469
17.5.4 讀字元串函式——fgets函式 470
17.5.5 格式化寫入函式——fprintf函式 472
17.5.6 格式化讀取函式——fscanf函式 474
17.5.7 數據塊讀寫函式——fread函式和fwrite函式 475
17.6 定位檔案 478
17.6.1 隨機讀寫操作——fseek函式 479
17.6.2 返回位置指針——rewind函式 481
17.6.3 ftell函式 483
17.7 實踐練習 485
17.7.1 複製檔案內容 485
17.7.2 保存學生信息 486
17.8 本章小結 487
第4篇 實戰篇
第18章 學生管理系統 490
18.1 分析需求 491
18.2 設計系統 491
18.3 功能模組設計 492
18.3.1 功能選擇界面 492
18.3.2 錄入學生成績信息 494
18.3.3 查詢學生成績信息 496
18.3.4 刪除學生成績信息 497
18.3.5 修改學生成績信息 499
18.3.6 插入學生成績信息 501
18.3.7 統計學生人數 504
18.4 本章小結 505
附錄A 專業術語表 506