江西師范大學《高級語言程序設計》課程是江西省高等學校精品資源共享課程,本教材內容已用講義形式經過3屆學生的使用,達到了很好的教學效果。 本書特色: (1)理論聯系實際,強化計算思維能力培養。 語言語法介紹以夠用、實用和應用為原則,將C語言的語法融入到問題求題中;從實際應用案例中抽取教學要素,重點強化模塊化程序設計方法與基本算法的學習。全書從數據組織的維度介紹了基本數據類型以及數組、指針和結構體等構造數據類型在數據處理中的應用;從算法維度將“迭代”、“窮舉”、“遞歸”、“分治”、“檢索”與“排序”等算法融入到實際應用問題的求解過程。讓讀者在學習的過程中潛移默化地提高計算思維能力。 (2)案例選取貼近生活,有助于提高學習興趣。 全書通過貼近生活的案例來分析問題的本質,如程序設計語言為何要區分不同的數據類型,如何在程序設計中選擇正確的數據類型,如何存儲大規模數據等,書中用了通俗易懂的例子來進行說明。同時,從讀者熟悉的應用軟件中抽取教學案例,如網銀認證的驗證碼,信息加密、計算器的進位制轉換,手機通訊錄查詢等案例都貼近生活,突出了應用導向,有助于提高學生學習興趣。 (3)內容呈現直觀、形象,知識點講解深入淺出,通俗易懂。 全書以圖文并茂的方式深入剖析相關知識的底層原理,使讀者對課程難點做到知其然,知其所以然。例如,通過遞歸調用圖來說明遞歸程序的執行原理;通過詳細的圖示來說明指針、參數傳遞、鏈表等難點,并拓展了指針在生成動態不規則二維數組等方面的高級應用,這可為學生今后深入理解Java等新型程序設計語言的引用數據類型奠定基礎。 (4)內容編排體現“以學為中心”的教學思想。 隨著大規模在線教育課程(MOOC)和微課等新型教學媒體的出現,學生的學習呈現碎片化學習特點。本書在內容組織上進行了全新設計,將精選的相關練習與實驗穿插到章節中間,使讀者在學習完相關內容后能夠及時鞏固并拓展所學知識,做到舉一反三,滿足“翻轉課堂”等新型教學范式的教學需求。全書還以小貼士的形式提供了大量的相關拓展知識,以豐富讀者的視野。 (5)C標準與時俱進,程序代碼規范統一。 引入部分C99與C11標準,提升編寫C語言程序的靈活性。例如,引入C99的bool類型,使邏輯表達更加簡潔,符合現代程序設計的規范。從第五章開始,大部分問題求解都以 江西師范大學《高級語言程序設計》課程是江西省高等學校精品資源共享課程,本教材內容已用講義形式經過3屆學生的使用,達到了很好的教學效果。 本書特色: (1)理論聯系實際,強化計算思維能力培養。 語言語法介紹以夠用、實用和應用為原則,將C語言的語法融入到問題求題中;從實際應用案例中抽取教學要素,重點強化模塊化程序設計方法與基本算法的學習。全書從數據組織的維度介紹了基本數據類型以及數組、指針和結構體等構造數據類型在數據處理中的應用;從算法維度將“迭代”、“窮舉”、“遞歸”、“分治”、“檢索”與“排序”等算法融入到實際應用問題的求解過程。讓讀者在學習的過程中潛移默化地提高計算思維能力。 (2)案例選取貼近生活,有助于提高學習興趣。 全書通過貼近生活的案例來分析問題的本質,如程序設計語言為何要區分不同的數據類型,如何在程序設計中選擇正確的數據類型,如何存儲大規模數據等,書中用了通俗易懂的例子來進行說明。同時,從讀者熟悉的應用軟件中抽取教學案例,如網銀認證的驗證碼,信息加密、計算器的進位制轉換,手機通訊錄查詢等案例都貼近生活,突出了應用導向,有助于提高學生學習興趣。 (3)內容呈現直觀、形象,知識點講解深入淺出,通俗易懂。 全書以圖文并茂的方式深入剖析相關知識的底層原理,使讀者對課程難點做到知其然,知其所以然。例如,通過遞歸調用圖來說明遞歸程序的執行原理;通過詳細的圖示來說明指針、參數傳遞、鏈表等難點,并拓展了指針在生成動態不規則二維數組等方面的高級應用,這可為學生今后深入理解Java等新型程序設計語言的引用數據類型奠定基礎。 (4)內容編排體現“以學為中心”的教學思想。 隨著大規模在線教育課程(MOOC)和微課等新型教學媒體的出現,學生的學習呈現碎片化學習特點。本書在內容組織上進行了全新設計,將精選的相關練習與實驗穿插到章節中間,使讀者在學習完相關內容后能夠及時鞏固并拓展所學知識,做到舉一反三,滿足“翻轉課堂”等新型教學范式的教學需求。全書還以小貼士的形式提供了大量的相關拓展知識,以豐富讀者的視野。 (5)C標準與時俱進,程序代碼規范統一。 引入部分C99與C11標準,提升編寫C語言程序的靈活性。例如,引入C99的bool類型,使邏輯表達更加簡潔,符合現代程序設計的規范。從第五章開始,大部分問題求解都以模塊化的方式進行設計,有助于引導學生掌握模塊化程序設計的思想。書中所有程序源碼均通過了調試。 (6)注重
揭安全,男,畢業于江西師范大學計算機系,獲計算機軟件與理論碩士學位,1997年參加工作,現任江西師大計算機學院副教授,計算機科學系系主任,2013年起低職高聘教授。主要承擔《高級語言程序設計》、《數據結構》、《面向對象程序設計》等課程的教學工作,三門課程均被評為江西省高等學校精品資源共享課程。制作的《高級語言程序設計》教學課件獲得江西省高校第四屆多媒體課件大賽一等獎。獲得江西省模范教師,江西省師德標兵,江西省高校中青年骨干教師,江西師范大學教學名師等榮譽稱號。2014年3月~2014年8月California State University Fullerton 訪學。
第1章 程序設計引論
1.1 計算科學與問題求解
1.2 程序與程序設計
1.2.1 程序
1.2.2 程序設計
1.3 程序設計語言
1.3.1 程序設計語言分類
1.3.2 程序的執行方式
1.4 C語言簡介
1.5 C語言程序開發工具
1.6 C語言程序開發步驟
本章小結
實驗一
第2章 數據類型、運算符與表達式
2.1 C程序基本結構
2.2 C程序中常見的符號
2.3 數據類型
2.4 常量
2.4.1 整型常量
2.4.2 實型常量
2.4.3 字符常量
2.4.4 字符串常量
2.4.5 宏常量
練習2.1
2.5 變量
2.5.1 變量的聲明
2.5.2 變量初始化
2.5.3 變量的訪問與使用
練習2.2
2.6 運算符與表達式
2.6.1 算術運算符
2.6.2 運算符的優先級與結合性
2.6.3 關系運算符
2.6.4 復合賦值運算符
2.6.5 ++和--運算符
2.7 表達式的類型轉換
2.7.1 賦值表達式的類型轉換
2.7.2 強制類型轉換
2.8 const常量
練習2.3
本章小結
實驗二
第3章 算法與簡單C程序設計
3.1 C語句
3.2 C程序輸入/輸出操作的實現
3.2.1 字符輸入/輸出
3.2.2 格式輸入/輸出
練習3.1
3.3 算法
3.3.1 問題求解過程中算法的作用
3.3.2 算法的特點
3.3.3 算法的描述
3.4 簡單程序設計舉例
練習3.2
本章小結
實驗三
第4章 程序基本控制結構
4.1 邏輯運算符與邏輯表達式
4.1.1 邏輯運算符
4.1.2 邏輯表達式
練習4.1
4.2 選擇控制結構
4.2.1 if單分支語句
4.2.2 if雙分支語句
4.2.3 if多分支語句
4.3 條件表達式
練習4.2
4.4 switch多分支語句
練習4.3
4.5 循環控制語句
4.5.1 while循環語句
4.5.2 for循環語句
4.5.3 do while循環語句
練習4.4
4.6 程序跳轉語句
4.6.1 break語句
4.6.2 continue 語句
4.6.3 goto語句
練習4.5
4.7 多重循環及其應用
練習4.6
4.8 循環程序設計方法
4.8.1 迭代法
4.8.2 窮舉法
本章小結
實驗四
第5章 函數及其應用
5.1 C函數概述
5.2 C函數的定義和調用
5.2.1 C函數的定義
5.2.2 return語句
5.2.3 函數調用
5.2.4 函數聲明
練習5.1
5.3 引用庫函數與自定義函數
5.3.1 庫函數分類
5.3.1 #include指令
5.4 函數參數傳遞方式
練習5.2
5.5 函數嵌套調用
5.5.1 嵌套調用的概念
5.5.2 模塊化設計基本方法
練習5.3
5.6 遞歸函數及其應用
5.6.1 遞歸的概念
5.6.2 遞歸程序分析
練習5.4
5.6.3 遞歸程序應用
練習5.5
5.7 變量的作用域與生存期
5.7.1 局部變量
5.7.2 全局變量
5.7.3 變量的存儲類型
練習5.6
5.8 函數綜合應用--趣味算術游戲
練習5.7
本章小結
實驗五
第6章 數組及其應用
6.1 一維數組
6.1.1 一維數組的定義與引用
6.1.2 一維數組的初始化
練習6.1
6.2 向函數傳遞一維數組
練習6.2
6.3 基于數組的常用算法及其應用
6.3.1 順序查找
6.3.2 數據刪除
6.3.2 數據插入
6.3.4 尋找最大值
練習6.3
6.3.5 數據排序
6.3.6 數據倒置
6.3.7 二分查找
6.3.8 一維數組應用實例
練習6.4
6.4 二維數組
6.4.1 二維數組的定義、引用及初始化
6.4.2 二維數組應用實例
練習6.5
6.5 向函數傳遞二維數組
練習6.6
6.6 字符串及字符數組
6.6.1 字符串
6.6.2 字符數組的初始化
6.6.3 字符數組的輸入/輸出
6.6.4 字符串處理函數
6.6.5 字符串應用實例
練習6.7
6.7 基于數組的遞歸算法
練習6.8
本章小結
實驗六
第7章 指針及其應用
7.1 指針的本質
7.2 指針變量的定義與初始化
7.3 間接尋址運算符
練習7.1
7.4 指針與函數
7.4.1 傳值調用與傳地址調用
7.4.2 指針作函數參數的應用實例
練習7.2
7.5 指針和一維數組
7.5.1 指針的算術運算與關系運算
7.5.2 應用指針訪問一維數組
7.5.3 深入理解一維數組作函數參數的本質
練習7.3
7.6 字符指針
7.6.1 使用字符指針指示字符串常量
7.6.2 利用字符指針訪問字符串變量
練習7.4
7.7 指針和二維數組
7.7.1 列指針
7.7.2 行指針
7.7.3 深入理解二維數組作函數參數的本質*
7.7.4 巧用列指針設計通用二維數組處理函數*
練習7.5
7.8 指針的高級應用
7.8.1 指針數組其應用
7.8.2 動態內存分配
7.8.3 二級指針*
7.8.4 指向函數的指針及其應用*
練習7.6
本章小結
實驗七
第8章 結構體及其應用
8.1 為何要用結構體
8.2 結構體類型與結構體變量
8.2.1 結構體類型的聲明
8.2.2 結構體變量的定義
8.2.3 對結構體變量的操作
8.2.4 結構體變量的初始化
練習8.1
8.3 指向結構體的指針
練習8.2
8.4 向函數傳遞結構體
8.4.1 值傳遞
8.4.2 地址傳遞
練習8.3
8.5 結構體數組
8.5.1 結構體數組的定義
8.5.2 結構體數組的初始化與引用
8.5.3 結構體數組的應用
練習8.4
8.6 動態數據結構--單鏈表
8.6.1 單鏈表的定義
8.6.2 在單鏈表插入新結點
8.6.3 建立單鏈表
8.6.4 單鏈表的遍歷
8.6.5 在單鏈表中查找結點
8.6.5 在單鏈表中刪除結點
練習8.5
本章小結
實驗八
第9章 文件與數據存儲
9.1 引例--學生文件信息的創建
9.2 文件概述
9.2.1 流的概念
9.2.2 文件的分類
9.2.3 文件指針
9.3 文件的打開和關閉
9.3.1 文件的打開
9.3.2 文件的關閉
練習9.1
9.4 文件檢測函數
9.4.1 檢測文件末尾函數
9.4.2 檢測出錯函數
9.5 文件的讀/寫操作
9.5.1 字符讀/寫函數
9.5.2 字符讀/寫函數應用實例
9.5.3 字符串讀/寫函數
9.5.4 字符串讀/寫函數應用實例
9.5.5 格式化讀/寫函數
9.5.6 格式化讀/寫函數應用實例
……
第10章C綜合性程序設計案例分析
附錄A C語言中的關鍵字
附錄B 常用字符與ASCH代碼對照表
附錄C運算符的優先級和結合性
附錄D常用的C語言庫函數
附錄E 全國計算機等級考試二級C語言程序設計考試大綱
附錄F visual C++6.0使用指南
參考文獻