本書以“理論夠用重在實踐”為出發(fā)點,融入了流行的CDIO工程理念,采用了案例式、啟發(fā)式、項目式的教學(xué)模式,按照講、仿、練、思、拓的步驟組織教學(xué),由淺入深地對C語言程序設(shè)計內(nèi)容進行了講述,努力實現(xiàn)“零基礎(chǔ)”入門、模仿應(yīng)用、引導(dǎo)思考、啟迪創(chuàng)新。是一本兼具工具性、實用性和趣味性的C語言程序設(shè)計教材。全書共分15章,內(nèi)容包括:程序設(shè)計預(yù)備知識、C語言快速入門、數(shù)據(jù)存儲和計算、數(shù)據(jù)輸入輸出、程序結(jié)構(gòu)和算法、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、指針、函數(shù)、工程和程序調(diào)試、結(jié)構(gòu)體和共用體、鏈表、文件、綜合應(yīng)用舉例(課程設(shè)計案例)。書中所有例子均在Code::Blocks16.01下調(diào)試通過。本書適合作為高等學(xué)校C語言程序設(shè)計課程的教材,也可以作為計算機等級考試的輔導(dǎo)教材或參考用書。
本書是一部教學(xué)資源非常豐富的數(shù)字化新形態(tài)教材
C 語言是當(dāng)今最為流行的程序設(shè)計語言之一,一直穩(wěn)居計算機編程語言排行榜的前三甲,是各高校廣泛開設(shè)的計算機程序設(shè)計語言之一,也是全國計算機等級考試、職業(yè)資格認定、技能大賽等可選計算機語言,學(xué)習(xí)和掌握C語言更是計算機類專業(yè)的必然選擇和必備技能。程序設(shè)計是一種理論和實踐并重的技能,存在著數(shù)學(xué)思維向計算機思維的轉(zhuǎn)變、向算法設(shè)計的轉(zhuǎn)變、向編碼的轉(zhuǎn)變、向調(diào)試技能的轉(zhuǎn)變,因此初學(xué)者普遍感覺入門難、實驗難、實踐應(yīng)用更難。為突破這些困難,本書秉持理論夠用、重在應(yīng)用的原則來組織教學(xué)內(nèi)容,用案例貫穿于全書。通過對案例的問題分析、算法設(shè)計、代碼編寫和注釋、程序運行、目的、注意事項、技巧、思考和拓展等這一系列遞進式教學(xué)過程的實施,達到用理論指導(dǎo)實踐、用案例來驗證理論、用案例來引導(dǎo)應(yīng)用、用思考和引導(dǎo)來啟迪拓展應(yīng)用的目的。本書具有如下鮮明特色:在指導(dǎo)思想上,以應(yīng)用為背景,面向計算思維和編程技能的引導(dǎo)和訓(xùn)練。通過案例將知識點的應(yīng)用和原理緊密結(jié)合,做到實際應(yīng)用和原理并舉。在內(nèi)容的組織上,每章內(nèi)容按照學(xué)習(xí)目標、知識點導(dǎo)圖、難點提示、理論和案例、習(xí)題、實驗的方式進行歸類組織,結(jié)構(gòu)更為合理。在例題講述上,按照問題分析、算法思路、程序編碼和注釋、程序運行結(jié)果、程序解析、本例目的、注意事項、技巧、思考等步驟進行詳細講述,嚴格遵循認知規(guī)律。在習(xí)題和實驗的選取上,以鞏固基本知識點和強化程序設(shè)計能力為目的,進行多樣化的題型設(shè)計(題型主要有選擇題、填空題、改錯題、編程題等),還收錄了部分競賽試題。本書的最后一章以簡易的學(xué)生成績管理系統(tǒng)為例,按照軟件工程的模式講述了一個較大程序(項目)的設(shè)計和實現(xiàn)過程,可作為課程設(shè)計的范例。本書配套制作精美的PPT課件、全部例題的源代碼、習(xí)題和實驗的解析及參考答案、微視頻。全書由熊啟軍設(shè)計、組織、編寫和錄制。本書承湖北文理學(xué)院協(xié)同育人專項經(jīng)費資助,得到了中國鐵道出版社的大力支持,在此一并表示衷心感謝。
熊啟軍,副教授,畢業(yè)于華中師范大學(xué)計算機系,畢業(yè)后一直從事程序設(shè)計類課程的教學(xué)及研究并任職于湖北文理學(xué)院數(shù)學(xué)與計算機科學(xué)學(xué)院,從事一線教育20余年,教授C語言程序設(shè)計課程15年,主持并結(jié)題2項省級課題,以第一作者發(fā)表教學(xué)研究論文10余篇。
第1章 程序設(shè)計預(yù)備知識1.1計算機系統(tǒng)的組成1.1.1 硬件系統(tǒng)1.1.2 軟件系統(tǒng)1.1.3 硬件和軟件的關(guān)系1.2 進制及轉(zhuǎn)換1.2.1 十進制數(shù)的表示1.2.2 二進制數(shù)的表示1.2.3 十進制與二進制的轉(zhuǎn)換1.2.4 二進制與其它進制的轉(zhuǎn)換1.3 機器數(shù)的表示1.3.1 真值與機器數(shù)1.3.2 整數(shù)的原碼1.3.3 整數(shù)的反碼1.3.4 整數(shù)的補碼1.3.5 字符的表示1.4 二進制數(shù)的運算1.4.1 加減運算1.4.2 位運算習(xí)題 1第2章 C語言快速入門2.1 程序與計算機語言2.1.1 程序和算法2.1.2 計算機語言的發(fā)展2.1.3 計算機編程語言排行榜2.1.4 C語言的誕生及發(fā)展2.1.5 C語言的特點和應(yīng)用范圍2.2 C語言程序的基本構(gòu)成2.2.1 第一個C語言程序2.2.2 程序代碼解析2.2.3 C語言程序的基本構(gòu)成2.3 程序設(shè)計2.3.1 程序設(shè)計步驟2.3.2 C語言編程工具2.3.3 Code::Blocks簡介習(xí)題2第3章 數(shù)據(jù)存儲和計算3.1 標識符3.2 數(shù)據(jù)類型3.3 常量與變量3.3.1 常量3.3.2 變量3.4 數(shù)據(jù)的存儲3.4.1 數(shù)據(jù)的取值范圍3.4.2 數(shù)據(jù)在內(nèi)存中的存儲3.5 運算符和表達式3.5.1 賦值運算3.5.2 算術(shù)運算3.5.3 關(guān)系運算3.5.4 邏輯運算3.5.5 位運算3.5.6 復(fù)合賦值運算3.5.7 自增自減運算3.5.8 逗號運算3.5.9 函數(shù)運算3.5.10 運算符的優(yōu)先級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ù)的簡單使用4.1.3 非法的鍵盤輸入4.1.4 scanf與fflush函數(shù)的配合使用4.2 printf函數(shù)4.2.1 printf函數(shù)的基本格式4.2.2 printf函數(shù)的簡單使用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 條件表達式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 級數(shù)計算7.6.2 枚舉計算7.6.3 迭代計算7.6.4 特殊圖形打印7.6.5 文本菜單設(shè)計習(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 集合運算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 指針的定義與運算9.2.1 指針變量的定義9.2.2 空指針與空類型指針9.2.3 指針運算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ù)的實現(xiàn)10.4.4 類型轉(zhuǎn)換函數(shù)10.5 遞歸10.5.1 什么是遞歸10.5.2 遞歸舉例10.6 變量的作用域和存儲類型10.6.1 變量的作用域10.6.2 變量的存儲類型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 標準頭文件11.3.2 自定義頭文件11.3.3 頭文件的重復(fù)包含11.4 多文件組織成工程11.4.1 建立工程文件11.4.2 運行帶參數(shù)的工程11.5 程序調(diào)試11.5.1 程序調(diào)試步驟11.5.2 簡單程序的調(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é)點的類型定義13.2 鏈表的基本操作13.2.1 鏈表的建立13.2.2 鏈表的遍歷13.2.3 鏈表的插入13.2.4 鏈表的刪除13.3 對幾個賦值語句的理解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 二進制文件的讀寫14.3 文件操作舉例習(xí)題14第15章 綜合應(yīng)用實例15.1 需求分析15.1.1 項目功能15.1.2 構(gòu)建數(shù)據(jù)模型15.1.3 界面設(shè)計15.2 總體設(shè)計15.2.1 項目操作流程15.2.2 項目功能圖15.3 詳細設(shè)計15.4 編碼和調(diào)試15.4.1 界面代碼15.4.2 主要功能代碼15.4.3 主函數(shù)代碼15.5 測試第1章 程序設(shè)計預(yù)備知識1.1計算機系統(tǒng)的組成1.1.1 硬件系統(tǒng)1.1.2 軟件系統(tǒng)1.1.3 硬件和軟件的關(guān)系1.2 進制及轉(zhuǎn)換1.2.1 十進制數(shù)的表示1.2.2 二進制數(shù)的表示1.2.3 十進制與二進制的轉(zhuǎn)換1.2.4 二進制與其它進制的轉(zhuǎn)換1.3 機器數(shù)的表示1.3.1 真值與機器數(shù)1.3.2 整數(shù)的原碼1.3.3 整數(shù)的反碼1.3.4 整數(shù)的補碼1.3.5 字符的表示1.4 二進制數(shù)的運算1.4.1 加減運算1.4.2 位運算習(xí)題 1第2章 C語言快速入門2.1 程序與計算機語言2.1.1 程序和算法2.1.2 計算機語言的發(fā)展2.1.3 計算機編程語言排行榜2.1.4 C語言的誕生及發(fā)展2.1.5 C語言的特點和應(yīng)用范圍2.2 C語言程序的基本構(gòu)成2.2.1 第一個C語言程序2.2.2 程序代碼解析2.2.3 C語言程序的基本構(gòu)成2.3 程序設(shè)計2.3.1 程序設(shè)計步驟2.3.2 C語言編程工具2.3.3 Code::Blocks簡介習(xí)題2第3章 數(shù)據(jù)存儲和計算3.1 標識符3.2 數(shù)據(jù)類型3.3 常量與變量3.3.1 常量3.3.2 變量3.4 數(shù)據(jù)的存儲3.4.1 數(shù)據(jù)的取值范圍3.4.2 數(shù)據(jù)在內(nèi)存中的存儲3.5 運算符和表達式3.5.1 賦值運算3.5.2 算術(shù)運算3.5.3 關(guān)系運算3.5.4 邏輯運算3.5.5 位運算3.5.6 復(fù)合賦值運算3.5.7 自增自減運算3.5.8 逗號運算3.5.9 函數(shù)運算3.5.10 運算符的優(yōu)先級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ù)的簡單使用4.1.3 非法的鍵盤輸入4.1.4 scanf與fflush函數(shù)的配合使用4.2 printf函數(shù)4.2.1 printf函數(shù)的基本格式4.2.2 printf函數(shù)的簡單使用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 條件表達式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 級數(shù)計算7.6.2 枚舉計算7.6.3 迭代計算7.6.4 特殊圖形打印7.6.5 文本菜單設(shè)計習(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 集合運算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 指針的定義與運算9.2.1 指針變量的定義9.2.2 空指針與空類型指針9.2.3 指針運算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ù)的實現(xiàn)10.4.4 類型轉(zhuǎn)換函數(shù)10.5 遞歸10.5.1 什么是遞歸10.5.2 遞歸舉例10.6 變量的作用域和存儲類型10.6.1 變量的作用域10.6.2 變量的存儲類型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 標準頭文件11.3.2 自定義頭文件11.3.3 頭文件的重復(fù)包含11.4 多文件組織成工程11.4.1 建立工程文件11.4.2 運行帶參數(shù)的工程11.5 程序調(diào)試11.5.1 程序調(diào)試步驟11.5.2 簡單程序的調(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é)點的類型定義13.2 鏈表的基本操作13.2.1 鏈表的建立13.2.2 鏈表的遍歷13.2.3 鏈表的插入13.2.4 鏈表的刪除13.3 對幾個賦值語句的理解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 二進制文件的讀寫14.3 文件操作舉例習(xí)題14第15章 綜合應(yīng)用實例15.1 需求分析15.1.1 項目功能15.1.2 構(gòu)建數(shù)據(jù)模型15.1.3 界面設(shè)計15.2 總體設(shè)計15.2.1 項目操作流程15.2.2 項目功能圖15.3 詳細設(shè)計15.4 編碼和調(diào)試15.4.1 界面代碼15.4.2 主要功能代碼15.4.3 主函數(shù)代碼15.5 測試