商品簡介
作者簡介
目次
相關商品
商品簡介
越來越多的高校在錄取研究生時開始採用上機考試的形式來考查學生的動手編程能力,很多知名互聯網公司在校招時也採用在線筆試的形式,然而,在以應試為主的大學教學模式下,動手能力往往是學生的薄弱環節。為此,本書以C語言為工具,由淺入深、由易到難地講解了C語言,深入解析了程序執行的原理及數據結構和算法,為讀者後續學習Linux系統編程和C++語言編程打下堅實的基礎;同時,書中精選了各大知名互聯網公司的校招面試題和社招面試題,以及部分知名高校考研的機試真題,可為讀者提供可靠、實際的練習指導。全書強調程序的編寫與調試,內容精練,可操作性強。每章均提供教學視頻、實例代碼和課後習題代碼,讀者可按書中的建議下載並練習。本書不僅可以作為讀者提升C語言編程能力的圖書,而且可以作為研究生初試的複習用書,還可作為C語言初學者的參考用書。
作者簡介
李志龍,中南大學自動化專業學士,畢業後曾供職于金蝶、華為、OPPO等企業。2015年加入王道訓練營,從事C/Linux/C++/Java EE/Python程序設計的教學工作。由於教學出色,加之培訓視頻圓了許多學子成功就業或讀研的夢想,逐步被大家稱為“龍哥”。
目次
目 錄
第1章 開發環境搭建及調試窗口設置 1
1.1 開發環境搭建 1
1.1.1 C語言的那些事 1
1.1.2 開發環境安裝 3
1.2 新建項目 7
1.3 新建代碼及編譯運行 9
1.4 程序的編譯過程 13
1.5 斷點及調試窗口設置 14
1.6 學習C語言後的境界 16
練習題 17
第2章 數據類型、運算符與表達式 18
2.1 數據類型 18
2.2 常量 19
2.3 變量 19
2.4 整型數據 19
2.4.1 符號常量 19
2.4.2 整型常量的不同進制表示 22
2.4.3 補碼的作用 25
2.4.4 整型變量 27
2.5 浮點型數據 28
2.5.1 浮點型常量 28
2.5.2 浮點型變量 28
2.6 字符型數據 30
2.6.1 字符型常量 30
2.6.2 字符數據在內存中的存儲形式及其使用方法 31
2.7 字符串型常量 32
2.8 混合運算 32
2.8.1 數值按int型運算 32
2.8.2 浮點型常量默認按double型運算 34
2.8.3 類型強制轉換場景 35
2.9 常用的數據輸入/輸出函數 36
2.9.1 scanf函數的原理 36
2.9.2 scanf函數的循環讀取 38
2.9.3 多種數據類型混合輸入 39
2.9.4 getchar函數介紹 40
2.9.5 putchar函數介紹 41
2.9.6 printf函數介紹 42
2.10 運算符與表達式 43
2.10.1 運算符分類 43
2.10.2 算術運算符及算術表達式 44
2.10.3 關係運算符與關系表達式 45
2.10.4 邏輯運算符與邏輯表達式 47
2.10.5 位運算符 48
2.10.6 賦值運算符 49
2.10.7 條件運算符與逗號運算符 51
2.10.8 自增、自減運算符及求字節運算符 51
練習題 52
答案解析 52
第3章 選擇與循環 60
3.1 選擇結構程序設計 60
3.1.1 關系表達式與邏輯表達式 60
3.1.2 if語句 60
3.1.3 switch語句 62
3.2循環結構程序設計 64
3.2.1 goto語句 64
3.2.2 while循環 65
3.2.3 do while循環 66
3.2.4 for循環 67
3.2.5 continue語句 68
3.2.6 break語句 69
練習題 69
答案解析 70
第4章 數組 83
4.1 一維數組 83
4.1.1 數組的定義 83
4.1.2 一維數組在內存中的存儲 84
4.1.3 棧空間和數組 87
4.2 二維數組 88
4.2.1 二維數組的定義與引用 88
4.2.2 二維數組的初始化及傳遞 89
4.3 字符數組 91
4.3.1 字符數組的定義及初始化 91
4.3.2 gets函數與puts函數 93
4.3.3 str系列字符串操作函數 93
4.3.4 strn系列字符串操作函數 95
4.3.5 mem系列操作函數 96
練習題 97
答案解析 98
第5章 指針 106
5.1 指針的本質 106
5.1.1 指針的定義 106
5.1.2 取地址操作符與取值操作符 107
5.2 指針的使用場景 108
5.2.1 指針的傳遞 108
5.2.2 指針的偏移 110
5.2.3 指針與自增、自減運算符 112
5.2.4 指針與一維數組 113
5.2.5 指針與動態內存申請 113
5.2.6 字符指針與字符數組的初始化 117
5.2.7 深入理解const 118
5.2.8 memcpy函數與memmove函數的差異 119
5.3 數組指針與二維數組 120
5.3.1 數組指針的應用 120
5.3.2 二維數組的偏移計算 122
5.4 二級指針 122
5.4.1 二級指針的傳遞 122
5.4.2 二級指針的偏移 123
5.5 函數指針 125
練習題 126
答案解析 126
第6章 函數 133
6.1 函數的聲明、定義與調用 133
6.1.1 函數的聲明與定義 133
6.1.2 函數的分類與調用 135
6.2 嵌套調用 137
6.3 遞歸調用 138
6.4 變量及函數的作用域 140
6.4.1局部變量與全局變量 140
6.4.2 動態存儲方式與靜態存儲方式 142
6.5 函數調用原理詳解 144
6.5.1 關於棧 144
6.5.2 代碼實例分析 145
練習題 146
答案解析 147
第7章 結構體 149
7.1 結構體與結構體指針 149
7.1.1 結構體的定義、引用、初始化 149
7.1.2 結構體指針 151
7.1.3 typedef的使用 152
7.2 鏈表的增刪查改 152
7.2.1 鏈表 152
7.2.2 增刪查改鏈表 153
7.3 共用體與枚舉 158
7.3.1 共用體 158
7.3.2 枚舉 159
練習題 159
答案解析 160
第8章 常用數據結構與算法 182
8.1 數據結構 182
8.1.1 棧 182
8.1.2 隊列 184
8.1.3 二叉樹 187
8.1.4 紅黑樹 192
8.1.5 數據結構學習技巧 209
8.2 算法 209
8.2.1 時間複雜度與空間複雜度 209
8.2.2 排序算法 210
8.2.3 二分查找算法 235
8.2.4 哈希查找算法 236
8.2.5 其他算法 239
練習題 239
答案解析 239
第9章 文件操作 243
9.1 C文件概述 243
9.2 文件的打開、讀寫、關閉 244
9.2.1 文件指針介紹 244
9.2.2 文件的打開與關閉 244
9.2.3 fread函數與fwrite函數 247
9.2.4 fgets函數與fputs函數 249
9.2.5 ftell函數 251
9.2.6 fprintf函數與fscanf函數 252
練習題 253
答案解析 253
第10章 C語言預處理和C語言庫 260
10.1 預處理簡介 260
10.2 預處理的工作原理 260
10.3 預處理指令 262
10.4 宏定義 263
10.4.1 簡單的宏 263
10.4.2 帶參數的宏 265
10.4.3 操作符# 267
10.4.4 操作符## 267
10.4.5 宏的通用屬性 268
10.4.6 較長的宏中的逗號操作符 269
10.4.7 宏定義中的do while循環 270
10.4.8 預定義宏 270
10.4.9 空宏參數 271
10.4.10 const與#define的差異 272
10.5 條件編譯 273
10.5.1 #if指令和#endif指令 273
10.5.2 defined操作符 273
10.5.3 #ifdef指令和#ifndef指令 274
10.5.4 #elif指令和#else指令 275
10.5.5 條件編譯 276
10.6 其他指令 277
10.6.1 指令#line 277
10.6.2 指令#undef 278
10.6.3 變參宏...和__VA_ARGS__ 278
10.7 內聯函數(C99) 279
10.8 C庫中的可變參數stdarg.h 280
練習題 282
答案解析 283
第11章 學生信息管理系統 285
11.1 系統功能描述 285
11.2 系統模塊設計 286
11.3 系統用到的相關函數 288
第12章 編譯器詞法、語法分析項目 290
12.1 詞法分析項目 290
12.1.1 項目需求描述 290
12.2 詞法分析模塊設計 290
12.2.1 建立字典模塊 290
12.2.2 字符串存儲及其TOKEN值的快速識別設計 293
12.3 詞法及語法分析簡單樣例研究 296
12.3.1 算術表達式的合法性判斷 296
12.3.2 詞法分析 296
12.3.3 算術表達式的語法分析 299
12.4 升級版功能:編譯器語法分析 303
12.4.1 整體流程分析 304
12.4.2 函數體內流程分析 305
12.4.3 表達式解析流程分析 306
12.4.4 總結 307
附錄A ASCII碼表 308
附錄B C語言運算符優先級 311
參考文獻 313
第1章 開發環境搭建及調試窗口設置 1
1.1 開發環境搭建 1
1.1.1 C語言的那些事 1
1.1.2 開發環境安裝 3
1.2 新建項目 7
1.3 新建代碼及編譯運行 9
1.4 程序的編譯過程 13
1.5 斷點及調試窗口設置 14
1.6 學習C語言後的境界 16
練習題 17
第2章 數據類型、運算符與表達式 18
2.1 數據類型 18
2.2 常量 19
2.3 變量 19
2.4 整型數據 19
2.4.1 符號常量 19
2.4.2 整型常量的不同進制表示 22
2.4.3 補碼的作用 25
2.4.4 整型變量 27
2.5 浮點型數據 28
2.5.1 浮點型常量 28
2.5.2 浮點型變量 28
2.6 字符型數據 30
2.6.1 字符型常量 30
2.6.2 字符數據在內存中的存儲形式及其使用方法 31
2.7 字符串型常量 32
2.8 混合運算 32
2.8.1 數值按int型運算 32
2.8.2 浮點型常量默認按double型運算 34
2.8.3 類型強制轉換場景 35
2.9 常用的數據輸入/輸出函數 36
2.9.1 scanf函數的原理 36
2.9.2 scanf函數的循環讀取 38
2.9.3 多種數據類型混合輸入 39
2.9.4 getchar函數介紹 40
2.9.5 putchar函數介紹 41
2.9.6 printf函數介紹 42
2.10 運算符與表達式 43
2.10.1 運算符分類 43
2.10.2 算術運算符及算術表達式 44
2.10.3 關係運算符與關系表達式 45
2.10.4 邏輯運算符與邏輯表達式 47
2.10.5 位運算符 48
2.10.6 賦值運算符 49
2.10.7 條件運算符與逗號運算符 51
2.10.8 自增、自減運算符及求字節運算符 51
練習題 52
答案解析 52
第3章 選擇與循環 60
3.1 選擇結構程序設計 60
3.1.1 關系表達式與邏輯表達式 60
3.1.2 if語句 60
3.1.3 switch語句 62
3.2循環結構程序設計 64
3.2.1 goto語句 64
3.2.2 while循環 65
3.2.3 do while循環 66
3.2.4 for循環 67
3.2.5 continue語句 68
3.2.6 break語句 69
練習題 69
答案解析 70
第4章 數組 83
4.1 一維數組 83
4.1.1 數組的定義 83
4.1.2 一維數組在內存中的存儲 84
4.1.3 棧空間和數組 87
4.2 二維數組 88
4.2.1 二維數組的定義與引用 88
4.2.2 二維數組的初始化及傳遞 89
4.3 字符數組 91
4.3.1 字符數組的定義及初始化 91
4.3.2 gets函數與puts函數 93
4.3.3 str系列字符串操作函數 93
4.3.4 strn系列字符串操作函數 95
4.3.5 mem系列操作函數 96
練習題 97
答案解析 98
第5章 指針 106
5.1 指針的本質 106
5.1.1 指針的定義 106
5.1.2 取地址操作符與取值操作符 107
5.2 指針的使用場景 108
5.2.1 指針的傳遞 108
5.2.2 指針的偏移 110
5.2.3 指針與自增、自減運算符 112
5.2.4 指針與一維數組 113
5.2.5 指針與動態內存申請 113
5.2.6 字符指針與字符數組的初始化 117
5.2.7 深入理解const 118
5.2.8 memcpy函數與memmove函數的差異 119
5.3 數組指針與二維數組 120
5.3.1 數組指針的應用 120
5.3.2 二維數組的偏移計算 122
5.4 二級指針 122
5.4.1 二級指針的傳遞 122
5.4.2 二級指針的偏移 123
5.5 函數指針 125
練習題 126
答案解析 126
第6章 函數 133
6.1 函數的聲明、定義與調用 133
6.1.1 函數的聲明與定義 133
6.1.2 函數的分類與調用 135
6.2 嵌套調用 137
6.3 遞歸調用 138
6.4 變量及函數的作用域 140
6.4.1局部變量與全局變量 140
6.4.2 動態存儲方式與靜態存儲方式 142
6.5 函數調用原理詳解 144
6.5.1 關於棧 144
6.5.2 代碼實例分析 145
練習題 146
答案解析 147
第7章 結構體 149
7.1 結構體與結構體指針 149
7.1.1 結構體的定義、引用、初始化 149
7.1.2 結構體指針 151
7.1.3 typedef的使用 152
7.2 鏈表的增刪查改 152
7.2.1 鏈表 152
7.2.2 增刪查改鏈表 153
7.3 共用體與枚舉 158
7.3.1 共用體 158
7.3.2 枚舉 159
練習題 159
答案解析 160
第8章 常用數據結構與算法 182
8.1 數據結構 182
8.1.1 棧 182
8.1.2 隊列 184
8.1.3 二叉樹 187
8.1.4 紅黑樹 192
8.1.5 數據結構學習技巧 209
8.2 算法 209
8.2.1 時間複雜度與空間複雜度 209
8.2.2 排序算法 210
8.2.3 二分查找算法 235
8.2.4 哈希查找算法 236
8.2.5 其他算法 239
練習題 239
答案解析 239
第9章 文件操作 243
9.1 C文件概述 243
9.2 文件的打開、讀寫、關閉 244
9.2.1 文件指針介紹 244
9.2.2 文件的打開與關閉 244
9.2.3 fread函數與fwrite函數 247
9.2.4 fgets函數與fputs函數 249
9.2.5 ftell函數 251
9.2.6 fprintf函數與fscanf函數 252
練習題 253
答案解析 253
第10章 C語言預處理和C語言庫 260
10.1 預處理簡介 260
10.2 預處理的工作原理 260
10.3 預處理指令 262
10.4 宏定義 263
10.4.1 簡單的宏 263
10.4.2 帶參數的宏 265
10.4.3 操作符# 267
10.4.4 操作符## 267
10.4.5 宏的通用屬性 268
10.4.6 較長的宏中的逗號操作符 269
10.4.7 宏定義中的do while循環 270
10.4.8 預定義宏 270
10.4.9 空宏參數 271
10.4.10 const與#define的差異 272
10.5 條件編譯 273
10.5.1 #if指令和#endif指令 273
10.5.2 defined操作符 273
10.5.3 #ifdef指令和#ifndef指令 274
10.5.4 #elif指令和#else指令 275
10.5.5 條件編譯 276
10.6 其他指令 277
10.6.1 指令#line 277
10.6.2 指令#undef 278
10.6.3 變參宏...和__VA_ARGS__ 278
10.7 內聯函數(C99) 279
10.8 C庫中的可變參數stdarg.h 280
練習題 282
答案解析 283
第11章 學生信息管理系統 285
11.1 系統功能描述 285
11.2 系統模塊設計 286
11.3 系統用到的相關函數 288
第12章 編譯器詞法、語法分析項目 290
12.1 詞法分析項目 290
12.1.1 項目需求描述 290
12.2 詞法分析模塊設計 290
12.2.1 建立字典模塊 290
12.2.2 字符串存儲及其TOKEN值的快速識別設計 293
12.3 詞法及語法分析簡單樣例研究 296
12.3.1 算術表達式的合法性判斷 296
12.3.2 詞法分析 296
12.3.3 算術表達式的語法分析 299
12.4 升級版功能:編譯器語法分析 303
12.4.1 整體流程分析 304
12.4.2 函數體內流程分析 305
12.4.3 表達式解析流程分析 306
12.4.4 總結 307
附錄A ASCII碼表 308
附錄B C語言運算符優先級 311
參考文獻 313
主題書展
更多
主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。