第一行代碼 C語言 視頻講解版( 簡體 字) | |
作者:翁惠玉 | 類別:1. -> 程式設計 -> C -> C |
出版社:人民郵電出版社 | 3dWoo書號: 48937 詢問書籍請說出此書號! 有庫存 NT售價: 350 元 |
出版日:5/1/2018 | |
頁數:474 | |
光碟數:1 (含視頻教學) | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787115475930 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章 程序設計概述 1
1.1 什么是程序設計 1 1.2 計算機的基本組成 2 1.2.1 計算機硬件 2 1.2.2 計算機軟件 4 1.3 程序設計語言 4 1.3.1 機器語言 4 1.3.2 匯編語言 5 1.3.3 高級語言 6 1.3.4 智能語言 7 1.3.5 C語言 7 1.4 程序設計過程 7 1.4.1 算法設計 8 1.4.2 編碼 11 1.4.3 編譯與鏈接 11 1.4.4 調試與維護 12 1.5 編程規范及常見問題 13 1.5.1 真的需要算法設計階段嗎 13 1.5.2 為什么不用自然語言編程 13 1.5.3 寄存器、主存儲器和外存儲器有什么不同 13 1.5.4 所有的計算機能夠執行的指令都是相同的嗎 13 1.5.5 為什么需要編譯和鏈接 13 1.5.6 為什么在不同類型的計算機上運行C語言程序需要使用不同的編譯器 14 1.5.7 為什么不同類型的計算機不能運行同一個匯編程序 14 1.6 小結 14 1.7 自測題 14 1.8 實戰訓練 15 第2章 初識C語言 16 2.1 一個完整的C語言程序 16 2.1.1 注釋 17 2.1.2 預編譯 17 2.1.3 主程序 18 2.2 C語言的開發環境 20 2.2.1 VS2010的安裝 20 2.2.2 程序輸入 20 2.2.3 編譯鏈接 24 2.2.4 程序的運行 25 2.2.5 程序的調試 28 2.3 編程規范及常見問題 30 2.3.1 注意注釋 30 2.3.2 良好的排版習慣 30 2.3.3 為什么要學C語言 31 2.3.4 如何學習程序設計 31 2.3.5 什么是庫 31 2.4 小結 32 2.5 自測題 32 2.6 實戰訓練 32 第3章 順序程序設計 33 3.1 常量與變量 33 3.1.1 變量定義 33 3.1.2 數據類型 35 3.1.3 常量與符號常量 39 3.2 數據的輸入/輸出 44 3.2.1 字符的輸入/輸出 44 3.2.2 格式化輸入/輸出 46 3.3 算術運算 54 3.3.1 算術表達式 54 3.3.2 不同類型數據間的混合運算 56 3.3.3 強制類型轉換 57 3.3.4 數學函數庫 59 3.4 賦值運算 60 3.4.1 賦值表達式 60 3.4.2 賦值的嵌套 62 3.4.3 復合賦值運算 62 3.4.4 自增和自減運算符 63 *3.5 信息表示 64 3.5.1 數制間的轉換 64 3.5.2 整數的表示 66 3.5.3 實數的表示 69 3.6 順序程序設計示例 69 3.7 程序規范及常見問題 71 3.7.1 變量命名 71 3.7.2 運算符的優先級 71 3.7.3 數據運算時的注意事項 71 3.7.4 為什么要定義符號常量 72 3.7.5 變量定義后且對它賦值前的值是什么 72 3.7.6 不要在表達式中插入有副作用的子表達式 72 3.8 小結 72 3.9 自測題 73 3.10 實戰訓練 74 第4章 分支程序設計 76 4.1 關系表達式 76 4.2 邏輯表達式 78 4.2.1 邏輯運算 78 4.2.2 短路求值 80 4.3 if語句 82 4.3.1 if語句的形式 82 4.3.2 if語句的嵌套 87 4.3.3 條件表達式 90 4.4 switch語句及其應用 92 4.5 程序規范及常見問題 102 4.5.1 條件語句程序的排版 102 4.5.2 不要連用關系運算符 102 4.5.3 注意短路求值 102 4.5.4 常見錯誤 102 4.6 小結 103 4.7 自測題 103 4.8 實戰訓練 104 第5章 循環程序設計 106 5.1 計數循環 106 5.1.1 for語句 106 5.1.2 for語句的進一步討論 115 5.1.3 for循環的嵌套 116 5.2 break和continue語句 118 5.2.1 break語句 118 5.2.2 continue語句 120 5.3 基于哨兵的循環 121 5.3.1 while語句 122 5.3.2 do…while循環 128 5.4 循環的中途退出 130 5.5 編程規范和常見問題 134 5.5.1 循環語句程序的排版 134 5.5.2 優化循環體 134 5.5.3 使用for循環的注意事項 134 5.5.4 常見錯誤 134 5.5.5 三個循環語句之間的關系 135 5.6 小結 135 5.7 自測題 135 5.8 實戰訓練 136 第6章 過程封裝——函數 139 6.1 函數的定義 140 6.1.1 函數的基本結構 140 6.1.2 return語句 141 6.1.3 函數示例 141 6.2 函數的使用 144 6.2.1 函數原型的聲明 144 6.2.2 函數調用 146 6.2.3 將函數與主程序放在一起 147 6.2.4 函數調用過程 151 6.3 帶參數的宏 154 6.4 變量的作用域 155 6.4.1 局部變量 155 6.4.2 全局變量 156 6.5 變量的存儲類別 158 6.5.1 自動變量 158 6.5.2 靜態變量 159 6.5.3 寄存器變量 160 6.5.4 外部變量 161 *6.6 多源文件程序的編譯鏈接 163 6.7 遞歸程序設計 164 6.7.1 遞歸的基本概念 165 6.7.2 遞歸函數的應用 167 6.8 編程規范及常見問題 173 6.8.1 使用函數時的建議 173 6.8.2 函數命名 174 6.8.3 沒有返回值的函數是否需要return語句 174 6.8.4 盡量避免使用全局變量 174 6.8.5 盡量避免實際參數表達式有副作用 175 6.8.6 常見錯誤 175 6.9 小結 175 6.10 自測題 176 6.11 實戰訓練 177 第7章 批量數據處理——數組 179 7.1 一維數組 179 7.1.1 一維數組的定義 179 7.1.2 數組元素的引用 180 7.1.3 一維數組的內存映像 184 7.1.4 一維數組的應用 185 7.2 數組作為函數的參數 190 7.3 查找算法 195 7.3.1 順序查找 196 7.3.2 二分查找 197 7.4 排序算法 201 7.4.1 直接選擇排序法 201 7.4.2 冒泡排序法 203 7.5 二維數組 205 7.5.1 二維數組的定義 206 7.5.2 二維數組元素的引用 207 7.5.3 二維數組的內存映像 208 7.5.4 二維數組的應用 208 7.5.5 二維數組作為函數的參數 218 7.6 字符串 220 7.6.1 字符串的存儲及初始化 220 7.6.2 字符串的輸入/輸出 221 7.6.3 字符串作為函數參數 225 7.6.4 字符串處理函數 230 7.6.5 字符串的應用 232 7.7 程序規范及常見問題 234 7.7.1 數組下標必須從0開始嗎 234 7.7.2 能用表達式des = src將字符串src賦給字符串des嗎 234 7.7.3 為什么存放字符串的數組長度比字符串的實際長度多一個字符235 7.7.4 有了scanf函數為什么還需要gets函數 235 7.7.5 傳遞字符串為什么只需要一個參數 235 7.7.6 傳遞二維數組時形式參數中第二個方括號中的值為什么必須指定 235 7.8 小結 235 7.9 自測題 236 7.10 實戰訓練 237 第8章 指針 240 8.1 指針的概念 240 8.1.1 指針與間接訪問 240 8.1.2 指針變量的定義 241 8.1.3 指針變量的操作 242 8.2 指針與數組 246 8.2.1 指向數組元素的指針 246 8.2.2 指針運算與數組訪問 246 8.3 指針與函數 250 8.3.1 指針作為參數 250 8.3.2 返回指針的函數 254 8.3.3 數組作為函數參數的進一步討論 256 8.4 動態內存分配 259 8.4.1 動態變量 259 8.4.2 動態變量的創建 259 8.4.3 動態變量的消亡 261 8.4.4 內存泄露 261 8.4.5 查找malloc和calloc的失誤 261 8.4.6 動態變量應用 263 8.5 指針與字符串 265 8.5.1 用指向字符的指針變量表示字符串 265 8.5.2 字符串作為函數的參數 266 8.5.3 返回字符串的函數 268 8.6 指針數組與多級指針 270 8.6.1 指針數組 270 *8.6.2 main函數的參數 272 *8.6.3 多級指針 276 *8.6.4 二維數組與指向一維數組的指針 277 *8.6.5 動態二維數組 279 *8.7 函數指針 280 8.7.1 指向函數的指針 280 8.7.2 函數指針作為函數參數 281 8.7.3 函數指針用于菜單選擇 284 8.8 編程規范與常見問題 285 8.8.1 int x, *p = &x;有錯嗎 285 8.8.2 避免使用懸空指針和未初始化的指針 286 8.8.3 不同類型的指針之間為什么不能賦值 286 8.8.4 指針與數組等價嗎 286 8.8.5 值傳遞和指針傳遞的區別是什么 286 8.8.6 返回指針的函數必須確保返回值指向的變量在函數執行 結束時依然存在 287 8.8.7 使用動態變量時必須嚴格防止內存泄露 287 8.9 小結 287 8.10 自測題 288 8.11 實戰訓練 289 第9章 更多的數據類型 290 9.1 枚舉類型 290 9.2 類型別名 293 9.3 結構體 294 9.3.1 結構體的概念 294 9.3.2 結構體類型的定義 295 9.3.3 結構體類型變量的定義 296 9.3.4 結構體類型變量的使用 299 9.3.5 結構體與函數 302 9.4 鏈表 308 9.4.1 鏈表的概念 308 9.4.2 單鏈表的存儲 310 9.4.3 單鏈表的操作 311 9.4.4 帶頭結點的單鏈表 312 9.4.5 單鏈表實例 313 9.5 共用體 316 9.5.1 共用體概念和共用體類型的定義 316 9.5.2 共用體類型變量的定義及初始化 318 9.5.3 共用體變量的使用 318 9.6 編程規范及常見問題 324 9.6.1 結構體中每個字段的類型都不相同嗎 324 9.6.2 單鏈表中為什么要引入頭結點 324 9.6.3 引入結構體有什么用處 324 9.6.4 結構體和共用體的區別 324 9.6.5 結構體和共用體類型定義時能否省略類型名 324 9.6.6 結構體類型定義與結構體變量定義 325 9.7 小結 325 9.8 自測題 325 9.9 實戰訓練 326 第10章 位運算與位段 328 10.1 位運算 328 10.1.1 “按位與”運算 328 10.1.2 “按位或”運算 330 10.1.3 “按位異或”運算 331 10.1.4 “按位取反”運算 333 10.1.5 “左移”運算 335 10.1.6 “右移”運算 335 10.1.7 位運算與賦值運算 337 10.1.8 不同長度的數據進行位運算 337 10.2 位段 338 10.2.1 位段的概念及定義 338 10.2.2 位段的引用 339 10.3 編程規范及常見問題 341 10.3.1 檢驗某數中指定位的值 341 10.3.2 將數據中的某一位的值置成0 341 10.3.3 將數據中的某一位的值置成1 342 10.3.4 將數據中的某一位的值取反 342 10.4 小結 342 10.5 自測題 342 10.6 實戰訓練 343 第11章 文件 344 11.1 內存與外存 344 11.2 文件的概念 345 11.2.1 什么是文件 345 11.2.2 ASCII文件與二進制文件 346 11.3 文件緩沖與文件指針 346 11.4 文件的打開與關閉 347 11.4.1 打開文件 347 11.4.2 關閉文件 349 11.5 ASCII文件的讀寫 349 11.5.1 字符讀寫函數 350 11.5.2 字符串讀寫函數 352 11.5.3 數值讀寫函數 354 11.6 二進制文件的讀寫 358 11.6.1 fwrite函數 358 11.6.2 fread函數 360 11.7 文件的順序訪問 362 11.7.1 什么是文件的順序訪問 362 11.7.2 feof函數 363 11.8 文件的隨機訪問 364 11.8.1 文件定位指針 365 11.8.2 rewind函數 365 11.8.3 fseek函數 367 11.8.4 ftell函數 369 *11.9 文件操作與控制臺操作 370 11.10 編程規范及常見問題 371 11.10.1 良好的文件使用習慣 371 11.10.2 文件打開方式選擇 372 11.10.3 文件指針與文件定位指針 372 11.10.4 流與文件 372 11.11 小結 372 11.12 自測題 373 11.13 實戰訓練 373 第12章 軟件開發過程 374 12.1 結構化程序設計思想 374 12.2 自頂向下分解示例:“猜硬幣”游戲 375 12.2.1 頂層分解 375 12.2.2 prn_instruction函數的實現 376 12.2.3 play函數的實現 376 12.2.4 get_call_from_user函數的實現 378 12.3 模塊劃分示例:“石頭、剪刀、布”游戲 380 12.3.1 自頂向下分解 381 12.3.2 模塊劃分 382 12.3.3 頭文件的設計 383 12.3.4 模塊實現 386 12.4 設計自己的庫示例:隨機函數庫的設計和實現 389 12.4.1 隨機函數庫的功能設計 390 12.4.2 接口文件的設計 390 12.4.3 實現文件的設計 391 12.5 隨機函數庫的應用示例:模擬龜兔賽跑 392 12.5.1 自頂向下分解 392 12.5.2 模塊劃分及實現 393 12.6 軟件開發過程 395 12.6.1 軟件危機 395 12.6.2 軟件工程 396 12.7 軟件開發過程示例:學生管理系統的設計與實現 397 12.7.1 需求分析 397 12.7.2 概要設計 398 12.7.3 詳細設計 400 12.7.4 編碼與測試 402 12.8 軟件開發示例:網上書店的設計 407 12.8.1 需求分析 407 12.8.2 概要設計 408 12.8.3 詳細設計 411 12.9 編程規范及常見問題 413 12.9.1 頭文件的格式 413 12.9.2 實現一個庫為什么需要兩個文件 413 12.9.3 慎用全局變量 414 12.10 小結 414 12.11 自測題 414 12.12 實戰訓練 414 第13章 通用算法設計 416 13.1 枚舉法 416 13.2 貪婪法 423 13.3 分治法 427 13.4 動態規劃 431 13.5 回溯法 435 13.6 小結 442 13.7 實戰訓練 442 附錄 443 附錄1 第1章自測題答案 443 附錄2 第2章自測題答案 445 附錄3 第3章自測題答案 446 附錄4 第4章自測題答案 451 附錄5 第5章自測題答案 453 附錄6 第6章自測題答案 455 附錄7 第7章自測題答案 459 附錄8 第8章自測題答案 463 附錄9 第9章自測題答案 466 附錄10 第10章自測題答案 467 附錄11 第11章自測題答案 470 附錄12 第12章自測題答案 472 附錄13 ASCII編碼表 474 本書以C語言為編程環境,由淺入深地介紹了C語言的完整內容以及過程化程序設計的思想和方法。全書共有13章。第 1章介紹了什么是程序設計。第 2章給出了一個完整的C語言程序,并介紹了如何在VS2010中輸入、編譯鏈接及調試程序。第3~5章分別介紹了C語言中支持結構化程序設計的3種結構:順序、分支和循環所必需的工具。第6章介紹了如何編寫及應用函數;第7章介紹了處理批量數據的工具,即數組。上述章節的內容都是C語言的核心知識,請務必掌握。第8~11章分別講解了結構體、共用體、鏈表、位運算和文件等編程技術。第 12章講解了如何用結構化程序設計思想指導一個大程序的開發,以及軟件開發的基本過程。該章中用“猜硬幣”游戲介紹了自頂向下分解的過程,用“石頭、剪刀、布”游戲介紹了模塊劃分,用“龜兔賽跑模擬”的例子介紹了如何建立一個自己的庫以及如何應用自己創建的庫,用學生管理系統和書店管理系統講述了軟件開發的過程。第 13章介紹了通用算法設計技術,旨在讓讀者了解,當遇到一個問題時應該如何設計解決問題的算法。
本書內容翔實、講解深入,每個知識點都提供了示例,全書共有171道例題和228個程序樣例,所有程序樣例都在VS2010中調試通過。為了方便讀者自學,本書還提供了118道自測題和141道編程題,以及所有習題的答案,且配套了講解主要知識點的視頻。 本書適合C語言初學者,也適合有一定基礎的讀者。可作為各高等院校計算機專業的教材,也可供從事計算機軟件開發的人員參考。 |