2024香港最具教育競爭力中學/小學/幼稚園50強龍虎榜
2024香港最具教育競爭力中學/小學/幼稚園排名指南
最近十一年香港最具教育競爭力中學/小學/幼稚園50強完整版榜單:
2024202320222021/202019201820172016201520142013
教育競爭力評比體系說明
校風評比體系說明
服务全球华人的中英文書籍網上書店
您的購物車是空的

零基礎學編程:零基礎學C語言(附贈CD光盤1張)

  • 作者:康莉 等 著
  • 出版社: 機械工業出版社
  • 出版時間:2009-04-01
  • 版次:1
  • 商品編號: 10059120

    頁數:378

    印刷時間:2009-04-01


HK$75.00 (速遞費用須知)
購買額滿HK$158免運費
免郵費優惠僅限香港、澳门、
台灣及中國大陸

購買數量:

內容簡介

C語言是編程方式靈活多樣、功能強大、應用廣泛的一種程序設計語言。從程序設計語言的發展歷程來看,儘管後來出現了以C++、Java和C#等為代表的新語言,但C語言的基礎地位不可撼動。
  C語言的核心是結構化的編程思想,本書一共分為四篇,循序漸進地講述了C語言的語法規則和編程思想,從基本概唸到具體實踐、從入門知識到高階主題、從語法語義到數據結構和算法都進行了詳細的闡述,並通過實例對具體知識點進行了詳細的講解。
  本書的特點是內容全面、翔實,通俗易懂,循序漸進地介紹了C語言各方面的知識,重點突出。本書含有大量實例,代碼短小精煉,緊扣所講要點的本質,以加深讀者的印象,同時結合筆者多年使用C語言的經驗,闡述了很多代碼編寫技巧,讀者可將代碼複製到自己的機器上進行實驗,自行實踐和演練。
  本書適合C語言的初級、中級讀者閱讀,並可作為開發人員的參考手冊。

 

目錄

寫給未來的程序員
前言
第一篇 C語言基礎
第1章 踏上征程前的思想動員/1
1.1 為什麼選擇C語言/1
1.2 如何學好C語言/2
1.3 語言概述/3
1.3.1 什麼是語言/3
1.3.2 什麼是機器語言/3
1.3.3 什麼是彙編語言/4
1.3.4 面向過程的語言/5
1.3.5 什麼是C語言/5
1.4 程序開發週期/5
1.4.1 編輯C源代碼/6
1.4.2 編譯C源代碼/6
1.4.3 連接目標文件/7
1.4.4 編譯連接過程示例/7
1.4.5 運行程序/8
1.5 VC++、C++、C和TC—認識開發環境和語言的區別/8
1.6 小結/11

第2章 跟我寫Hello World/12
2.1 自己動手創建程序/12
2.2 認識LCC-Win32開發環境/12
2.2.1 為什麼選擇LCC-Win32/13
2.2.2 啟動LCC-Win32/13
2.2.3 新建Hello World工程/13
2.2.4 定義新工程/14
2.2.5 添加源代碼到工程/15
2.2.6 編譯器設置/15
2.2.7 連接器設置/15
2.2.8 調試器設置/16
2.2.9 開始編輯代碼/16
2.3 編譯運行—欣賞您的傑作/17
2.4 查看代碼如何一步一步被執行—調試排錯(debug)/18
2.4.1 debug一詞的由來/18
2.4.2 設置斷點/19
2.4.3 調試運行/19
2.5 小結/20

第3章 分解Hello World—最簡單C程序的組成/21
3.1 C程序概貌/21
3.2 程序員的解釋—註釋/21
3.3 從哪裡開始,到哪裡結束—main函數/23
3.4 如何在屏幕上顯示文字—函數調用/24
3.5 編譯器如何認識printf函數—#include預處理器指示符/25
3.5.1 函數聲明及其作用/25
3.5.2 試驗尋找#include的作用/26
3.5.3 #include的作用/27
3.6 計算1+1—有些小作為的程序/27
3.7 數據從哪裡來,又到哪裡去—變量/28
3.7.1 變量在內存中的表現形式/28
3.7.2 編譯器使用變量符號表/29
3.7.3 變量及其使用/30
3.8 自己設計C函數/31
3.8.1 在main函數中計算3個整數的平均數/31
3.8.2 在main函數中分3次計算3個整數的平均數/32
3.8.3 自編函數實現計算3個整數的平均數/32
3.8.4 如何自編寫函數/33
3.8.5 試驗觀察總結函數聲明和函數定義的意義/34
3.9 語句構成程序/35
3.10 向好程序員看齊—代碼風格/36
3.11 小結/36

第4章 如何存儲和獲取數據—變量及數據類型/37
4.1 二進制、八進制、十六進制/37
4.2 計算機中如何表示數據—字節和位/38
4.3 內存是存儲數據的「房間」—認識計算機內存/39
4.4 數據類型/40
4.4.1 整數類型/41
4.4.2 整數的正負—有符號和無符號/42
4.4.3 實數類型/44
4.4.4 字符類型/45
4.4.5 數據類型總結/45
4.5 常量/46
4.5.1 直接常量(字面常量)和符號常量/46
4.5.2 符號常量的優點/48
4.5.3 字面常量的書寫格式/48
4.5.4 轉義字符/50
4.5.5 字符串/51
4.6 變量/52
4.6.1 變量的聲明/52
4.6.2 變量聲明的意義/53
4.6.3 標識符和關鍵字/54
4.6.4 變量在內存中佔據的空間和變量的值/56
4.6.5 變量賦初值/59
4.7 幾個與變量相關的經典算法/60
4.7.1 累加和累乘/60
4.7.2 交換兩個變量的值/62
4.8 小結/63

第5章 用屏幕和鍵盤交互—簡單的輸出和輸入/64
5.1 輸入—處理—輸出:這就是程序/64
5.2 向屏幕輸出—printf函數詳解/64
5.2.1 printf函數的一般形式/65
5.2.2 格式字符串的一般形式/67
5.2.3 %d—十進制形式輸出帶符號整數/67
5.2.4 %最小寬度d格式符/68
5.2.5 %ld格式符—以長整型方式輸出/68
5.2.6 %o格式符—以八進制形式輸出整數/69
5.2.7 %x格式符—以十六進制的形式輸出整數/69
5.2.8 %u格式符—以十進制形式輸出unsigned型數據/70
5.2.9 %c格式符/70
5.2.10 %s格式符—輸出字符串/71
5.2.11 %f格式符—輸出實型數據/74
5.2.12 %e格式符—以指數形式輸出實數/75
5.2.13 %g格式符—自動選擇%f或者%e形式輸出/76
5.2.14 printf函數小結/76
5.3 字符輸出putchar和字符串輸出puts/76
5.3.1 putchar函數(字符輸出函數)/77
5.3.2 puts函數(字符串輸出函數)/78
5.4 接收鍵盤輸入—scanf函數詳解/79
5.4.1 一般形式/80
5.4.2 scanf函數的工作原理/80
5.4.3 多數據輸入分隔規則/82
5.4.4 格式字符/83
5.4.5 scanf使用方法說明/84
5.4.6 使用scanf函數的注意事項/87
5.5 字符輸入函數getchar/89
5.6 輸入輸出程序舉例/89
5.7 小結/92

第6章 程序的基本構成—運算符和表達式/93
6.1 認識C中的運算符和表達式/93
6.1.1 認識運算符和表達式/93
6.1.2 操作數、運算符和表達式/94
6.1.3 C運算符簡介/94
6.2 算術運算符和算術表達式/95
6.2.1 基本的算術運算符/95
6.2.2 ++自增、——自減運算符/96
6.2.3 算術表達式和運算符的優先級及結合性/99
6.3 逗號運算符和逗號表達式/100
6.3.1 逗號表達式的一般形式/100
6.3.2 逗號表達式的優先級和結合性/100
6.4 關係運算符和關係表達式/102
6.4.1 關係運算符的種類/102
6.4.2 關係表達式的一般形式/102
6.5 邏輯運算符和邏輯表達式/103
6.5.1 邏輯運算符/103
6.5.2 邏輯真值表/104
6.6 賦值運算符和賦值表達式/105
6.6.1 賦值表達式/105
6.6.2 復合賦值運算符/105
6.6.3 類型轉換/106
6.6.4 左值與程序實體/106
6.7 強制類型轉換和自動類型轉換/107
6.7.1 強制類型轉換/107
6.7.2 自動類型轉換/108
6.7.3 函數調用時的轉換/109
6.8 運算符的優先級/109
6.8.1 優先級、結合性彙總/110
6.8.2 短路表達式/110
6.8.3 sizeof運算符與sizeof表達式/111
6.9 小結/111

第7章 程序的最小獨立單元—語句/112
7.1 5種語句類型/112
7.1.1 表達式語句/112
7.1.2 函數調用語句/113
7.1.3 空語句/113
7.1.4 復合語句(塊語句)/113
7.1.5 流程控制語句/114
7.2 結構化程序設計/114
7.2.1 什麼是算法/114
7.2.2 算法的表示/114
7.2.3 算法的偽代碼表示/115
7.2.4 算法的流程圖表示/115
7.2.5 3種控制結構/115
7.2.6 算法示例/116
7.3 小結/117

第8章 條件判斷—分支結構/118
8.1 簡單的條件判斷—if語句/118
8.1.1 判斷表達式/118
8.1.2 花括號和if結構體/119
8.2 兩條岔路的選擇—if else結構/120
8.2.1 關鍵在else/120
8.2.2 if else結構體/121
8.3 多分支語句和分支語句嵌套/122
8.3.1 多分支/122
8.3.2 多分支if結構/124
8.3.3 分支語句嵌套/125
8.4 開關語句—switch結構/126
8.4.1 一般形式/126
8.4.2 為什麼叫開關語句/128
8.4.3 default語句/130
8.4.4 if結構和switch結構之比較/130
8.5 小結/130

第9章 一遍又一遍—循環結構/131
9.1 構造循環/131
9.1.1 循環的條件/131
9.1.2 當型循環和直到型循環/132
9.2 簡潔循環語句—while和do while結構/132
9.2.1 語法規則/133
9.2.2 代碼塊/133
9.3 最常用的循環語句—for結構/134
9.3.1 基本形式/134
9.3.2 表達式省略/136
9.3.3 循環終止和步長/137
9.4 循環嵌套/137
9.4.1 嵌套示例/137
9.4.2 嵌套的效率/138
9.5 與循環密切相關的流程轉向控制語句/139
9.5.1 跳出循環—break/139
9.5.2 重來一次—continue/140
9.5.3 隨心所欲—goto/140
9.6 小結/141

第二篇 一窺C語言門庭
第10章 寫程序就是寫函數—函數入門/143
10.1 什麼是函數—根據輸入進行處理返回輸出/143
10.1.1 分割/143
10.1.2 庫函數和自定義函數/144
10.2 自定義函數/144
10.2.1 定義的語法/144
10.2.2 函數定義範例/145
10.2.3 不要重複定義/146
10.3 函數調用與返回/146
10.3.1 形參和實參/146
10.3.2 傳址調用/147
10.3.3 函數返回/149
10.4 告訴編譯器有這麼一個函數—函數原型聲明/149
10.4.1 函數聲明的語法/150
10.4.2 聲明不同於定義/151
10.4.3 標準庫函數的聲明/152
10.5 面向過程的程序結構/152
10.5.1 模塊化/152
10.5.2 函數的調用過程—模塊的配合/152
10.5.3 一個入口一個出口/153
10.5.4 自頂向下,逐步求精/153
10.5.5 封裝和可重用/153
10.5.6 高內聚,低耦合/154
10.6 小結/154

第11章 同一類型多個元素的集合—簡單數組/155
11.1 什麼是數組/155
11.1.1 數組是一大片連續內存空間/155
11.1.2 數組元素的訪問/156
11.2 一維數組/156
11.2.1 一維數組的聲明/156
11.2.2 一維數組元素的訪問/156
11.2.3 數組的初始化/157
11.2.4 不合法的數組操作/158
11.3 二維數組/159
11.3.1 二維數組的聲明/159
11.3.2 二維數組的初始化/159
11.3.3 二維數組應用舉例/160
11.4 更高維的數組/161
11.4.1 高維數組的聲明和元素訪問/161
11.4.2 初始化/161
11.4.3 多維數組在內存中是如何排列元素的/162
11.5 小結/163

第12章 C語言難點—指針初探/164
12.1 計算機中的內存/164
12.1.1 內存地址/164
12.1.2 內存中保存的內容/164
12.1.3 地址就是指針/165
12.2 指針的定義/165
12.2.1 指針變量的聲明/165
12.2.2 指針變量的初始化/166
12.2.3 指針變量的值/166
12.2.4 取地址操作符&/166
12.2.5 指針變量佔據一定的內存空間/166
12.2.6 指向指針的指針/167
12.3 使用指針/168
12.3.1 運算符*/168
12.3.2 指針的類型和指針所指向的類型/169
12.3.3 同類型指針的賦值/169
12.3.4 指針的類型和指針所指向的類型不同/170
12.4 指針的運算/172
12.4.1 算術運算之「指針+整數」或「指針-整數」/172
12.4.2 指針-指針/173
12.4.3 指針的大小比較/174
12.5 指針表達式與左值/174
12.5.1 指針與整型/175
12.5.2 指針與左值/175
12.5.3 指針與const/175
12.6 動態內存分配/176
12.6.1 動態分配的好處/177
12.6.2 malloc與free函數/177
12.6.3 calloc與free函數/178
12.6.4 free函數與指針/179
12.6.5 內存洩漏/180
12.6.6 釋放已經釋放了的內存會出問題/180
12.7 小結/180

第13章 字符串及字符串操作/181
13.1 C風格字符串/181
13.1.1 C風格字符串的聲明/181
13.1.2 C風格字符串在內存中的表示/181
13.2 字符數組的輸入輸出/182
13.2.1 字符數組可以進行整體輸入輸出/182
13.2.2 使用gets函數讀入整行輸入/183
13.2.3 訪問字符數組中某個元素/184
13.2.4 更便捷的輸出—使用puts函數/184
13.3 字符串處理函數/185
13.3.1 理解:數組名是常指針/185
13.3.2 strlen函數與size_t/187
13.3.3 字符串複製函數strcpy/188
13.3.4 字符串比較函數strcmp/189
13.3.5 字符串連接函數strcat/190
13.3.6 全轉換為大寫形式/190
13.3.7 鏈式操作/191
13.4 小結/192

第14章 結構體、共用體、枚舉和typedef/193
14.1 結構體/193
14.1.1 結構體的定義/193
14.1.2 聲明結構體變量/194
14.1.3 初始化結構變量/194
14.1.4 訪問結構體成員/194
14.1.5 結構體定義的位置/195
14.1.6 結構體變量賦值/196
14.2 特殊結構體/196
14.2.1 結構體嵌套/197
14.2.2 匿名結構體/200
14.3 共用體/200
14.3.1 什麼是共用體/200
14.3.2 共用體的定義/200
14.3.3 聲明共用體變量/201
14.3.4 共用體變量的初始化/201
14.3.5 共用體成員訪問/201
14.3.6 共用體賦值/202
14.4 結構體和共用體的內存差異/202
14.4.1 結構體變量和共用體變量內存形式的不同/203
14.4.2 結構體變量的內存大小/203
14.4.3 字節對齊/204
14.4.4 最寬基本類型/204
14.4.5 共用體的大小/206
14.5 枚舉類型/206
14.5.1 枚舉類型的定義/206
14.5.2 聲明枚舉變量/207
14.5.3 枚舉常量是什麼/207
14.6 給類型取個別名—typedef/208
14.6.1 typedef基本用法/208
14.6.2 #define用法/208
14.7 小結/208

第15章 如何節省內存—位運算/209
15.1 什麼是位運算/209
15.1.1 開燈關燈/209
15.1.2 改變狀態/209
15.2 位邏輯運算符/210
15.2.1 位取反操作/210
15.2.2 位與運算/210
15.2.3 位或運算/210
15.2.4 位異或/210
15.2.5 實例分析/211
15.3 移位運算/212
15.3.1 基本形式/212
15.3.2 移位舉例/212
15.4 小結/213

第三篇 C語言進階
第16章 存儲不僅僅侷限於內存—文件/215
16.1 什麼是文件/215
16.1.1 文件/215
16.1.2 流/216
16.1.3 重定向/216
16.1.4 文件的處理形式—緩衝區和非緩衝區/216
16.1.5 文件的存儲形式—文本形式和二進制形式/217
16.2 C語言如何使用文件/217
16.2.1 文件型指針/217
16.2.2 文件操作的步驟/218
16.3 文件的打開與關閉/218
16.3.1 打開文件—fopen/218
16.3.2 打開是否成功/219
16.3.3 關閉文件—fclose/219
16.4 文件的讀寫/220
16.4.1 讀寫的相對參照/220
16.4.2 如何判斷文件已經結束/220
16.4.3 字符讀寫函數—fgetc和fputc/220
16.4.4 字符串讀寫函數—fgets和fputs/222
16.4.5 塊讀寫函數—fread和fwrite/224
16.4.6 格式化文件輸入輸出—fprintf與fscanf/227
16.5 文件的定位/229
16.5.1 移到開頭—rewind/229
16.5.2 得到當前位置—ftell/229
16.5.3 移動指針—fseek/229
16.6 小結/230

第17章 靈活卻難以理解—指針進階/232
17.1 指針與數組/232
17.1.1 數組名指針/232
17.1.2 使用數組名常指針表示數組元素/233
17.1.3 指向數組元素的指針變量/233
17.1.4 指向數組的指針變量/234
17.1.5 指針數組/235
17.2 指針、結構體和結構體數組/236
17.2.1 兩種訪問形式/236
17.2.2 聲明創建一個結構數組/236
17.2.3 結構數組的初始化/236
17.2.4 結構數組的使用/238
17.2.5 指向結構數組的指針/238
17.3 函數指針/239
17.3.1 函數名指針/239
17.3.2 指向函數的指針/240
17.3.3 函數指針類型/241
17.3.4 函數指針作函數參數/242
17.3.5 函數指針數組/243
17.3.6 指向函數指針的指針/244
17.4 小結/245

第18章 更深入的理解—函數進階/247
18.1 參數傳遞的副本機制/247
18.1.1 傳值調用的副本機制/247
18.1.2 傳址調用的副本機制/248
18.2 函數返回值的副本機制/250
18.2.1 return局部變量為什麼合法/251
18.2.2 返回指針申請動態內存/251
18.2.3 不要返回指向棧內存的指針/252
18.2.4 返回指向只讀存儲區的指針/253
18.3 函數與結構體/253
18.3.1 結構體變量的傳值和傳址調用/253
18.3.2 結構體變量的成員作為函數參數/254
18.3.3 返回結構體的函數/255
18.3.4 返回結構體指針的函數/256
18.4 函數與數組/256
18.4.1 數組元素作為函數參數/257
18.4.2 數組名作為函數參數/257
18.4.3 多維數組名作為函數參數/259
18.4.4 數組名作為函數參數時的退化/260
18.5 遞歸/261
18.5.1 遞歸流程/261
18.5.2 遞歸兩要素/262
18.5.3 效率與可讀性/262
18.6 帶參數的主函數/262
18.7 小結/263

第19章 生存期、作用域與可見域/264
19.1 內存分配/264
19.1.1 內存分區/264
19.1.2 變量的存儲類別/265
19.1.3 生存期/265
19.1.4 作用域與可見域/265
19.2 auto變量/266
19.2.1 定義格式/266
19.2.2 作用域和生存期/266
19.2.3 屏蔽/267
19.2.4 重複定義/268
19.2.5 初始化/269
19.3 register變量/269
19.3.1 定義格式/269
19.3.2 使用舉例/269
19.4 extern變量/270
19.4.1 全局變量定義/270
19.4.2 全局變量聲明/271
19.4.3 可見域/272
19.4.4 屏蔽/273
19.4.5 利與弊/275
19.5 static變量/275
19.5.1 定義格式/275
19.5.2 靜態局部變量/276
19.5.3 靜態全局變量/277
19.5.4 extern變量和static變量的初始化/278
19.6 函數的作用域與可見域/278
19.6.1 內部函數/278
19.6.2 外部函數/279
19.7 結構體定義的作用域與可見域/280
19.7.1 定義位置與可見域/280
19.7.2 允許重複定義/280
19.8 小結/281

第20章 編譯及預處理/282
20.1 編譯流程/282
20.1.1 編輯/282
20.1.2 預處理/282
20.1.3 編譯/283
20.1.4 連接/283
20.2 程序錯誤/283
20.2.1 錯誤分類/284
20.2.2 編譯錯誤/284
20.2.3 連接錯誤/284
20.2.4 邏輯錯誤/284
20.2.5 排錯/285
20.3 預處理命令之宏定義/285
20.3.1 宏定義/285
20.3.2 不帶參數的宏定義/285
20.3.3 帶參數的宏定義/287
20.3.4 #define定義常量與const常量/289
20.3.5 文件包含/290
20.3.6 條件編譯/291
20.4 小結/292

第21章 數據結構/293
21.1 鏈表/293
21.1.1 鏈表的結構/293
21.1.2 創建鏈表並遍歷輸出/294
21.1.3 鏈表的插入/296
21.1.4 鏈表結點的刪除/299
21.1.5 鏈表的逆置/301
21.1.6 鏈表的銷毀/302
21.1.7 綜合實例/303
21.1.8 循環鏈表/308
21.1.9 雙鏈表/308
21.2 棧和隊列/312
21.2.1 棧的定義/312
21.2.2 棧的分類/312
21.2.3 棧的操作/312
21.2.4 函數與棧/315
21.2.5 隊列/315
21.3 小結/318

第四篇 C語言程序設計實例
第22章 C語言程序課程設計:遊戲/319
22.1 黑白棋/319
22.1.1 程序功能要求/319
22.1.2 輸入輸出樣例/319
22.1.3 程序分析/319
22.1.4 程序初始化/320
22.1.5 初始化圖形設備/321
22.1.6 繪製棋盤/321
22.1.7 交替繪製黑白棋/322
22.1.8 遊戲(同時判斷是否有一方勝利)/322
22.1.9 小結/336
22.2 五子棋/337
22.2.1 程序功能要求/337
22.2.2 輸入輸出樣例/337
22.2.3 程序分析/337
22.2.4 主函數程序設計/339
22.2.5 系統初始化/340
22.2.6 移動棋子模塊/340
22.2.7 程序勝負判定/344
22.2.8 小結/348
22.3 掃雷遊戲/348
22.3.1 程序功能要求/348
22.3.2 輸入輸出樣例/348
22.3.3 程序分析/348
22.3.4 程序設計/351
22.3.5 初始化圖形設備/353
22.3.6 事件處理模塊/355
22.3.7 遊戲處理部分/360
22.3.8 小結/363
22.4 速算24/363
22.4.1 程序功能要求/363
22.4.2 輸入輸出樣例/363
22.4.3 程序分析/364
22.4.4 程序設計/365
22.4.5 撲克牌處理部分/367
22.4.6 程序運算部分/369
22.4.7 小結/371
22.5 病毒檢測與清除/371
22.5.1 程序功能要求/371
22.5.2 程序分析/372
22.5.3 程序設計/372
22.5.4 小結/376
附錄 ASCII編碼表/377


我們接受以下的付款方式︰VISA、Mastercard、JCB 信用卡、PayPal、銀行轉帳。