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