C語言程式設計——程式思維與代碼調試

C語言程式設計——程式思維與代碼調試

《C語言程式設計——程式思維與代碼調試》是2019年7月電子工業出版社出版的圖書,作者是周幸妮。

基本介紹

  • 書名:C語言程式設計——程式思維與代碼調試
  • 作者:周幸妮
  • 出版社:電子工業出版社
  • 出版時間:2019年7月
  • 頁數:464 頁
  • 定價:89 元
  • 開本:16 開
  • ISBN:9787121370984
內容簡介,目錄,

內容簡介

本書站在程式設計的角度,從程式和算法、數據、程式語句、指針、結構體、函式和檔案等基本的C語言要素講起,全面介紹C語言程式設計的方方面面,引導學習者以“程式的思維”看問題,即如何從一個問題入手,算法應該如何設計、程式如何實現的角度去看程式設計問題,讓初學者容易理解並掌握程式設計的基本思想與方法。通過對實際問題、解決方法或存在問題的討論,引入新概念,深入淺出,讓學習的過程變得有趣且容易。本書圖文、表格並茂,便於直觀理解。獲2022年陝西普通高等學校優秀教材獎。

目錄

第1章 程式概論 1
1.1 流程的概念 1
1.1.1 關於流程 1
1.1.2 流程的表達方式 3
1.1.3 流程的基本邏輯結構 4
1.2 程式的概念 8
1.2.1 自動化流程 9
1.2.2 程式的概念 9
1.2.3 程式的執行特點 12
1.2.4 計算機工作流程 12
1.3 程式的構成 13
1.3.1 計算機解題流程之數據 14
1.3.2 計算機解題流程之處理 15
1.3.3 計算機解題流程之結果 15
1.4 程式的開發過程 17
1.4.1 問題引例 17
1.4.2 程式開發基本步驟 18
1.4.3 計算機解題實例 19
1.4.4 程式開發流程 24
1.5 C語言程式簡介 25
1.5.1 C程式樣例 25
1.5.2 C程式框架結構 28
1.5.3 代碼格式要求 29
1.6 本章小結 30
習題 31
第2章 算法 32
2.1 算法的概念 32
2.2 算法的表示 35
2.3 算法的可行性 39
2.4 算法的通用性 42
2.5 算法的全面性 44
2.6 算法設計過程與算法特性 49
2.6 本章小結 52
習題 52
第3章 基本數據 54
3.1 常量與變數 54
3.1.1 常量 54
3.1.2 變數 56
3.2 數據類型 62
3.2.1 計算機中的信息表示 62
3.2.2 計算機中的信息處理問題
討論 63
3.2.3 C語言的基本數據類型 66
3.3 整數存儲規則 67
3.3.1 有符號整數 68
3.3.2 無符號整數 68
3.3.3 字元類型數據 69
3.4 實數存儲規則 70
3.5 運算符與表達式 74
3.6 數值處理 76
3.6.1 算術運算符和算術表達式 76
3.6.2 數據運算中的出界問題 80
3.7 邏輯判斷處理 81
3.7.1 關係運算 81
3.7.2 邏輯運算 82
3.8 數據類型轉換 86
3.8.1 強制類型轉換 88
3.8.2 自動類型轉換 89
3.9 其他運算 90
3.9.1 條件表達式 90
3.9.2 sizeof運算符 91
3.9.3 賦值運算符與表達式 92
3.9.4 複合賦值運算符 92
3.9.5 逗號運算符和逗號表達式 92
3.10 本章小結 93
習題 94
第4章 輸入/輸出 95
4.1 輸入/輸出的概念 95
4.1.1 標準輸入/輸出 95
4.1.2 C標準庫函式 96
4.1.3 頭檔案 96
4.2 數據的輸出 97
4.2.1 字元輸出函式 97
4.2.2 字元串輸出函式 98
4.2.3 格式輸出函式 99
4.3 數據的輸入 102
4.3.1 字元輸入函式 103
4.3.2 字元串輸入函式 104
4.3.3 格式輸入函式 105
4.4 數據輸入的常見問題 109
4.5 本章小結 112
習題 113
第5章 程式語句 115
5.1 順序結構 115
5.2 雙分支選擇結構 117
5.2.1 雙分支選擇結構的語法規則 117
5.2.2 複合語句的作用 118
5.2.3 if語句實例 119
5.2.4 嵌套的if-else語句 121
5.3 多分支選擇結構 124
5.3.1 多分支問題的引入 124
5.3.2 多分支結構語法規則 125
5.3.3 多分支結構實例 128
5.3.4 各種分支結構語句的比較 134
5.4 循環問題的引入 134
5.4.1 循環中的要素分析 134
5.4.2 循環三要素 136
5.4.3 循環語句 137
5.5 當型循環結構 137
5.5.1 當型循環語法規則 137
5.5.2 循環要素必要性驗證 138
5.5.3 當型循環實例 142
5.5.4 循環控制方式 146
5.6 直到型循環結構 146
5.6.1 直到型循環語法規則 146
5.6.2 do-while的適用場合 150
5.6.3 do-while語句實例 150
5.7 當型循環的另一種形式 151
5.7.1 for語句語法規則 151
5.7.2 for語句實例 152
5.8 無限循環 154
5.8.1 實際問題中的無限制循環 154
5.8.2 無限循環的while語句表達 154
5.8.3 無限循環的for語句表達 155
5.9 中斷循環 157
5.9.1 實際問題中的循環中斷 157
5.9.2 跳出循環的break語句 158
5.9.3 在循環內跳轉的continue
語句 161
5.10 自由跳轉機制 164
5.10.1 自由跳轉的概念 164
5.10.2 無條件轉移語句規則 164
5.10.3 無條件轉移語句實例 164
5.10.4 goto語句的特點 166
5.11 本章小結 167
習題 168
第6章 數組 172
6.1 數組的概念 172
6.1.1 一組同類型數據的處理
問題 172
6.1.2 一組同類型數據所需要的
表達方式 175
6.2 數組的存儲 176
6.2.1 數組的定義 176
6.2.2 數組的初始化 178
6.2.3 數組的空間分配 179
6.2.4 數組的空間查看 180
6.3 一維數組的操作 183
6.4 二維數組的操作 196
6.5 字元數組的操作 205
6.6 本章小結 214
習題 215
第7章 指針 217
7.1 指針的概念 217
7.1.1 名稱引用和地址引用 217
7.1.2 存儲空間的管理 219
7.1.3 指針的概念 223
7.2 指針的運算 224
7.2.1 指針運算符 224
7.2.2 指針運算種類 224
7.2.3 指針運算基本規則 224
7.2.4 指針偏移的意義 227
7.2.5 空指針的概念 230
7.3 指針與數組 230
7.3.1 指針與一維數組 230
7.3.2 指針與二維數組 234
7.4 指針與多組字元串問題 238
7.4.1 一維指針數組與指向指針的
指針 240
7.5 本章小結 241
習題 242
第8章 複合類型數據 244
8.1 結構體的概念 244
8.1.1 問題引入 244
8.1.2 綜合數據表的存儲方案 245
8.2 結構體的存儲 246
8.2.1 結構體類型定義 246
8.2.2 結構體變數定義 248
8.2.3 結構體初始化 248
8.2.4 結構體變數空間分配 249
8.2.5 結構體成員引用 253
8.3 結構體套用實例 254
8.4 共用體 264
8.4.1 問題引入 264
8.4.2 共用體的空間存儲描述 264
8.5 枚舉 269
8.5.1 問題引入 269
8.5.2 枚舉的概念及定義形式 270
8.5.3 枚舉實例 271
8.5.4 枚舉的使用規則 272
8.6 聲明新的類型名 273
8.6.1 問題引入 273
8.6.2 typedef聲明形式及使用 275
8.7 本章小結 275
習題 276
第9章 函式 278
9.1 函式的概念 278
9.1.1 問題的提出 278
9.1.2 模組的概念 279
9.2 函式形式設計 281
9.2.1 模組間信息交流方法 281
9.2.2 函式形式設計 282
9.3 函式間信息交流機制設計 285
9.3.1 函式間信息交流特點分析 285
9.3.2 函式間信息交流之處理數據
的提交與接收 287
9.3.3 函式結果的獲取方式 288
9.4 函式總體設計 289
9.4.1 函式設計要素 289
9.4.2 函式間信息傳遞歸結 289
9.4.3 函式的調用 290
9.5 函式設計實例 292
9.5.1 傳值調用 292
9.5.2 傳址調用 298
9.5.3 函式綜合實例 306
9.5.4 main函式的參數 316
9.6 作用域 319
9.6.1 問題引入 319
9.6.2 模組的禁止機制 321
9.6.3 記憶體分區與存儲分類 322
9.6.4 禁止機制1——變數的有效期
和作用範圍 323
9.6.5 禁止機制2——函式的有效
範圍 330
9.6.6 禁止機制3——共享數據的
使用限制 332
9.7 遞歸 333
9.7.1 引例 333
9.7.2 遞歸概念 336
9.7.3 遞歸實例 337
9.8 本章小結 339
習題 340
第10章 編譯預處理——編譯前的
工作 343
10.1 問題的引入 343
10.2 宏定義 344
10.2.1 簡單的宏定義 344
10.2.2 帶參數的宏定義 346
10.2.3 宏定義的副作用 348
10.3 檔案包含 348
10.4 條件編譯 350
10.5 本章小結 353
習題 354
第11章 檔案——外存數據的操縱 356
11.1 問題的引入 356
11.2 檔案的概念 357
11.3 檔案的操作流程 358
11.4 記憶體和外存的數據交流 359
11.5 程式對檔案的操作 361
11.5.1 打開檔案 361
11.5.2 檔案的讀寫 362
11.5.3 關閉檔案 366
11.5.4 隨機讀取檔案內容 367
11.6 關於檔案讀寫函式的討論 368
11.7 程式調試與輸入輸出重定向 372
11.8 本章小結 374
習題 375
第12章 程式的運行 377
12.1 程式運行環境 377
12.1.1 集成環境主界面 379
12.1.2 建立項目 380
12.1.3 新建源檔案 382
12.1.4 編輯源檔案 382
12.1.5 編譯源檔案 384
12.1.6 連結程式 385
12.1.7 運行程式 386
12.2 程式測試 387
12.2.1 引子 387
12.2.2 程式測試方法與實例 388
12.3 程式調試概念 392
12.3.1 bug與debug 392
12.3.2 bug無處不在 393
12.3.3 軟體調試的困難 393
12.4 軟體調試的方法論 394
12.4.1 引例 394
12.4.2 軟體調試的基本過程 395
12.4.3 程式錯誤的查找方法討論 395
12.4.4 跟蹤方法方案探索 397
12.5 程式調試工具 399
12.5.1 IDE中調試器的功能 399
12.5.2 調試命令 401
12.6 調試實例 405
12.6.1 基本調試步驟示例 405
12.6.2 調試查找程式錯誤示例 407
12.6.3 調用棧的使用示例 416
12.6.4 數據斷點使用示例 418
12.7 本章小結 420
習題 421
附錄A 運算符的優先權和結合性 425
附錄B ASCII碼錶 426
附錄C C語言常用庫函式 427
附錄D 常用轉義字元表 432
附錄E 位運算簡介 433
附錄F 在工程中加入多個檔案 435
附錄G 編程範式 441
附錄H 空類型void問題 449
參考文獻 450,第1章 程式概論 1
1.1 流程的概念 1
1.1.1 關於流程 1
1.1.2 流程的表達方式 3
1.1.3 流程的基本邏輯結構 4
1.2 程式的概念 8
1.2.1 自動化流程 9
1.2.2 程式的概念 9
1.2.3 程式的執行特點 12
1.2.4 計算機工作流程 12
1.3 程式的構成 13
1.3.1 計算機解題流程之數據 14
1.3.2 計算機解題流程之處理 15
1.3.3 計算機解題流程之結果 15
1.4 程式的開發過程 17
1.4.1 問題引例 17
1.4.2 程式開發基本步驟 18
1.4.3 計算機解題實例 19
1.4.4 程式開發流程 24
1.5 C語言程式簡介 25
1.5.1 C程式樣例 25
1.5.2 C程式框架結構 28
1.5.3 代碼格式要求 29
1.6 本章小結 30
習題 31
第2章 算法 32
2.1 算法的概念 32
2.2 算法的表示 35
2.3 算法的可行性 39
2.4 算法的通用性 42
2.5 算法的全面性 44
2.6 算法設計過程與算法特性 49
2.6 本章小結 52
習題 52
第3章 基本數據 54
3.1 常量與變數 54
3.1.1 常量 54
3.1.2 變數 56
3.2 數據類型 62
3.2.1 計算機中的信息表示 62
3.2.2 計算機中的信息處理問題
討論 63
3.2.3 C語言的基本數據類型 66
3.3 整數存儲規則 67
3.3.1 有符號整數 68
3.3.2 無符號整數 68
3.3.3 字元類型數據 69
3.4 實數存儲規則 70
3.5 運算符與表達式 74
3.6 數值處理 76
3.6.1 算術運算符和算術表達式 76
3.6.2 數據運算中的出界問題 80
3.7 邏輯判斷處理 81
3.7.1 關係運算 81
3.7.2 邏輯運算 82
3.8 數據類型轉換 86
3.8.1 強制類型轉換 88
3.8.2 自動類型轉換 89
3.9 其他運算 90
3.9.1 條件表達式 90
3.9.2 sizeof運算符 91
3.9.3 賦值運算符與表達式 92
3.9.4 複合賦值運算符 92
3.9.5 逗號運算符和逗號表達式 92
3.10 本章小結 93
習題 94
第4章 輸入/輸出 95
4.1 輸入/輸出的概念 95
4.1.1 標準輸入/輸出 95
4.1.2 C標準庫函式 96
4.1.3 頭檔案 96
4.2 數據的輸出 97
4.2.1 字元輸出函式 97
4.2.2 字元串輸出函式 98
4.2.3 格式輸出函式 99
4.3 數據的輸入 102
4.3.1 字元輸入函式 103
4.3.2 字元串輸入函式 104
4.3.3 格式輸入函式 105
4.4 數據輸入的常見問題 109
4.5 本章小結 112
習題 113
第5章 程式語句 115
5.1 順序結構 115
5.2 雙分支選擇結構 117
5.2.1 雙分支選擇結構的語法規則 117
5.2.2 複合語句的作用 118
5.2.3 if語句實例 119
5.2.4 嵌套的if-else語句 121
5.3 多分支選擇結構 124
5.3.1 多分支問題的引入 124
5.3.2 多分支結構語法規則 125
5.3.3 多分支結構實例 128
5.3.4 各種分支結構語句的比較 134
5.4 循環問題的引入 134
5.4.1 循環中的要素分析 134
5.4.2 循環三要素 136
5.4.3 循環語句 137
5.5 當型循環結構 137
5.5.1 當型循環語法規則 137
5.5.2 循環要素必要性驗證 138
5.5.3 當型循環實例 142
5.5.4 循環控制方式 146
5.6 直到型循環結構 146
5.6.1 直到型循環語法規則 146
5.6.2 do-while的適用場合 150
5.6.3 do-while語句實例 150
5.7 當型循環的另一種形式 151
5.7.1 for語句語法規則 151
5.7.2 for語句實例 152
5.8 無限循環 154
5.8.1 實際問題中的無限制循環 154
5.8.2 無限循環的while語句表達 154
5.8.3 無限循環的for語句表達 155
5.9 中斷循環 157
5.9.1 實際問題中的循環中斷 157
5.9.2 跳出循環的break語句 158
5.9.3 在循環內跳轉的continue
語句 161
5.10 自由跳轉機制 164
5.10.1 自由跳轉的概念 164
5.10.2 無條件轉移語句規則 164
5.10.3 無條件轉移語句實例 164
5.10.4 goto語句的特點 166
5.11 本章小結 167
習題 168
第6章 數組 172
6.1 數組的概念 172
6.1.1 一組同類型數據的處理
問題 172
6.1.2 一組同類型數據所需要的
表達方式 175
6.2 數組的存儲 176
6.2.1 數組的定義 176
6.2.2 數組的初始化 178
6.2.3 數組的空間分配 179
6.2.4 數組的空間查看 180
6.3 一維數組的操作 183
6.4 二維數組的操作 196
6.5 字元數組的操作 205
6.6 本章小結 214
習題 215
第7章 指針 217
7.1 指針的概念 217
7.1.1 名稱引用和地址引用 217
7.1.2 存儲空間的管理 219
7.1.3 指針的概念 223
7.2 指針的運算 224
7.2.1 指針運算符 224
7.2.2 指針運算種類 224
7.2.3 指針運算基本規則 224
7.2.4 指針偏移的意義 227
7.2.5 空指針的概念 230
7.3 指針與數組 230
7.3.1 指針與一維數組 230
7.3.2 指針與二維數組 234
7.4 指針與多組字元串問題 238
7.4.1 一維指針數組與指向指針的
指針 240
7.5 本章小結 241
習題 242
第8章 複合類型數據 244
8.1 結構體的概念 244
8.1.1 問題引入 244
8.1.2 綜合數據表的存儲方案 245
8.2 結構體的存儲 246
8.2.1 結構體類型定義 246
8.2.2 結構體變數定義 248
8.2.3 結構體初始化 248
8.2.4 結構體變數空間分配 249
8.2.5 結構體成員引用 253
8.3 結構體套用實例 254
8.4 共用體 264
8.4.1 問題引入 264
8.4.2 共用體的空間存儲描述 264
8.5 枚舉 269
8.5.1 問題引入 269
8.5.2 枚舉的概念及定義形式 270
8.5.3 枚舉實例 271
8.5.4 枚舉的使用規則 272
8.6 聲明新的類型名 273
8.6.1 問題引入 273
8.6.2 typedef聲明形式及使用 275
8.7 本章小結 275
習題 276
第9章 函式 278
9.1 函式的概念 278
9.1.1 問題的提出 278
9.1.2 模組的概念 279
9.2 函式形式設計 281
9.2.1 模組間信息交流方法 281
9.2.2 函式形式設計 282
9.3 函式間信息交流機制設計 285
9.3.1 函式間信息交流特點分析 285
9.3.2 函式間信息交流之處理數據
的提交與接收 287
9.3.3 函式結果的獲取方式 288
9.4 函式總體設計 289
9.4.1 函式設計要素 289
9.4.2 函式間信息傳遞歸結 289
9.4.3 函式的調用 290
9.5 函式設計實例 292
9.5.1 傳值調用 292
9.5.2 傳址調用 298
9.5.3 函式綜合實例 306
9.5.4 main函式的參數 316
9.6 作用域 319
9.6.1 問題引入 319
9.6.2 模組的禁止機制 321
9.6.3 記憶體分區與存儲分類 322
9.6.4 禁止機制1——變數的有效期
和作用範圍 323
9.6.5 禁止機制2——函式的有效
範圍 330
9.6.6 禁止機制3——共享數據的
使用限制 332
9.7 遞歸 333
9.7.1 引例 333
9.7.2 遞歸概念 336
9.7.3 遞歸實例 337
9.8 本章小結 339
習題 340
第10章 編譯預處理——編譯前的
工作 343
10.1 問題的引入 343
10.2 宏定義 344
10.2.1 簡單的宏定義 344
10.2.2 帶參數的宏定義 346
10.2.3 宏定義的副作用 348
10.3 檔案包含 348
10.4 條件編譯 350
10.5 本章小結 353
習題 354
第11章 檔案——外存數據的操縱 356
11.1 問題的引入 356
11.2 檔案的概念 357
11.3 檔案的操作流程 358
11.4 記憶體和外存的數據交流 359
11.5 程式對檔案的操作 361
11.5.1 打開檔案 361
11.5.2 檔案的讀寫 362
11.5.3 關閉檔案 366
11.5.4 隨機讀取檔案內容 367
11.6 關於檔案讀寫函式的討論 368
11.7 程式調試與輸入輸出重定向 372
11.8 本章小結 374
習題 375
第12章 程式的運行 377
12.1 程式運行環境 377
12.1.1 集成環境主界面 379
12.1.2 建立項目 380
12.1.3 新建源檔案 382
12.1.4 編輯源檔案 382
12.1.5 編譯源檔案 384
12.1.6 連結程式 385
12.1.7 運行程式 386
12.2 程式測試 387
12.2.1 引子 387
12.2.2 程式測試方法與實例 388
12.3 程式調試概念 392
12.3.1 bug與debug 392
12.3.2 bug無處不在 393
12.3.3 軟體調試的困難 393
12.4 軟體調試的方法論 394
12.4.1 引例 394
12.4.2 軟體調試的基本過程 395
12.4.3 程式錯誤的查找方法討論 395
12.4.4 跟蹤方法方案探索 397
12.5 程式調試工具 399
12.5.1 IDE中調試器的功能 399
12.5.2 調試命令 401
12.6 調試實例 405
12.6.1 基本調試步驟示例 405
12.6.2 調試查找程式錯誤示例 407
12.6.3 調用棧的使用示例 416
12.6.4 數據斷點使用示例 418
12.7 本章小結 420
習題 421
附錄A 運算符的優先權和結合性 425
附錄B ASCII碼錶 426
附錄C C語言常用庫函式 427
附錄D 常用轉義字元表 432
附錄E 位運算簡介 433
附錄F 在工程中加入多個檔案 435
附錄G 編程範式 441
附錄H 空類型void問題 449
參考文獻 450

相關詞條

熱門詞條

聯絡我們