程序設計基礎及應用
定 價:59 元
叢書名:全國高等學校計算機教育研究會“十四五”系列教材
本書是一本密切結(jié)合計算機語言最新發(fā)展的程序設計入門教材,專為初學者量身打造。全書系統(tǒng)闡述了C&C 語言程序設計的基本內(nèi)容、常用算法設計及應用。全書共12章,內(nèi)容涵蓋了C&C 語言的3種控制結(jié)構(gòu)、函數(shù)、數(shù)組、字符串、自定義數(shù)據(jù)類型、文件操作和基本的面向?qū)ο蟪绦蛟O計。同時,本書還介紹了常用的順序與鏈表結(jié)構(gòu)、通用算法和C STL。本書案例習題豐富,并配有在線課程與實驗。本書符合C99標準和C 11標準,同時適當拓展了更高版本知識點,以培養(yǎng)讀者的計算思維為目標,注重編程能力的訓練。通過數(shù)據(jù)處理和工程應用中的實際案例,引出相關(guān)知識點,有助于讀者理解程序設計的思想和方法,為進一步學習C語言底層嵌入式應用程序編程以及C 語言進行大型應用軟件系統(tǒng)的開發(fā)奠定基礎。本書是對新工科教學實踐的探索,是國家級一流本科課程的配套教材。面向零編程基礎的讀者,適合作為高校各專業(yè)低年級學生學習程序設計的入門教材。
1. 用C 語言編寫的程序,充分利用c 庫實現(xiàn)豐富的功能。2. 介紹的大部分的知識,符合C語言的標準,用戶可以無障礙切換到C語言的學習。3. 通過工程應用實例展現(xiàn)C/C 語言的相關(guān)應用,方便讀者快速掌握程序設計的思想。4.注重在Windows與Linux等多平臺的編寫編譯,滿足零基礎讀者學習后在嵌入式、機器學習、工程應用等方面的進一步開發(fā)學習。4. 提供豐富的在線教學與實驗資源,滿足邊學邊練,適合于沒有任何編程基礎的學習者選取的入門教材。5. 適合于高等院校各專業(yè)的本科生的通識教材。
自2020年《程序設計基礎及應用(C&C 語言)》首版問世以來,已在全國多所高校中歷經(jīng)萬余名師生的教學實踐,收獲了眾多寶貴反饋。其配套數(shù)字資源更是榮獲2021年中國計算機教育大會計算機類教學資源建設優(yōu)秀課程配套資源一等獎。2024年,本書榮獲北京高校優(yōu)質(zhì)本科教材獎。作為國家級線上線下混合式一流本科課程《計算機語言程序設計》的配套教材,本書亦是首批新工科項目的重要建設成果,深度展現(xiàn)了C&C 語言技術(shù)的最新進展,尤其是在數(shù)據(jù)處理應用領(lǐng)域的教學研究與改革成果。本次改版立足于教學發(fā)展前沿趨勢,以學生為中心,旨在培養(yǎng)新工科背景下所需的人才。通過教學研用四位一體的創(chuàng)新教學模式,全面融合工程教育認證標準、課程思政理念、學科競賽經(jīng)驗以及一流本科課程建設成果,實現(xiàn)了課程建設與數(shù)字教材的完美統(tǒng)一。我們的核心目標是激發(fā)學生的創(chuàng)新思維,提升他們解決復雜問題的能力,特別是在數(shù)據(jù)處理與大數(shù)據(jù)領(lǐng)域。全書在保持C語言面向過程與C 面向?qū)ο蠡A上,從知識體系到教材形式都進行了全面革新,以確保教材內(nèi)容的時效性、準確性和教學的有效性。相較于第一版,本版的主要改動與特色包括:1. 形態(tài)升級。通過二維碼嵌入視頻、文檔等多媒體資源,將在線課程、在線實驗與教材緊密融合,極大豐富了學習體驗。2. 章節(jié)重組。重新規(guī)劃章節(jié)結(jié)構(gòu),新增函數(shù)式程序設計、匿名函數(shù)、函數(shù)對象、正則表達式等現(xiàn)代編程知識,深化泛型編程、C STL及算法內(nèi)容,并通過二維碼提供拓展實例和講解,使內(nèi)容更為豐富實用。3. 實例更新。修訂各章實用知識與案例,強化科學計算、文本數(shù)據(jù)處理、可視化、文件交互、算法與庫等實踐環(huán)節(jié),助力讀者深入理解C&C 語言在實際問題中的應用,培養(yǎng)編程思維和實踐能力,同時為參加天梯賽、CSP、PAT等競賽及認證的讀者提供堅實基礎。4. 習題增強。大幅增加頭歌與PTA平臺的在線實訓題目,并通過二維碼與在線課程提供題解資料與視頻,引導讀者通過AI助力編程,提升思考與總結(jié)能力,進而增強解決問題與學習新技術(shù)的能力。5. 代碼優(yōu)化。部分示例為完整程序,其余為程序段,旨在激發(fā)讀者思考并自行補充完整,通過實踐驗證加深程序性知識理解,促進自我反思。6. 教學支持強化。課程、教材及實驗深度融合,讀者可通過附錄了解加入方法,教師可聯(lián)系作者獲得更多權(quán)限,以便在公共平臺上開展混合式教學。讀者亦可自主加入在線課程與實驗,充分利用教材資源。7. 知識圖譜引領(lǐng)。本書采用知識圖譜貫穿內(nèi)容,將豐富資源、經(jīng)典案例和代表性實踐融為一體,實現(xiàn)線上線下資源的無縫對接,有效解決了資源分散與知識碎片化問題,滿足了數(shù)智化時代師生的多元化需求。書中個別章節(jié)加號,通常表示該章節(jié)為選讀內(nèi)容,建議學生自主學習。本教材及其豐富的在線資源,共同構(gòu)建了一個全方位、多層次的C&C 教學生態(tài)系統(tǒng)。讀者不僅能夠通過課程平臺的知識圖譜、拓展資料和AI助教功能獲得深度學習支持,還能通過在線實驗編程,將理論知識轉(zhuǎn)化為實踐技能,享受沉浸式學習體驗。我們期待《程序設計基礎及應用(C&C 語言)》(第2版)能夠成為廣大教師和學生教學相長的得力助手。我們相信,借助這本教材,學生將能系統(tǒng)掌握C&C 編程的核心知識與技能,為未來的學術(shù)深造與職業(yè)發(fā)展奠定堅實的基石。本書的修訂工作由陳春麗與王振華兩位老師完成,其中,陳春麗老師精心打造了第1~7、第9~10章的內(nèi)容,王振華老師負責了第8章、第11~12章的編纂。此外,中國地質(zhì)大學(北京)信息工程學院計算機基礎教學團隊的教師們對本書的教學實踐提出了諸多寶貴建議與實踐案例,并積極參與了國家級一流本科課程計算機語言程序設計的建設,共同促使本版教材為一套配套齊全、形態(tài)新穎的教學用書。本書獲得中國地質(zhì)大學(北京)十四五本科規(guī)劃教材立項支持。此外,還要特別感謝全國高等學校計算機教育研究會和全國高等院校計算機基礎教育研究會對本書修訂工作的立項支持。同時,也向清覽、超星、PTA、頭歌等平臺表達誠摯的謝意,感謝它們?yōu)楸緯诰資源的發(fā)布提供了有力的技術(shù)支持與廣泛的傳播渠道。國家級一流本科課程計算機語言程序設計的課程網(wǎng)站為https://www.xueyinonline.com/detail/245126882,所有內(nèi)容免費。歡迎廣大讀者多提寶貴意見和建議,指出書中錯誤,可以直接發(fā)送郵件至ccl@cugb.edu.cn,作者非常感謝并會及時回復。
作者中國地質(zhì)大學(北京)信息工程學院
第1章計算機語言程序設計概述11.1程序設計語言發(fā)展11.1.1機器語言到高級語言11.1.2高級語言翻譯成機器語言21.2C&C 語言概述31.2.1C&C 語言的發(fā)展31.2.2C&C 語言的特點31.3算法簡介31.3.1算法的特點與描述31.3.2算法的評價51.3.3數(shù)據(jù)結(jié)構(gòu)與算法一題多解61.4三大程序設計思想71.4.1面向過程程序設計71.4.2面向?qū)ο蟪绦蛟O計81.4.3函數(shù)式程序設計81.5認識C&C 源程序81.5.1程序示例81.5.2程序代碼說明101.6C&C 開發(fā)環(huán)境131.6.1常用的編譯器及IDE131.6.2AI助力編程141.7實用知識: 常見的編譯和運行錯誤141.7.1常見的編譯錯誤141.7.2常見的運行錯誤151.8練習與思考16第2章順序結(jié)構(gòu)與數(shù)學表達式182.1順序結(jié)構(gòu)18〖3〗程序設計基礎及應用(C&C 語言)第2版目錄〖3〗2.2基本數(shù)據(jù)類型與變量192.2.1基本數(shù)據(jù)類型簡介192.2.2變量與內(nèi)存的關(guān)系192.2.3變量定義與初始化202.2.4賦值運算符與自增/自減運算符202.2.5陷阱: 變量定義與賦值的常見問題222.3常量242.3.1字面常量242.3.2符號常量252.3.3#define宏定義262.3.4sizeof運算符282.4數(shù)學運算符與表達式282.4.1算術(shù)運算符282.4.2算術(shù)表達式及優(yōu)先級292.4.3復合賦值運算符292.4.4逗號運算符292.4.5陷阱: 算術(shù)運算的常見問題302.5位運算符和表達式312.5.1位運算符及功能312.5.2位運算的應用322.6類型轉(zhuǎn)換332.6.1隱式類型轉(zhuǎn)換332.6.2顯式類型轉(zhuǎn)換332.6.3C 的類型推導342.7輸入與輸出342.7.1C 的cin和cout352.7.2庫函數(shù)scanf和printf382.7.3C 20的format格式化402.7.4一個字符的輸入與輸出412.8實用知識: 常用的數(shù)學庫函數(shù)422.8.1歐氏距離計算兩個坐標點距離422.8.2半正矢法計算兩個經(jīng)緯度點的距離432.9簡單程序算法及應用442.9.1交換兩個整數(shù)的值442.9.2字母加密452.10練習與思考46第3章選擇結(jié)構(gòu)及相關(guān)表達式483.1選擇結(jié)構(gòu)483.2關(guān)系運算符和關(guān)系表達式493.2.1關(guān)系運算符493.2.2關(guān)系表達式及應用493.2.3陷阱: 關(guān)系表達式的常見問題503.3邏輯運算符和邏輯表達式503.3.1邏輯運算符503.3.2邏輯表達式及應用513.4if語句523.4.1標準if…else…語句523.4.2簡單的if語句533.4.3復雜的if…else if…else語句533.4.4if語句的嵌套553.4.5條件運算符及條件表達式553.5switch語句563.5.1switch語句實現(xiàn)多分支結(jié)構(gòu)563.5.2break語句的合理使用573.5.3if與switch的混用573.6實用知識: 通用工具函數(shù)583.6.1生成隨機數(shù)函數(shù)583.6.2進程控制函數(shù)593.7選擇結(jié)構(gòu)算法及應用603.7.1判斷整數(shù)m是否能被n整除603.7.2大寫字母轉(zhuǎn)換成小寫字母603.7.3簡單的四則運算器613.8練習與思考62第4章自定義函數(shù)與封裝664.1函數(shù)與結(jié)構(gòu)化程序設計664.2自定義函數(shù)的聲明與定義684.2.1函數(shù)的聲明684.2.2函數(shù)的定義694.2.3函數(shù)返回值704.2.4陷阱: 函數(shù)定義的常見問題714.3函數(shù)的調(diào)用724.3.1函數(shù)調(diào)用的格式724.3.2陷阱: 函數(shù)調(diào)用的常見問題734.3.3函數(shù)的嵌套調(diào)用744.3.4調(diào)用內(nèi)聯(lián)函數(shù)764.4函數(shù)的參數(shù)傳遞764.4.1參數(shù)的值傳遞764.4.2C 的引用傳遞774.4.3const修飾引用形參794.5變量的作用域與生存期794.5.1局部變量的作用域與生存期794.5.2全局變量的作用域與生存期804.5.3靜態(tài)變量的作用域與生存期814.6C 的函數(shù)重載與默認參數(shù)824.6.1C 的函數(shù)重載824.6.2C 的默認參數(shù)834.6.3陷阱: 函數(shù)重載的二義性844.7遞歸思想遞歸函數(shù)854.7.1遞歸函數(shù)的定義854.7.2遞歸函數(shù)的調(diào)用過程864.7.3遞歸調(diào)用中的棧884.8實用知識: C 函數(shù)高級特性884.8.1返回類型推導894.8.2返回類型后置894.8.3匿名函數(shù)(Lambda)894.9自定義函數(shù)的應用904.9.1獲得用戶選擇的購物菜單904.9.2遞歸求快速冪問題914.10練習與思考92第5章迭代與循環(huán)結(jié)構(gòu)955.1循環(huán)結(jié)構(gòu)955.2循環(huán)控制語句965.2.1while語句965.2.2for語句985.2.3do…while語句1005.2.4陷阱: 循環(huán)的常見問題1015.3循環(huán)和迭代的提前結(jié)束1025.3.1break語句1025.3.2continue語句退出迭代1045.4循環(huán)結(jié)構(gòu)的嵌套1055.4.1循環(huán)嵌套的語句1055.4.2多種循環(huán)的優(yōu)化1075.5循環(huán)與遞歸1085.6實用知識: 循環(huán)讀入與出錯處理1105.6.1循環(huán)讀入直到滿足特定條件1105.6.2控制多行輸入直到EOF結(jié)束1105.6.3忽略輸入錯誤的輸入控制1115.7循環(huán)結(jié)構(gòu)的算法及應用1135.7.1數(shù)學表達式的求解1135.7.2多種方法求一組數(shù)的平均值1145.7.3循環(huán)執(zhí)行用戶選擇菜單功能1155.8練習與思考116第6章數(shù)值型數(shù)組與數(shù)據(jù)處理1196.1一維數(shù)組1196.1.1一維數(shù)組的定義與存儲1196.1.2數(shù)組元素的使用1216.1.3基于范圍的for循環(huán)1236.2一維數(shù)組與指針1246.2.1指針與指針變量1246.2.2函數(shù)參數(shù)的址傳遞1266.2.3使用指針變量訪問數(shù)組1286.2.4陷阱: 數(shù)組越界問題1296.3一維數(shù)組與函數(shù)1296.3.1一維數(shù)組作為函數(shù)的形參1296.3.2返回指針的函數(shù)1336.4實用知識: 數(shù)據(jù)處理的實用算法1336.4.1中值與方差(標準差)計算1346.4.2返回數(shù)組的最大值/最小值及下標1346.4.3順序查找與折半查找1366.4.4冒泡排序與選擇排序1376.4.5插入與刪除1396.5二維數(shù)組與多維數(shù)組1416.5.1二維數(shù)組的定義與存儲1416.5.2二維數(shù)組元素的使用1426.5.3二維數(shù)組與指針1436.5.4二維數(shù)組與函數(shù)1446.5.5多維數(shù)組1456.6指針數(shù)組與二級指針1456.6.1指針數(shù)組1466.6.2二級指針1476.7數(shù)據(jù)處理與工程應用1476.7.1實現(xiàn)購物菜單的結(jié)賬子功能1476.7.2接收不定個數(shù)的整數(shù)1486.7.3計算日平均溫度與最大溫差1506.7.4動態(tài)規(guī)劃算法應用實例1516.8練習與思考152第7章字符型數(shù)組與字符串處理1557.1字符數(shù)組的定義與初始化1557.1.1字符數(shù)組的定義1557.1.2字符數(shù)組的初始化1567.1.3字符數(shù)組元素的使用1567.1.4陷阱: 字符串使用=和==的問題1577.2字符數(shù)組的輸入與輸出1577.2.1接收一個單詞給字符數(shù)組1577.2.2接收一行句子給字符數(shù)組1587.2.3輸出字符串1597.2.4陷阱: 混合輸入字符串和數(shù)字的問題1607.3字符數(shù)組與函數(shù)1607.3.1字符數(shù)組作為函數(shù)的形參1607.3.2數(shù)組作為函數(shù)的返回值1637.3.3字符串數(shù)組1647.4字符串與數(shù)值型的轉(zhuǎn)換函數(shù)1657.4.1利用sprintf函數(shù)將數(shù)值轉(zhuǎn)換為字符串1657.4.2利用sscanf 函數(shù)將字符串轉(zhuǎn)換為數(shù)值1657.5實用知識: 字符串處理函數(shù)1657.5.1常用函數(shù)1667.5.2字符或子串查找與替換1677.5.3字符串分割1687.5.4內(nèi)存處理函數(shù)1687.6字符串處理綜合應用1697.6.1所有單詞首字母大寫1697.6.2合并兩個有序字符串1707.6.3身份證號碼是否合法1707.7練習與思考171第8章文件與數(shù)據(jù)處理1738.1文件概述1738.1.1文件存儲類型1738.1.2文件對象1738.2C 文件打開與關(guān)閉1748.2.1文件的打開1748.2.2文件的關(guān)閉1768.3C 的文件讀寫1768.3.1fstream類的常用檢查方法1768.3.2文本文件的讀寫1778.3.3二進制文件的讀寫1808.3.4隨機讀寫1818.4C語言的文件操作1838.4.1C語言的文件打開與關(guān)閉1838.4.2C語言的文件讀寫1848.5實用知識: 帶參數(shù)的main函數(shù)1868.6文件應用示例1878.6.1密碼文件的讀寫1878.6.2學生成績分段統(tǒng)計效果圖1888.6.3溫度周報文件的讀寫1908.7練習與思考190第9章自定義數(shù)據(jù)類型1929.1C 的類與對象1929.1.1類的定義1929.1.2創(chuàng)建和使用對象1959.1.3構(gòu)造函數(shù)和析構(gòu)函數(shù)1979.1.4對象數(shù)組1999.1.5運算符重載2009.2C 類的進一步定義2029.2.1C 類的繼承性2029.2.2C 類的多態(tài)性2069.2.3命名空間2109.3typedef類型與using2109.3.1typedef2119.3.2using2119.4結(jié)構(gòu)體2119.4.1結(jié)構(gòu)體類型的定義2119.4.2結(jié)構(gòu)體類型變量2129.4.3結(jié)構(gòu)體類型的數(shù)組2159.5聯(lián)合體2169.5.1聯(lián)合體的定義與應用2169.5.2位段的定義與應用2179.6枚舉類型2189.6.1枚舉類型的定義與使用2189.6.2C 的枚舉類2209.7實用知識: C 的string類2209.7.1string類對象的定義2209.7.2string 類成員函數(shù)2219.7.3string 類的運算符2229.7.4string類對象的輸入與輸出2229.7.5string與其他類型轉(zhuǎn)換2239.7.6C 正則表達式2249.8自定義類型的綜合應用2269.8.1自定義日期類2269.8.2自定義類型數(shù)據(jù)的文件讀寫 2289.9練習與思考229第10章指針進階應用23210.1void指針23210.2函數(shù)指針與函數(shù)對象23310.2.1函數(shù)指針23310.2.2函數(shù)對象23410.3動態(tài)內(nèi)存分配與回收23510.3.1棧內(nèi)存與堆內(nèi)存23510.3.2在C 中動態(tài)分配內(nèi)存23610.3.3含有動態(tài)內(nèi)存分配成員的類23810.3.4malloc與free函數(shù)23910.4C 的智能指針24010.4.1unique_ptr24010.4.2shared_ptr24010.4.3weak_ptr24110.5鏈式數(shù)據(jù)結(jié)構(gòu)24110.5.1單鏈表24210.5.2單鏈表的訪問24310.5.3單鏈表結(jié)點的插入24310.5.4單鏈表結(jié)點的刪除24510.6實用知識: 通用算法函數(shù)24610.6.1改變序列的算法24710.6.2不修改序列的算法24710.6.3有序范圍的操作24910.6.4for_each函數(shù)24910.7鏈表與算法的應用25010.7.1鏈表的應用25010.7.2算法的應用25110.8練習與思考252第11章泛型編程與C 標準模板庫25411.1模板與泛型編程機制25411.1.1C 的函數(shù)模板25411.1.2C 中的類模板25511.1.3C 的可變參數(shù)模板25611.1.4C11的泛型宏25711.2C 模板類pair與tuple25711.2.1pair25711.2.2tuple25811.2.3比較pair與tuple25911.3C STL組件25911.3.1容器類型25911.3.2迭代器26011.4C 順序容器26111.4.1array與vector26111.4.2list與forward_list26311.5C 關(guān)聯(lián)容器26411.5.1set與multiset集合26511.5.2map與multimap映射26511.6C 容器適配器26611.6.1stack26611.6.2queue與priority_queue26611.7實用知識: C 數(shù)值計算26811.7.1數(shù)值界限26811.7.2泛型數(shù)值計算算法26811.7.3線性代數(shù)運算26911.8數(shù)據(jù)處理與統(tǒng)計分析27011.8.1數(shù)據(jù)分類匯總及Top n排名27011.8.2統(tǒng)計頻次最高的前n個單詞27111.9練習與思考272第12章軟件工程項目開發(fā)應用技術(shù)27412.1程序設計的多文件結(jié)構(gòu)27412.1.1多文件工程27412.1.2條件編譯指令27612.2靜態(tài)鏈接庫27612.2.1創(chuàng)建靜態(tài)鏈接庫27712.2.2部署靜態(tài)鏈接庫27812.3異常處理27812.4GUI與可視化設計27912.4.1GUI框架和工具27912.4.2C 語言的GUI程序27912.4.3EasyX繪圖實例28012.5練習與思考282