零基礎學C語言全彩版

零基礎學C語言全彩版

《零基礎學C語言》是針對零基礎編程學習者研發的C語言入門教程。從初學者角度出發,通過通俗易懂的語言、流行有趣的實例,詳細地介紹了使用C語言進行程式開發需要掌握的知識和技術。全書共分18章,包括C語言概述、開發環境的搭建、算法、C語言基礎、運算符與表達式、常用的數據輸入/輸出函式、選擇結構程式設計、循環控制、數組、結構體與鍊表、共用體與枚舉類型、位運算、預處理、檔案、存儲管理,以及學生成績管理系統等。書中所有知識都結合具體實例進行講解,設計的程式代碼給出了詳細的注釋,可以使讀者輕鬆領會C語言程式開發的精髓,快速提高開發技能。

內容簡介

本書通過大量實例及一個完整項目案例,幫助讀者更好地鞏固所學知識,提升能力;隨書附贈的《小白實戰手冊》中給出了3個流行且實用的案例的詳細開發流程,力求讓學習者能學以致用,真正獲得開發經驗;附贈的光碟中給出視頻講解、實例及項目源碼、代碼查錯器、練一練和動手糾錯答案等,方便讀者學習;書中設定了130多個二維碼,掃描二維碼觀看視頻講解,解決學習疑難;不易理解的專業術語、代碼難點只需手機掃描文字下方的e學碼獲得更多擴展解釋,隨時掃除學習障礙。此外,登錄明日學院網站還可以獲得更多學習資源和技術支持。

圖書與《小白實戰手冊》+光碟+二維碼+e學碼+明日學院,實現立體化、全方位的教學模式,拉低編程門檻,讓零基礎者輕鬆跨入編程領域。

目錄

第1篇基礎知識

第1章C語言概述.2

1.1 C語言的發展史.3

1.1.1 程式語言簡述3

1.1.2 C語言的發展與套用.4

1.2 C語言的特點.5

1.3 Visual C++ 6.0開發環境6

1.3.1 Visual C++6.0的下載與安裝.6

1.3.2 Visual C++6.0創建C檔案.10

1.4 一個簡單的C程式14

1.5 一個完整的C程式18

1.6 C語言程式的格式21

1.7 小結.22

第2章算法.23

2.1 算法的基本概念.24

2.1.1 算法的特性.24

2.1.2 算法的優劣.25

2.2 算法的描述.26

2.2.1 自然語言.26

2.2.2 流程圖.27

2.2.3 N-S流程圖31

2.3 難點解答.34

2.3.1 當型循環和直到型循環有什麼不同?.34

2.3.2 如何設計一個好的算法?.34

2.4 小結.34

第3章C語言基礎35

3.1 關鍵字.36

3.2 標識符.36

3.3 數據類型.38

3.4 常量.39

3.4.1 整型常量.39

3.4.2 實型常量.42

3.4.3 字元型常量.42

3.4.4 轉義字元.47

3.4.5 符號常量.47

3.5 變數.48

3.5.1 整型變數.49

3.5.2 實型變數.50

3.5.3 字元型變數.52

3.6 變數的存儲類別.55

3.6.1 auto變數.55

3.6.2 static變數.56

3.6.3 register變數.57

3.6.4 extern變數.57

3.7 混合運算.58

3.8 難點解答.59

3.8.1 變數的賦值和初始化.59

3.8.2 如何合理定義變數的類型?.59

3.9 小結.60

3.10 動手糾錯60

第4章運算符與表達式.61

4.1 表達式.62

4.2 賦值運算符與賦值表達式.62

4.2.1 變數賦初值.63

4.2.2 自動類型轉換.65

4.2.3 強制類型轉換.66

4.3 算術運算符與算術表達式.67

4.3.1 算術運算符.67

4.3.2 算術表達式.68

4.3.3 優先權與結合性.69

4.3.4 自增/自減運算符70

4.4 關係運算符與關係表達式.73

4.4.1 關係運算符.73

4.4.2 關係表達式.74

4.4.3 優先權與結合性.74

4.5 邏輯運算符與邏輯表達式.76

4.5.1 邏輯運算符.76

4.5.2 邏輯表達式.76

4.5.3 優先權與結合性.77

4.6 位邏輯運算符與位邏輯表達式.78

4.6.1 位邏輯運算符.78

4.6.2 位邏輯表達式.79

4.7 逗號運算符與逗號表達式.79

4.8 複合賦值運算符.81

4.9 難點解答.82

4.9.1 自增前綴與自增後綴的區別(例如:++i,i++)82

4.9.2 逗號表達式的要領.82

4.10 小結83

4.11 動手糾錯.84

第5章常用的數據輸入/輸出函式.85

5.1 語句.86

5.2 字元數據輸入/輸出86

5.2.1 字元數據輸出.86

5.2.2 字元數據輸入.88

5.3 字元串輸入/輸出89

5.3.1 字元串輸出函式.89

5.3.2 字元串輸入函式.91

5.4 格式輸出函式.92

5.5 格式輸入函式.96

5.6 難點解答.99

5.6.1 putchar()、puts()和printf()三個函式的區別.99

5.6.2 getchar()、gets()和scanf()三個函式的區別.99

5.7 小結100

5.8 動手糾錯100

第6章選擇結構程式設計.101

6.1 if語句.102

6.2 if語句的基本形式102

6.2.1 if語句形式102

6.2.2 if…else語句形式106

6.2.3 else if語句形式.111

6.3 if語句的嵌套114

6.4 條件運算符117

6.5 switch語 句.118

6.5.1 switch語句的基本形式118

6.5.2 多路開關模式的switch語句122

6.6 if…else語句和switch語句的區別124

6.7 難點解答.126

6.7.1 if…else和else if語句的區別.126

6.7.2 if和if…else語句的區別126

6.8 小結127

6.9 動手糾錯127

第7章循環控制.129

7.1 循環語句130

7.2 while語句.130

7.3 do…while語句.134

7.4 for語句.136

7.4.1 for語句使用.136

7.4.2 for循環的變體.140

7.4.3 for語句中的逗號套用.142

7.5 3種循環語句的比較.142

7.6 循環嵌套143

7.6.1 循環嵌套的結構143

7.6.2 循環嵌套實例144

7.7 轉移語句147

7.7.1 break語句.147

7.7.2 continue語句148

7.7.3 goto語句149

7.8 難點解答151

7.8.1 continue和break語句的區別.151

7.8.2 while和do…while語句的區別151

7.9 小結152

7.10 動手糾錯.152

第2篇核心技術

第8章數組154

8.1 一維數組155

8.1.1 一維數組的定義和引用155

8.1.2 一維數組初始化157

8.1.3 一維數組套用160

8.2 二維數組161

8.2.1 二維數組的定義和引用161

8.2.2 二維數組初始化.162

8.2.3 二維數組套用165

8.3 字元數組167

8.3.1 字元數組的定義和引用167

8.3.2 字元數組初始化168

8.3.3 字元數組的結束標誌170

8.3.4 字元數組的輸入和輸出171

8.3.5 字元數組套用172

8.4 多維數組174

8.5 數組的排序算法174

8.5.1 選擇法排序174

8.5.2 冒泡法排序177

8.5.3 交換法排序179

8.5.4 插入法排序182

8.5.5 折半法排序184

8.5.6 排序算法的比較187

8.6 字元串處理函式188

8.6.1 字元串複製188

8.6.2 字元串連線190

8.6.3 字元串比較191

8.6.4 字元串大小寫轉換193

8.6.5 獲得字元串長度194

8.7 數組套用196

8.7.1 反轉輸出字元串196

8.7.2 輸出系統日期和時間197

8.8 難點解答.199

8.8.1 數組下標越界199

8.8.2 為什麼使用數組199

8.9 小結200

8.10 動手糾錯.200

第9章函式201

9.1 函式概述202

9.2 函式的定義202

9.2.1 函式定義的形式202

9.2.2 定義與聲明204

9.3 返回語句205

9.3.1 無返回值函式.205

9.3.2 返回值206

9.4 函式參數208

9.4.1 形式參數與實際參數208

9.4.2 數組作函式參數210

9.4.3 main函式的參數215

9.5 函式的調用216

9.5.1 函式的調用方式216

9.5.2 嵌套調用219

9.5.3 遞歸調用222

9.6 內部函式和外部函式224

9.6.1 內部函式225

9.6.2 外部函式226

9.7 局部變數和全局變數227

9.7.1 局部變數.228

9.7.2 全局變數231

9.8 函式套用234

9.9 難點解答240

9.9.1 怎樣區分聲明和定義240

9.9.2 為什麼每個程式都有main函式?為什麼不用聲明就可以使用?240

9.10 小結.241

9.11 動手糾錯.241

第10章指針.243

10.1 指針相關概念.244

10.1.1 地址與指針.244

10.1.2 變數與指針.245

10.1.3 指針變數.245

10.1.4 指針自增自減運算.250

10.2 數組與指針.252

10.2.1 一維數組與指針.252

10.2.2 二維數組與指針.255

10.2.3 字元串與指針.259

10.2.4 字元串數組.261

10.3 指向指針的指針.263

10.4 指針變數作函式參數.265

10.5 返回指針值的函式.275

10.6 指針數組作main函式的參數.277

10.7 難點解答.279

10.7.1 為什麼使用指針,指針的優點.279

10.7.2 指針的初始化問題.279

10.8 小結.279

10.9 動手糾錯.279

第3篇高級套用

第11章結構體與鍊表.282

11.1 結構體.283

11.1.1 結構體類型的概念.283

11.1.2 結構體變數的定義.284

11.1.3 結構體變數的引用.285

11.1.4 結構體類型的初始化.287

11.2 結構體數組.288

11.2.1 定義結構體數組.289

11.2.2 初始化結構體數組.290

11.3 結構體指針.292

11.3.1 指向結構體變數的指針.292

11.3.2 指向結構體數組的指針.295

11.3.3 結構體作為函式參數.297

11.4 包含結構的結構.301

11.5 鍊表.302

11.5.1 鍊表概述.303

11.5.2 創建動態鍊表.304

11.5.3 輸出鍊表.306

11.6 鍊表相關操作.310

11.6.1 鍊表的插入操作.310

11.6.2 鍊表的刪除操作.312

11.7 難點解答.317

11.7.1 結構體怎樣賦值.317

11.7.2 鍊表與數組.317

11.8 小結.318

11.9 動手糾錯.318

第12章共用體與枚舉類型.319

12.1 共用體.320

12.1.1 共用體的概念.320

12.1.2 共用體變數的引用.321

12.1.3 共用體變數的初始化322

12.1.4 共用體類型的數據特點323

12.2 枚舉類型.324

12.3 難點解答.326

12.3.1 共用體和結構體的區別.326

12.3.2 枚舉類型什麼時候使用?.326

12.4 小結.326

12.5 動手糾錯326

第13章位運算.327

13.1 位與位元組.328

13.2 位運算操作符.328

13.2.1 “與”運算符.329

13.2.2 “或”運算符.330

13.2.3 “取反”運算符.332

13.2.4 “異或”運算符.333

13.2.5 “左移”運算符.335

13.2.6 “右移”運算符.336

13.3 循環移位.338

13.4 位段.341

13.4.1 位段的概念與定義.341

13.4.2 位段相關說明.342

13.5 難點解答343

13.5.1 &與&&有什麼不同?343

13.5.2 |與||的區別344

13.6 小結.344

13.7 動手糾錯.344

第14章預處理.345

14.1 宏定義.346

14.1.1 不帶參數的宏定義.346

14.1.2 帶參數的宏定義.348

14.2 #include指令349

14.3 條件編譯.351

14.3.1 #if命令351

14.3.2 #ifdef及#ifndef命令354

14.3.3 #undef命令.356

14.3.4 #line命令357

14.3.5 #pragma命令357

14.4 小結.358

14.5 動手糾錯.358

第15章檔案.359

15.1 檔案概述.360

15.2 檔案基本操作.360

15.2.1 檔案指針.361

15.2.2 檔案的打開.361

15.2.3 檔案的關閉.362

15.3 檔案的讀寫.363

15.3.1 fputc()函式363

15.3.2 fgetc()函式364

15.3.3 fputs()函式365

15.3.4 fgets()函式366

15.3.5 fprintf()函式367

15.3.6 fscanf()函式.368

15.3.7 fread()和fwrite()函式370

15.4 檔案的定位.372

15.4.1 fseek()函式373

15.4.2 rewind()函式.374

15.4.3 ftell()函式376

15.5 難點解答.379

15.5.1 怎樣運行本章程式.379

15.5.2 為什麼程式後都有fclose()函式.379

15.6 小結.379

15.7 動手糾錯.380

第16章存儲管理381

16.1 記憶體組織方式.382

16.1.1 記憶體的組織方式.382

16.1.2 堆與棧.382

16.2 動態管理.385

16.2.1 malloc()函式.385

16.2.2 calloc()函式.386

16.2.3 realloc()函式388

16.2.4 free()函式.389

16.3 記憶體丟失.390

16.4 難點解答.391

16.4.1 malloc()函式分配記憶體為什麼常寫(int*)?.391

16.4.2 malloc()、calloc()、realloc()函式的區別?391

16.5 小結.391

16.6 動手糾錯.391

第17章網路套接字編程393

17.1 計算機網路基礎.394

17.1.1 IP位址.394

17.1.2 OSI七層參考模型394

17.1.3 地址解析.395

17.1.4 域名系統.396

17.1.5 TCP/IP協定.397

17.1.6 連線埠.399

17.1.7 套接字的引入.399

17.1.8 網路位元組順序.400

17.2 套接字概述.400

17.2.1 套接字概述.400

17.2.2 TCP的套接字的socket編程401

17.2.3 UDP的套接字的socket編程402

17.3 套接字函式.403

17.3.1 套接字函式介紹.403

17.3.2 基於TCP的網路聊天程式409

17.4 難點解答.415

17.4.1 TCP與UDP的比較.415

17.4.2 如何實現網路通信.415

17.5 小結.416

17.6 動手糾錯.416

第4篇項目實戰

第18章學生成績管理系統418

18.1 需求分析.419

18.2 系統設計.419

18.3 功能設計.420

18.3.1 功能選擇界面.420

18.3.2 錄入學生成績信息.422

18.3.3 查詢學生成績信息.424

18.3.4 刪除學生成績信息.425

18.3.5 修改學生成績信息.427

18.3.6 插入學生成績信息.429

18.3.7 統計學生人數.431

18.4 小結.431

相關詞條

熱門詞條

聯絡我們