C語言學習手冊

C語言學習手冊

字元數組的引用 字元數組的輸出 字元數組的套用

圖書信息

明日科技 陳振安 李鑫 等編著

ISBN 978-7-121-13066-3
2011年4月出版
定價:59.00元(含DVD光碟1張)
16開
512頁

宣傳語

編程成功之路從此開始!

內 容 簡 介

本書從初學者的角度出發,全面介紹了使用C語言進行程式開發的各種技術。在內容布局上由淺入深,讓讀者循序漸進地掌握編程技術;在內容講解上結合豐富的圖解和形象的比喻,幫助讀者理解“晦澀難懂”的技術;在內容形式上附有大量的提示、技巧、說明、情景套用、實戰練習等,夯實讀者編程技術,豐富編程經驗。全書共分18章,主要講述了Turbo C 2.0和Visual C++ 6.0編譯器的使用、C語言的基礎知識、常量和變數的使用、數據類型、表達式的寫法、運算符的使用、輸入、輸出函式的用法、選擇結構程式的設計、使用數組的方法、函式的用法、指針的使用、如何掌握結構體與公用體、數組的排序法、鍊表的使用、位運算的算法、儲存管理、函式類型、預處理和檔案的讀、寫,最後,通過一個實戰項目——學生管理系統,使讀者將所學知識更好地套用到實際開發當中。
本書附有配套光碟。光碟中包含本書所有程式的原始碼、重點難點的實例視頻錄像。其中,所有原始碼都經過了精心的測試,能夠在Windows 2000、Windows XP、Windows 2003、Windows 7系統中編譯和運行。
本書適用於C語言的愛好者、初學者和中級開發人員,也可以作為大中專院校和培訓機構的教材。

前 言

讓想要學習編程的人員都能夠學會編程!
我可以學會編程嗎?
當然可以!即使你沒有基礎,即使你是非計算機專業畢業,即使你已過而立之年,甚至是只有國中畢業。我國最早的計算機反病毒專家、江民防毒軟體創始人王江民,國中畢業,38歲開始學習計算機,因為英語基礎不好,很多人認為他根本沒有學會編程的可能。但王江民沒有感覺自己不行,硬是克服各種困難,成為我國最成功的程式開發人員之一。
王江民學習編程的訣竅是什麼?
是實踐。王江民說:“計算機是實踐性非常強的學科。我搞計算機是用計算機,不是學計算機。” 王江民首先學的是BASIC語言。當時,為了輔導上國小的孩子,對軟體一片空白的王江民竟然決定編寫程式代替家長輔導。短短3個月,王江民就邊學邊實踐,編好了一套數學語文教學軟體,試過後效果奇佳,參加電腦報軟體交流,被評為第二名,譽為“教育軟體第一”。因為這次成功,極大激發了王江民對編程的興趣,使他從此把精力轉到了軟體領域。
所以說:實踐,是學習編程的最好方法,也是培養編程樂趣、捕獲發展機遇的最佳途徑。值得注意的是,不要等學完全部知識才去實踐,要隨時學習,隨時實踐,哪怕只學了一點點。
這本書適合我嗎?
非常適合!本書是學習C語言編程的最佳選擇。所講內容通俗易懂,易於學習,貼近實踐。對於學習中的難點、重點,注意結合實際開發,採用情景套用的方式進行介紹和練習。本書光碟提供了完整的視頻講座,可以對照本書內容循序漸進進行學習。利用本書,不但可以學會編程,更能激發學習者理論聯繫實際的熱情,開發出符合市場需求的軟體和項目。

本書內容

本書分為基礎篇、核心篇、高級篇和實戰篇,總計18章。內容安排按照“從零起步、循序漸進”的學習順序,全面提高讀者學、練、用的能力。本書的知識結構如下圖所示。

本書特色

 通易俗懂
為了讓初學者易於學習,本書力求內容通俗易懂,講解寓教於樂。對於初學者難以理解的專業術語,本書都進行了形象的解釋,有些還提供了例圖。書後附錄中又單獨將術語解釋提煉出來,供讀者學習時參考。初學人員學習編程的另一個障礙是對難點技術的理解,如多分支判斷語句、指針和調用函式等。書中在講解這些難於理解的技術時,結合生活中的示例給出了形象的解釋。例如,多分支判斷語句滿足不同條件,執行不同操作,通過現實生活中汽車要去不同地點,選擇不同路線來做鮮明的對照,還配有圖形,如下圖所示。



語音視頻講座
為了方便讀者學習,本書附贈光碟中提供了19小時視頻講座。其講解細膩、層次清楚、互動性強,不但可以加深對書中內容的理解,還可以引導學習者掌握“是什麼”、“為什麼”、“怎么辦”、“應注意些什麼”的編程思維能力。所講視頻不僅對書中的內容進行了詳細介紹,還對相關技術進行了有效擴展,對開發中易犯的各種錯誤給出了解決方案。
 注重實用性
初學者經常會遇到這樣的情況,書中講解的技術能夠理解,但不知道如何套用。例如,在學習抽象類時,讀者能夠自己定義抽象類,並且能夠從抽象類派生子類,但是不知道抽象類能夠做什麼、在哪裡套用抽象類。本書在介紹技術時,注意強調技術的實用性,並且通過實例突出技術的套用價值。對於一些典型的套用,書中通過“情景套用”欄目進行重點介紹。
 實戰互動練習
要掌握一項技術,最佳的方式就是多練習、多實踐。本書每章都提供了多個供讀者實踐的實例任務,讀者可以對照檢驗對知識的掌握情況。每個實例任務都分為“題目描述”、“技術指導”和“緊急救援”三部分。其中,“題目描述”給出了實例功能的詳細描述和效果圖,“技術指導”給出了開發思路和關鍵技術,“緊急救援”提供了下載實例源碼和開發文檔的地址連結。

超值DVD光碟

為了幫助讀者學習和使用書中的實例,本書附贈DVD光碟1張,裡面不僅包含了書中所有實例項目的原始碼、素材、光碟使用說明書,還提供了19小時視頻專題錄像及大量實例源碼。光碟目錄如下圖所示。

本書適用人群

本書是一部零基礎編程圖書,非常適合以下人員閱讀:
 零基礎的初學編程人員  初、中級程式開發人員
 編程愛好者  想學編程的各企事業單位在職人員
 大中專院校的教師和學生  相關培訓機構的教師和學員

本書參與作者

本書由明日科技組織編寫,參加編寫的人員有李鑫、劉銳寧、李偉明、趙會東、王小科、王軍、董大永、李繼業尹強張磊、房大偉、呂雙、塞奎春、劉彬彬劉雲峰等。由於作者水平有限,疏漏和不足之處在所難免,歡迎廣大讀者提出寶貴意見。
非學無以廣才,非志無以成學。
祝大家讀書快樂!
明日科技

目 錄

第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.1.2 標識符與關鍵字 34
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.1 整型變數 84
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.2.3 強制類型轉換 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.1 goto語句 200
8.7.2 break語句 202
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.4 解讀多維數組 228
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.6 指針數組作為main函式的參數 333
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.2 師生信息存儲系統 367
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 運用數組排序算法 384
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.1 動態分配一段記憶體空間——malloc函式 428
15.2.2 動態分配連續記憶體空間數組——calloc函式 429
15.2.3 改變ptr指針指向空間大小——realloc函式 431
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.1 為數組動態分配記憶體 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

相關詞條

相關搜尋

熱門詞條

聯絡我們