C語言從入門到精通(第2版)[電子工業出版社出版書籍]

C語言從入門到精通(第2版)[電子工業出版社出版書籍]
C語言從入門到精通(第2版)[電子工業出版社出版書籍]
更多義項 ▼ 收起列表 ▲

《C語言從入門到精通(第2版)》是陳銳 等編寫,電子工業出版社出版的書籍。

圖書內容

本書從最基本的C語言概念入手,由淺入深,綜合典型的實例,引導初學者由淺入深地掌握C語言知識。全書共17章。其中,第1~6章是入門篇,包括C語言概述和Visual Studio 2008開發工具的介紹,數據類型,運算符與表達式,順序結構、選擇結構和循環結構程式設計等內容。第7~13章是提高篇,包括數組、函式、指針、預處理、結構體和聯合體、鍊表與檔案等內容。第14~17章是技術篇,包括常用算法、網路編程、綜合套用案例──圖書管理系統和C語言調試技術等內容。

本書內容全面,不僅涵蓋了C語言的基本語法與程式設計知識,還較為深入介紹了相關常用算法知識和實用案例、調試技術。本書在講解知識的同時,指出了編程時一些應注意的地方和易犯的錯誤,給出了不少關於C語言方面的調試經驗。全書案例豐富,講解非常細緻,語言通俗易懂,所有實例代碼均在Visual Studio 2008開發環境下運行通過。

目錄

第1章 C語言的前世今生 1

1.1 C語言的前世今生 1

1.1.1 計算機語言的發展階段 1

1.1.2 C語言的產生 3

1.2 為什麼要選擇C語言 4

1.2.1 選擇C語言的好處 4

1.2.2 C語言的特點 5

1.2.3 如何學好C語言 6

1.3 第一個C語言程式 7

1.4 小結 8

習題 9

第2章 C程式開發步驟及開發環境 10

2.1 C程式的開發步驟 10

2.2 Visual Studio 2008開發環境介紹 11

2.2.1 使用Visual Studio 2008

新建項目 11

2.2.2 在Visual Studio 2008的項目中

新建程式檔案 13

2.2.3 使用Visual Studio 2008開發

C語言程式 14

2.3 小結 16

習題 16

第3章 基本數據類型 17

3.1 另一個簡單的C語言程式 17

3.2 C語言中的數據類型 19

3.3 變數與常量 21

3.3.1 變數 21

3.3.2 常量 23

3.4 整型變數 24

3.4.1 整型變數的定義 24

3.4.2 整型變數占用的位元組數與

表示範圍 25

3.4.3 整型變數的存儲 26

3.4.4 整型變數的賦值 27

3.4.5 一個簡單的C程式——輸出

整型變數的值 27

3.5 實型變數 28

3.5.1 實型變數的定義與賦值 28

3.5.2 實型變數的表示範圍 28

3.5.3 一個簡單的C程式——輸出

實型變數的值 28

3.6 字元型變數 29

3.6.1 字元型變數的定義與賦值 29

3.6.2 字元型數據的存儲形式 29

3.6.3 字元數據與字元串數據的

區別 31

3.7 小結 31

習題 32

第4章 運算符與表達式 33

4.1 常見運算符初識 33

4.2 算術運算符與算術表達式 34

4.2.1 +、-、*、/、%——雙目

運算符 34

4.2.2 算術表達式 34

4.2.3 多種類型的數據混合運算——

自動類型轉換 35

4.2.4 強制類型轉換 37

4.2.5 ++與--、+與- ——單目

運算符 37

4.3 賦值運算符與賦值表達式 39

4.3.1 直接賦值運算符與直接賦值

表達式 39

4.3.2 賦值表達式中的類型轉換 40

4.3.3 複合算術賦值運算符與

表達式 45

4.4 關係運算符與關係表達式 46

4.4.1 關係運算符 46

4.4.2 關係表達式 46

4.5 邏輯運算符與邏輯表達式 48

4.5.1 邏輯運算符 48

4.5.2 邏輯表達式 48

4.6 逗號運算符與逗號表達式 50

4.6.1 逗號運算符 50

4.6.2 逗號表達式 50

4.6.3 逗號運算符套用舉例 51

4.7 小結 52

習題 52

第5章 結構化程式開發(一) 54

5.1 算法及描述方法 54

5.1.1 什麼是算法 54

5.1.2 偽碼 55

5.1.3 流程圖 56

5.2 控制結構 57

5.2.1 什麼是語句 57

5.2.2 語句的分類 57

5.2.3 順序結構程式設計 59

5.2.4 選擇結構程式設計——

if選擇結構 64

5.2.5 選擇結構程式設計——

switch選擇結構 72

5.2.6 條件運算符與條件表達式 77

5.2.7 選擇結構程式設計套用舉例 79

5.3 小結 82

習題 83

第6章 結構化程式設計(二) 86

6.1 為什麼要有循環結構 86

6.1.1 如何重複輸出100以內的

整數 86

6.1.2 如何求連續的n個自然數

的和 87

6.2 goto語句 88

6.2.1 goto語句——無條件轉移

語句 88

6.2.2 goto語句構成的循環語句——

向前跳轉 88

6.3 while循環語句 90

6.4 do-while循環語句 92

6.5 for循環語句 94

6.6 break語句和continue語句 98

6.6.1 為什麼要有break語句 98

6.6.2 break語句 98

6.6.3 為什麼要有continue語句 100

6.6.4 continue語句 100

6.7 循環結構的嵌套 102

6.8 循環結構程式設計套用舉例 106

6.9 小結 110

習題 110

第7章 數組 114

7.1 為什麼引入數組 114

7.1.1 多變數的解決之路——

引入數組 114

7.1.2 認識數組 115

7.2 一維數組 116

7.2.1 聲明一維數組 116

7.2.2 引用一維數組 117

7.2.3 初始化一維數組的幾種

方式 118

7.2.4 一維數組套用舉例 118

7.3 二維數組 124

7.3.1 為什麼引入二維數組——

維度的出現 124

7.3.2 聲明二維數組 127

7.3.3 引用二維數組 127

7.3.4 初始化二維數組的幾種

方式 128

7.3.5 二維數組套用舉例 130

7.4 字元數組與字元串 134

7.4.1 聲明字元數組與初始化 134

7.4.2 引用字元數組 135

7.4.3 字元數組與字元串 135

7.4.4 字元數組的輸入與輸出 136

7.4.5 字元串的相關函式 137

7.4.6 字元串套用舉例 141

7.5 小結 145

習題 145

第8章 函式 150

8.1 函式初識與函式的分類 150

8.1.1 為什麼要有函式 150

8.1.2 函式的分類 151

8.2 函式的定義 152

8.2.1 無參函式的定義 152

8.2.2 有參函式的定義 152

8.2.3 有參函式傳統的定義方式 153

8.3 函式的參數與函式返回值 153

8.3.1 實際參數與形式參數 154

8.3.2 函式返回值 155

8.4 函式的調用 156

8.4.1 函式的一般調用 157

8.4.2 函式原型 159

8.4.3 函式的嵌套調用 161

8.5 函式的遞歸調用 163

8.5.1 遞歸調用的定義 164

8.5.2 遞歸調用套用舉例 164

8.6 數組作為函式的參數 167

8.6.1 數組元素作為函式參數 167

8.6.2 數組名作為函式參數 169

8.6.3 多維數組名作為函式參數 172

8.7 變數的作用域 173

8.7.1 局部變數 173

8.7.2 全局變數 175

8.8 變數的存儲類別 178

8.8.1 自動變數 178

8.8.2 靜態變數 178

8.8.3 暫存器變數 180

8.8.4 外部變數 180

8.9 內部函式與外部函式 183

8.9.1 內部函式 183

8.9.2 外部函式 183

8.10 小結 184

習題 185

第9章 指針 190

9.1 地址和指針 190

9.1.1 什麼是地址 190

9.1.2 什麼是指針——間接存取 191

9.2 指針與變數 192

9.2.1 定義指針變數 192

9.2.2 引用指針變數 193

9.2.3 指針變數作為函式參數 196

9.3 指針與數組 198

9.3.1 指向數組元素的指針與指向

數組的指針 198

9.3.2 指向多維數組的指針變數 201

9.3.3 數組名(指針)作為函式

參數 205

9.3.4 指針數組 212

9.3.5 二級指針 213

9.4 指針與字元串 214

9.4.1 字元串指針 214

9.4.2 字元串指針作為函式參數 215

9.4.3 字元指針數組 217

9.4.4 指針數組作為main的參數 218

9.5 指針與函式 220

9.5.1 函式指針——指向函式的

指針 220

9.5.2 函式指針作為函式參數 221

9.5.3 指針函式——返回指針值的

函式 224

9.5.4 void指針 225

9.6 指針與const 226

9.6.1 常量指針——指向常量的

指針 226

9.6.2 指針常量——指針不可以

改變 227

9.6.3 常量指針常量——指向常量的

指針常量 227

9.7 小結 228

習題 229

第10章 預處理命令 233

10.1 宏定義——#define 233

10.1.1 不帶參數的宏定義 233

10.1.2 帶參數的宏定義 235

10.1.3 條件編譯命令中的運算符——

#和## 237

10.2 檔案包含命令——#include 238

10.2.1 檔案包含命令的兩種方式 238

10.2.2 檔案包含命令套用舉例 239

10.3 條件編譯命令 240

10.3.1 條件編譯命令——#ifdef 240

10.3.2 條件編譯命令——#ifndef 242

10.3.3 條件編譯命令——#if 242

10.4 小結 243

習題 243

第11章 結構體與聯合體 246

11.1 結構體 246

11.1.1 為什麼要有結構體 246

11.1.2 定義結構體類型 247

11.1.3 定義結構體變數 248

11.1.4 引用結構體變數 249

11.1.5 初始化結構體變數 250

11.2 結構體數組 252

11.2.1 定義結構體數組 252

11.2.2 初始化結構體數組 253

11.2.3 結構體數組套用舉例 254

11.3 指針與結構體 256

11.3.1 指向結構體變數的指針 257

11.3.2 指向結構體數組的指針 258

11.3.3 結構體變數作為函式的

參數 260

11.3.4 指向結構體變數的指針作為

函式的參數 261

11.4 用typedef定義類型 262

11.4.1 使用typedef定義類型 262

11.4.2 typedef套用舉例 264

11.5 聯合體 265

11.5.1 定義联合體類型及變數 265

11.5.2 引用聯合體 266

11.5.3 使用聯合體應注意的問題 266

11.5.4 聯合體的套用舉例 267

11.6 枚舉類型 269

11.6.1 定義枚舉類型及變數 269

11.6.2 使用枚舉類型的一些說明 270

11.6.3 枚舉類型套用舉例 270

11.7 小結 272

習題 273

第12章 鍊表 276

12.1 鍊表的相關概念 276

12.1.1 為什麼要有鍊表——節省

記憶體單元,不用事先定義

空間大小 276

12.1.2 什麼是鍊表 277

12.1.3 動態記憶體分配 278

12.2 鍊表的操作 279

12.2.1 創建鍊表 279

12.2.2 輸出鍊表 281

12.2.3 鍊表的查找操作 282

12.2.4 鍊表的插入操作 282

12.2.5 鍊表的刪除操作 284

12.3 鍊表套用舉例 286

12.3.1 直接插入排序——使用鍊表

實現 286

12.3.2 一元多項式的相加 292

12.4 小結 297

習題 298

第13章 檔案 301

13.1 檔案的相關概念 301

13.1.1 為什麼要有檔案 301

13.1.2 檔案的分類 302

13.1.3 檔案類型指針 302

13.2 打開檔案與關閉檔案 303

13.2.1 打開檔案 303

13.2.2 關閉檔案 304

13.3 檔案的讀取與寫入 304

13.3.1 fgetc函式與fputc函式 304

13.3.2 fread函式與fwrite函式 306

13.3.3 fscanf函式與fprintf函式——

格式化讀寫函式 309

13.3.4 fgets函式與fputs函式——

字元串讀寫函式 312

13.4 檔案的定位 312

13.4.1 rewind函式——重置檔案

指針 312

13.4.2 fseek函式——定位檔案

指針 313

13.4.3 ftell函式——得到檔案指針

位置 315

13.5 出錯檢測 315

13.5.1 ferror函式 315

13.5.2 clearerr函式 316

13.6 小結 316

習題 316

第14章 常用算法 319

14.1 算法基礎 319

14.1.1 什麼是算法 319

14.1.2 算法的特性 321

14.1.3 算法設計的目標 321

14.1.4 算法的時間複雜度和空間

複雜度 322

14.2 疊代與遞推 323

14.2.1 算法思想 323

14.2.2 求一個數的平方根 323

14.2.3 角谷猜想 324

14.2.4 母牛生小牛問題 325

14.2.5 分西瓜 326

14.3 窮舉法 327

14.3.1 算法思想 327

14.3.2 填數遊戲 327

14.3.3 背包問題 328

14.3.4 五猴分桃 330

14.4 遞歸 331

14.4.1 算法思想 332

14.4.2 數制轉換 332

14.4.3 求n個數中的最大者 333

14.5.4 字元串顛倒 334

14.5 分治 335

14.5.1 算法思想 335

14.5.2 求n個數的最大值和最

小值 336

14.5.3 賽程安排問題 338

14.6 貪心算法 340

14.6.1 算法思想 340

14.6.2 加油站問題 340

14.6.3 找零錢問題 342

14.6.4 0-1背包問題 343

14.7 小結 347

習題 347

第15章 網路編程基礎 349

15.1 網路相關概念 349

15.1.1 什麼是計算機網路 349

15.1.2 網路協定 350

15.1.3 連線埠 350

15.1.4 TCP/IP參考模型 351

15.1.5 套接字 352

15.2 基於TCP的簡單網路程式 352

15.2.1 基於TCP的socket編程 352

15.2.2 伺服器端的程式實現 354

15.2.3 客戶端程式的實現 359

15.3 基於UDP的簡單網路聊天程式 361

15.3.1 基於UDP的socket編程 362

15.3.2 伺服器端程式的實現 363

15.3.3 客戶端程式的實現 364

15.4 小結 367

第16章 綜合案例:圖書管理系統 368

16.1 系統分析與設計 368

16.2 數據描述與存儲 369

16.3 詳細設計與代碼實現 370

16.3.1 主函式模組 370

16.3.2 增加圖書信息模組 373

16.3.3 修改圖書信息模組 377

16.3.4 刪除圖書信息模組 381

16.3.5 借閱圖書和歸還圖書模組 382

16.3.6 檔案讀寫模組 385

16.4 程式調試與系統測試 386

16.5 小結 388

第17章 常見錯誤與程式調試 390

17.1 為什麼要調試程式 390

17.2 常見錯誤 391

17.2.1 錯誤分類 391

17.2.2 常見錯誤舉例 392

17.3 程式調試 395

17.3.1 如何利用Visual Studio 2008

開發環境調試程式 395

17.3.2 程式調試套用舉例 401

17.4 小結 410

參考文獻 412

相關詞條

熱門詞條

聯絡我們