本書以“理論夠用重在實(shí)踐”為出發(fā)點(diǎn),融入了流行的CDIO工程理念,采用了案例式、啟發(fā)式、項(xiàng)目式的教學(xué)模式,按照講、仿、練、思、拓的步驟組織教學(xué),由淺入深地對(duì)C語言程序設(shè)計(jì)內(nèi)容進(jìn)行了講述,努力實(shí)現(xiàn)“零基礎(chǔ)”入門、模仿應(yīng)用、引導(dǎo)思考、啟迪創(chuàng)新。是一本兼具工具性、實(shí)用性和趣味性的C語言程序設(shè)計(jì)教材。全書共分15章,內(nèi)容包括:程序設(shè)計(jì)預(yù)備知識(shí)、C語言快速入門、數(shù)據(jù)存儲(chǔ)和計(jì)算、數(shù)據(jù)輸入輸出、程序結(jié)構(gòu)和算法、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、指針、函數(shù)、工程和程序調(diào)試、結(jié)構(gòu)體和共用體、鏈表、文件、綜合應(yīng)用舉例(課程設(shè)計(jì)案例)。書中所有例子均在Code::Blocks16.01下調(diào)試通過。本書適合作為高等學(xué)校C語言程序設(shè)計(jì)課程的教材,也可以作為計(jì)算機(jī)等級(jí)考試的輔導(dǎo)教材或參考用書。
本書是一部教學(xué)資源非常豐富的數(shù)字化新形態(tài)教材
C 語言是當(dāng)今最為流行的程序設(shè)計(jì)語言之一,一直穩(wěn)居計(jì)算機(jī)編程語言排行榜的前三甲,是各高校廣泛開設(shè)的計(jì)算機(jī)程序設(shè)計(jì)語言之一,也是全國計(jì)算機(jī)等級(jí)考試、職業(yè)資格認(rèn)定、技能大賽等可選計(jì)算機(jī)語言,學(xué)習(xí)和掌握C語言更是計(jì)算機(jī)類專業(yè)的必然選擇和必備技能。程序設(shè)計(jì)是一種理論和實(shí)踐并重的技能,存在著數(shù)學(xué)思維向計(jì)算機(jī)思維的轉(zhuǎn)變、向算法設(shè)計(jì)的轉(zhuǎn)變、向編碼的轉(zhuǎn)變、向調(diào)試技能的轉(zhuǎn)變,因此初學(xué)者普遍感覺入門難、實(shí)驗(yàn)難、實(shí)踐應(yīng)用更難。為突破這些困難,本書秉持理論夠用、重在應(yīng)用的原則來組織教學(xué)內(nèi)容,用案例貫穿于全書。通過對(duì)案例的問題分析、算法設(shè)計(jì)、代碼編寫和注釋、程序運(yùn)行、目的、注意事項(xiàng)、技巧、思考和拓展等這一系列遞進(jìn)式教學(xué)過程的實(shí)施,達(dá)到用理論指導(dǎo)實(shí)踐、用案例來驗(yàn)證理論、用案例來引導(dǎo)應(yīng)用、用思考和引導(dǎo)來啟迪拓展應(yīng)用的目的。本書具有如下鮮明特色:在指導(dǎo)思想上,以應(yīng)用為背景,面向計(jì)算思維和編程技能的引導(dǎo)和訓(xùn)練。通過案例將知識(shí)點(diǎn)的應(yīng)用和原理緊密結(jié)合,做到實(shí)際應(yīng)用和原理并舉。在內(nèi)容的組織上,每章內(nèi)容按照學(xué)習(xí)目標(biāo)、知識(shí)點(diǎn)導(dǎo)圖、難點(diǎn)提示、理論和案例、習(xí)題、實(shí)驗(yàn)的方式進(jìn)行歸類組織,結(jié)構(gòu)更為合理。在例題講述上,按照問題分析、算法思路、程序編碼和注釋、程序運(yùn)行結(jié)果、程序解析、本例目的、注意事項(xiàng)、技巧、思考等步驟進(jìn)行詳細(xì)講述,嚴(yán)格遵循認(rèn)知規(guī)律。在習(xí)題和實(shí)驗(yàn)的選取上,以鞏固基本知識(shí)點(diǎn)和強(qiáng)化程序設(shè)計(jì)能力為目的,進(jìn)行多樣化的題型設(shè)計(jì)(題型主要有選擇題、填空題、改錯(cuò)題、編程題等),還收錄了部分競(jìng)賽試題。本書的最后一章以簡(jiǎn)易的學(xué)生成績管理系統(tǒng)為例,按照軟件工程的模式講述了一個(gè)較大程序(項(xiàng)目)的設(shè)計(jì)和實(shí)現(xiàn)過程,可作為課程設(shè)計(jì)的范例。本書配套制作精美的PPT課件、全部例題的源代碼、習(xí)題和實(shí)驗(yàn)的解析及參考答案、微視頻。全書由熊啟軍設(shè)計(jì)、組織、編寫和錄制。本書承湖北文理學(xué)院協(xié)同育人專項(xiàng)經(jīng)費(fèi)資助,得到了中國鐵道出版社的大力支持,在此一并表示衷心感謝。
熊啟軍,副教授,畢業(yè)于華中師范大學(xué)計(jì)算機(jī)系,畢業(yè)后一直從事程序設(shè)計(jì)類課程的教學(xué)及研究并任職于湖北文理學(xué)院數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院,從事一線教育20余年,教授C語言程序設(shè)計(jì)課程15年,主持并結(jié)題2項(xiàng)省級(jí)課題,以第一作者發(fā)表教學(xué)研究論文10余篇。
第1章 程序設(shè)計(jì)預(yù)備知識(shí)1.1計(jì)算機(jī)系統(tǒng)的組成1.1.1 硬件系統(tǒng)1.1.2 軟件系統(tǒng)1.1.3 硬件和軟件的關(guān)系1.2 進(jìn)制及轉(zhuǎn)換1.2.1 十進(jìn)制數(shù)的表示1.2.2 二進(jìn)制數(shù)的表示1.2.3 十進(jìn)制與二進(jìn)制的轉(zhuǎn)換1.2.4 二進(jìn)制與其它進(jìn)制的轉(zhuǎn)換1.3 機(jī)器數(shù)的表示1.3.1 真值與機(jī)器數(shù)1.3.2 整數(shù)的原碼1.3.3 整數(shù)的反碼1.3.4 整數(shù)的補(bǔ)碼1.3.5 字符的表示1.4 二進(jìn)制數(shù)的運(yùn)算1.4.1 加減運(yùn)算1.4.2 位運(yùn)算習(xí)題 1第2章 C語言快速入門2.1 程序與計(jì)算機(jī)語言2.1.1 程序和算法2.1.2 計(jì)算機(jī)語言的發(fā)展2.1.3 計(jì)算機(jī)編程語言排行榜2.1.4 C語言的誕生及發(fā)展2.1.5 C語言的特點(diǎn)和應(yīng)用范圍2.2 C語言程序的基本構(gòu)成2.2.1 第一個(gè)C語言程序2.2.2 程序代碼解析2.2.3 C語言程序的基本構(gòu)成2.3 程序設(shè)計(jì)2.3.1 程序設(shè)計(jì)步驟2.3.2 C語言編程工具2.3.3 Code::Blocks簡(jiǎn)介習(xí)題2第3章 數(shù)據(jù)存儲(chǔ)和計(jì)算3.1 標(biāo)識(shí)符3.2 數(shù)據(jù)類型3.3 常量與變量3.3.1 常量3.3.2 變量3.4 數(shù)據(jù)的存儲(chǔ)3.4.1 數(shù)據(jù)的取值范圍3.4.2 數(shù)據(jù)在內(nèi)存中的存儲(chǔ)3.5 運(yùn)算符和表達(dá)式3.5.1 賦值運(yùn)算3.5.2 算術(shù)運(yùn)算3.5.3 關(guān)系運(yùn)算3.5.4 邏輯運(yùn)算3.5.5 位運(yùn)算3.5.6 復(fù)合賦值運(yùn)算3.5.7 自增自減運(yùn)算3.5.8 逗號(hào)運(yùn)算3.5.9 函數(shù)運(yùn)算3.5.10 運(yùn)算符的優(yōu)先級(jí)3.6 數(shù)據(jù)的類型轉(zhuǎn)換習(xí)題 3第4章 數(shù)據(jù)的輸入輸出4.1 scanf函數(shù)4.1.1 scanf函數(shù)的基本格式4.1.2 scanf函數(shù)的簡(jiǎn)單使用4.1.3 非法的鍵盤輸入4.1.4 scanf與fflush函數(shù)的配合使用4.2 printf函數(shù)4.2.1 printf函數(shù)的基本格式4.2.2 printf函數(shù)的簡(jiǎn)單使用4.2.3 printf函數(shù)的復(fù)雜使用4.3 字符的輸入輸出4.3.1 轉(zhuǎn)義字符的表示4.3.2 字符輸入輸出的專用函數(shù)習(xí)題4第5章 程序結(jié)構(gòu)和算法5.1 程序的控制結(jié)構(gòu)5.2 算法的描述方式5.3 算法描述舉例5.3.1 順序結(jié)構(gòu)的算法描述5.3.2 選擇結(jié)構(gòu)的算法描述5.3.3 循環(huán)結(jié)構(gòu)的算法描述習(xí)題5 第6章 選擇結(jié)構(gòu)6.1 if-else語句6.1.1 單分支if語句6.1.2 雙分支if語句6.1.3 復(fù)合語句6.2 選擇結(jié)構(gòu)的嵌套6.2.1 if的嵌套6.2.2 else的嵌套6.2.3 else與if的匹配6.3 條件表達(dá)式6.4 switch-case語句習(xí)題6第7章 循環(huán)結(jié)構(gòu)7.1 while循環(huán)7.2 do-while循環(huán)7.3 for循環(huán)7.4 goto語句7.5 多重循環(huán)7.6 循環(huán)應(yīng)用舉例7.6.1 級(jí)數(shù)計(jì)算7.6.2 枚舉計(jì)算7.6.3 迭代計(jì)算7.6.4 特殊圖形打印7.6.5 文本菜單設(shè)計(jì)習(xí)題7第8章 數(shù)組8.1 一維數(shù)組的概念8.1.1 一維數(shù)組的定義8.1.2 一維數(shù)組的地址8.1.3 一維數(shù)組的訪問8.1.4 一維數(shù)組的基本操作8.2 一維數(shù)組應(yīng)用舉例8.2.1 集合運(yùn)算8.2.2 排序算法8.2.3 篩選法8.3 字符數(shù)組與字符串8.3.1 什么是字符串8.3.2 字符串應(yīng)用舉例8.4 二維數(shù)組的概念8.5 二維數(shù)組應(yīng)用舉例習(xí)題 8第9章 指針9.1 內(nèi)存地址與指針9.2 指針的定義與運(yùn)算9.2.1 指針變量的定義9.2.2 空指針與空類型指針9.2.3 指針運(yùn)算9.3 指針與數(shù)組9.3.1 指針與一維數(shù)組9.3.2 指針與字符串9.3.3 指針與二維數(shù)組9.4 指針數(shù)組9.5 指向數(shù)組的指針習(xí)題 9第10章 函數(shù)10.1 函數(shù)的聲明和定義10.1.1 函數(shù)的聲明10.1.2 函數(shù)的定義10.2 函數(shù)的調(diào)用10.3 函數(shù)的參數(shù)和返回值10.3.1 函數(shù)參數(shù)的傳遞10.3.2 函數(shù)的返回值10.3.3 指針作函數(shù)參數(shù)10.3.4 帶參數(shù)的main函數(shù)10.4 常用庫函數(shù)介紹10.4.1 字符函數(shù)10.4.2 字符串函數(shù)10.4.3 字符串函數(shù)的實(shí)現(xiàn)10.4.4 類型轉(zhuǎn)換函數(shù)10.5 遞歸10.5.1 什么是遞歸10.5.2 遞歸舉例10.6 變量的作用域和存儲(chǔ)類型10.6.1 變量的作用域10.6.2 變量的存儲(chǔ)類型10.7 指向函數(shù)的指針習(xí)題10第11章 工程和程序調(diào)試11.1 宏定義11.1.1 不帶參數(shù)的宏定義11.1.2 帶參數(shù)的宏定義11.2 條件編譯11.3 文件包含11.3.1 標(biāo)準(zhǔn)頭文件11.3.2 自定義頭文件11.3.3 頭文件的重復(fù)包含11.4 多文件組織成工程11.4.1 建立工程文件11.4.2 運(yùn)行帶參數(shù)的工程11.5 程序調(diào)試11.5.1 程序調(diào)試步驟11.5.2 簡(jiǎn)單程序的調(diào)試11.5.3 復(fù)雜程序的調(diào)試習(xí)題11第12章 復(fù)雜數(shù)據(jù)類型12.1 結(jié)構(gòu)體12.1.1 結(jié)構(gòu)體類型的定義12.1.2 結(jié)構(gòu)體變量的聲明12.1.3 結(jié)構(gòu)體變量的賦值和訪問12.2 類型的重定義12.3 結(jié)構(gòu)體指針12.4 結(jié)構(gòu)體應(yīng)用舉例12.5 共用體12.6 位域12.7 枚舉類型習(xí)題12第13章 鏈表13.1 鏈表結(jié)點(diǎn)的類型定義13.2 鏈表的基本操作13.2.1 鏈表的建立13.2.2 鏈表的遍歷13.2.3 鏈表的插入13.2.4 鏈表的刪除13.3 對(duì)幾個(gè)賦值語句的理解13.4 鏈表應(yīng)用舉例習(xí)題13第14章 文件14.1 文件概述14.1.1 文件的概念14.1.2 文件的分類14.2 文件操作14.2.1 文件操作步驟14.2.2 文件操作函數(shù)14.2.3 文本文件的讀寫14.2.4 二進(jìn)制文件的讀寫14.3 文件操作舉例習(xí)題14第15章 綜合應(yīng)用實(shí)例15.1 需求分析15.1.1 項(xiàng)目功能15.1.2 構(gòu)建數(shù)據(jù)模型15.1.3 界面設(shè)計(jì)15.2 總體設(shè)計(jì)15.2.1 項(xiàng)目操作流程15.2.2 項(xiàng)目功能圖15.3 詳細(xì)設(shè)計(jì)15.4 編碼和調(diào)試15.4.1 界面代碼15.4.2 主要功能代碼15.4.3 主函數(shù)代碼15.5 測(cè)試第1章 程序設(shè)計(jì)預(yù)備知識(shí)1.1計(jì)算機(jī)系統(tǒng)的組成1.1.1 硬件系統(tǒng)1.1.2 軟件系統(tǒng)1.1.3 硬件和軟件的關(guān)系1.2 進(jìn)制及轉(zhuǎn)換1.2.1 十進(jìn)制數(shù)的表示1.2.2 二進(jìn)制數(shù)的表示1.2.3 十進(jìn)制與二進(jìn)制的轉(zhuǎn)換1.2.4 二進(jìn)制與其它進(jìn)制的轉(zhuǎn)換1.3 機(jī)器數(shù)的表示1.3.1 真值與機(jī)器數(shù)1.3.2 整數(shù)的原碼1.3.3 整數(shù)的反碼1.3.4 整數(shù)的補(bǔ)碼1.3.5 字符的表示1.4 二進(jìn)制數(shù)的運(yùn)算1.4.1 加減運(yùn)算1.4.2 位運(yùn)算習(xí)題 1第2章 C語言快速入門2.1 程序與計(jì)算機(jī)語言2.1.1 程序和算法2.1.2 計(jì)算機(jī)語言的發(fā)展2.1.3 計(jì)算機(jī)編程語言排行榜2.1.4 C語言的誕生及發(fā)展2.1.5 C語言的特點(diǎn)和應(yīng)用范圍2.2 C語言程序的基本構(gòu)成2.2.1 第一個(gè)C語言程序2.2.2 程序代碼解析2.2.3 C語言程序的基本構(gòu)成2.3 程序設(shè)計(jì)2.3.1 程序設(shè)計(jì)步驟2.3.2 C語言編程工具2.3.3 Code::Blocks簡(jiǎn)介習(xí)題2第3章 數(shù)據(jù)存儲(chǔ)和計(jì)算3.1 標(biāo)識(shí)符3.2 數(shù)據(jù)類型3.3 常量與變量3.3.1 常量3.3.2 變量3.4 數(shù)據(jù)的存儲(chǔ)3.4.1 數(shù)據(jù)的取值范圍3.4.2 數(shù)據(jù)在內(nèi)存中的存儲(chǔ)3.5 運(yùn)算符和表達(dá)式3.5.1 賦值運(yùn)算3.5.2 算術(shù)運(yùn)算3.5.3 關(guān)系運(yùn)算3.5.4 邏輯運(yùn)算3.5.5 位運(yùn)算3.5.6 復(fù)合賦值運(yùn)算3.5.7 自增自減運(yùn)算3.5.8 逗號(hào)運(yùn)算3.5.9 函數(shù)運(yùn)算3.5.10 運(yùn)算符的優(yōu)先級(jí)3.6 數(shù)據(jù)的類型轉(zhuǎn)換習(xí)題 3第4章 數(shù)據(jù)的輸入輸出4.1 scanf函數(shù)4.1.1 scanf函數(shù)的基本格式4.1.2 scanf函數(shù)的簡(jiǎn)單使用4.1.3 非法的鍵盤輸入4.1.4 scanf與fflush函數(shù)的配合使用4.2 printf函數(shù)4.2.1 printf函數(shù)的基本格式4.2.2 printf函數(shù)的簡(jiǎn)單使用4.2.3 printf函數(shù)的復(fù)雜使用4.3 字符的輸入輸出4.3.1 轉(zhuǎn)義字符的表示4.3.2 字符輸入輸出的專用函數(shù)習(xí)題4第5章 程序結(jié)構(gòu)和算法5.1 程序的控制結(jié)構(gòu)5.2 算法的描述方式5.3 算法描述舉例5.3.1 順序結(jié)構(gòu)的算法描述5.3.2 選擇結(jié)構(gòu)的算法描述5.3.3 循環(huán)結(jié)構(gòu)的算法描述習(xí)題5 第6章 選擇結(jié)構(gòu)6.1 if-else語句6.1.1 單分支if語句6.1.2 雙分支if語句6.1.3 復(fù)合語句6.2 選擇結(jié)構(gòu)的嵌套6.2.1 if的嵌套6.2.2 else的嵌套6.2.3 else與if的匹配6.3 條件表達(dá)式6.4 switch-case語句習(xí)題6第7章 循環(huán)結(jié)構(gòu)7.1 while循環(huán)7.2 do-while循環(huán)7.3 for循環(huán)7.4 goto語句7.5 多重循環(huán)7.6 循環(huán)應(yīng)用舉例7.6.1 級(jí)數(shù)計(jì)算7.6.2 枚舉計(jì)算7.6.3 迭代計(jì)算7.6.4 特殊圖形打印7.6.5 文本菜單設(shè)計(jì)習(xí)題7第8章 數(shù)組8.1 一維數(shù)組的概念8.1.1 一維數(shù)組的定義8.1.2 一維數(shù)組的地址8.1.3 一維數(shù)組的訪問8.1.4 一維數(shù)組的基本操作8.2 一維數(shù)組應(yīng)用舉例8.2.1 集合運(yùn)算8.2.2 排序算法8.2.3 篩選法8.3 字符數(shù)組與字符串8.3.1 什么是字符串8.3.2 字符串應(yīng)用舉例8.4 二維數(shù)組的概念8.5 二維數(shù)組應(yīng)用舉例習(xí)題 8第9章 指針9.1 內(nèi)存地址與指針9.2 指針的定義與運(yùn)算9.2.1 指針變量的定義9.2.2 空指針與空類型指針9.2.3 指針運(yùn)算9.3 指針與數(shù)組9.3.1 指針與一維數(shù)組9.3.2 指針與字符串9.3.3 指針與二維數(shù)組9.4 指針數(shù)組9.5 指向數(shù)組的指針習(xí)題 9第10章 函數(shù)10.1 函數(shù)的聲明和定義10.1.1 函數(shù)的聲明10.1.2 函數(shù)的定義10.2 函數(shù)的調(diào)用10.3 函數(shù)的參數(shù)和返回值10.3.1 函數(shù)參數(shù)的傳遞10.3.2 函數(shù)的返回值10.3.3 指針作函數(shù)參數(shù)10.3.4 帶參數(shù)的main函數(shù)10.4 常用庫函數(shù)介紹10.4.1 字符函數(shù)10.4.2 字符串函數(shù)10.4.3 字符串函數(shù)的實(shí)現(xiàn)10.4.4 類型轉(zhuǎn)換函數(shù)10.5 遞歸10.5.1 什么是遞歸10.5.2 遞歸舉例10.6 變量的作用域和存儲(chǔ)類型10.6.1 變量的作用域10.6.2 變量的存儲(chǔ)類型10.7 指向函數(shù)的指針習(xí)題10第11章 工程和程序調(diào)試11.1 宏定義11.1.1 不帶參數(shù)的宏定義11.1.2 帶參數(shù)的宏定義11.2 條件編譯11.3 文件包含11.3.1 標(biāo)準(zhǔn)頭文件11.3.2 自定義頭文件11.3.3 頭文件的重復(fù)包含11.4 多文件組織成工程11.4.1 建立工程文件11.4.2 運(yùn)行帶參數(shù)的工程11.5 程序調(diào)試11.5.1 程序調(diào)試步驟11.5.2 簡(jiǎn)單程序的調(diào)試11.5.3 復(fù)雜程序的調(diào)試習(xí)題11第12章 復(fù)雜數(shù)據(jù)類型12.1 結(jié)構(gòu)體12.1.1 結(jié)構(gòu)體類型的定義12.1.2 結(jié)構(gòu)體變量的聲明12.1.3 結(jié)構(gòu)體變量的賦值和訪問12.2 類型的重定義12.3 結(jié)構(gòu)體指針12.4 結(jié)構(gòu)體應(yīng)用舉例12.5 共用體12.6 位域12.7 枚舉類型習(xí)題12第13章 鏈表13.1 鏈表結(jié)點(diǎn)的類型定義13.2 鏈表的基本操作13.2.1 鏈表的建立13.2.2 鏈表的遍歷13.2.3 鏈表的插入13.2.4 鏈表的刪除13.3 對(duì)幾個(gè)賦值語句的理解13.4 鏈表應(yīng)用舉例習(xí)題13第14章 文件14.1 文件概述14.1.1 文件的概念14.1.2 文件的分類14.2 文件操作14.2.1 文件操作步驟14.2.2 文件操作函數(shù)14.2.3 文本文件的讀寫14.2.4 二進(jìn)制文件的讀寫14.3 文件操作舉例習(xí)題14第15章 綜合應(yīng)用實(shí)例15.1 需求分析15.1.1 項(xiàng)目功能15.1.2 構(gòu)建數(shù)據(jù)模型15.1.3 界面設(shè)計(jì)15.2 總體設(shè)計(jì)15.2.1 項(xiàng)目操作流程15.2.2 項(xiàng)目功能圖15.3 詳細(xì)設(shè)計(jì)15.4 編碼和調(diào)試15.4.1 界面代碼15.4.2 主要功能代碼15.4.3 主函數(shù)代碼15.5 測(cè)試