本書是一本兼具趣味性和實用性的C程序設計教材。全書由13章組成,內容包括:為什么要學C語言,C數據類型、簡單的算術運算符和表達式,鍵盤輸入和屏幕輸出,選擇控制結構,循環控制結構,函數,數組,指針,字符串,指針和數組,結構體與共用體,文件操作。 本書以應用為背景,面向編程實踐和問題求解能力的訓練,從實際問題出發,在案例的不斷深化中逐步引出知識點,形成“程序設計方法由自底向上到自頂向下”和“數據結構由簡單到復雜”的兩條邏輯清晰的主線。案例內容緊密結合實踐,舉一反三,融會貫通,尤其側重錯誤案例的分析和講解,在任務驅動下,由淺入深、啟發引導讀者循序漸進地編寫規模逐漸加大的程序,讓讀者在不知不覺中逐步加深對C語言程序設計方法的了解和掌握。本教材配有多媒體課件、例題和習題源代碼以及基于C/S結構的編程題考試自動評分系統等教學資源,免費向任課教師提供。 本書適合作為高等學校各專業的C語言程序設計課程教材,也可作為從事計算機相關工作的科技人員、計算機愛好者及各類自學人員參考。
第1章 為什么要學C語言
1.1 引言
1.2 游戲、黑客和C語言
1.3 c語言,不老的傳說
1.4 c語言的愛與恨
1.5 c語言教給我們的事
1.6 什么是“編程”
1.7 本章小結
習題1
第2章 C數據類型
2.1 常量與變量
2.1.1 常量
2.1.2 變量
2.2 簡單的屏幕輸出
2.3 數據類型
2.4 如何計算變量或數據類型
所占內存空間的大小
2.5 變量的賦值和賦值運算符
2.6 本章擴充內容
2.7 本章知識點小結
2.8 本章常見錯誤小結
習題2
本章實驗題
第3章 簡單的算術運算和表達式
3.1 c運算符和表達式
3.1.1 算術運算符和表達式
3.1.2 復合的賦值運算符
3.1.3 增1和減l運算符
3.2 宏常量與宏替換
3.3 const常量
3.4 自動類型轉換與強制類型轉換運算符.
3.5 常用的標準數學函數
3.6 本章知識點小結
3.7 本章常見錯誤小結
習題3
本章實驗題
第4章 鍵盤輸入和屏幕輸出
4.1 單個字符的輸入/輸出
4.1.1 字符常量
4.1.2 字符的輸入/輸出
4.2 數據的格式化屏幕輸出
4.3 數據的格式化鍵盤輸入
4.4 本章擴充內容
4.5 本章知識點小結
4.6 本章常見錯誤小結
習題4
本章實驗題
第5章 選擇控制結構
5.1 生活中與計算機中的問題求解方法
5.2 算法的概念及其描述方法
5.2.1 算法的概念
5.2.2 算法的描述方法
5.3 關系運算符與關系表達式
5.4 用于單分支控制的條件語句
5.5 用于雙分支控制的條件語句
5.6 條件運算符和條件表達式
5.7 用于多分支控制的條件語句
5.8 用于多路選擇的switch語句
5.9 邏輯運算符和邏輯表達式
5.10 本章擴充內容
5.10.1 程序測試
5.10.2 對輸入非法字符的檢查與處理
5.10.3 位運算符
5.11 本章知識點小結
5.12 本章常見錯誤小結
習題5
本章實驗題
第6章 循環控制結構
6.1 循環控制結構與循環語句
6.2 計數控制的循環
6.3 嵌套循環
6.4 條件控制的循環
6.5 流程的轉移控制
6.5.1 goto語句
6.5.2 break語句
6.5.3 continue語句
6.5.4 窮舉法編程實例
6.6 本章擴充內容
6.6.1 結構化程序設計的核心思想
6.6.2 常用的程序調試與排錯方法
6.6.3 類型溢出
6.7 本章知識點小結
6.8 本章常見錯誤小結
習題6
本章實驗題
第7章 函數
7.1 分而治之與信息隱藏
7.2 函數的定義
7.2.1 函數的分類
7.2.2 函數的定義
7.3 向函數傳遞值和從函數返回值
7.3.1 函數調用
7.3.2 函數原型
7.3.3 函數封裝與防御性程序設計
7.3.4 函數設計的基本原則
7.4 函數的遞歸調用和遞歸函數
7.5 變量的作用域和存儲類型
7.5.1 變量的作用域
7.5.2 變量的存儲類型
7.6 模塊化程序設計
7.6.1 模塊分解的基本原則
7.6.2 自頇向下、逐步求精
7.6.3 模塊化程序設計實例
7.7 本章擴充內容
7.8 本章知識點小結
7.9 本章常見錯誤小結
習題7
本章實驗題
第8章 數組
8.1 一維數組的定義和初始化
8.2 二維數組的定義和初始化
8.3 向函數傳遞一維數組
8.4 排序和查找
8.5 向函數傳遞二維數組
8.6 本章知識點小結
8.7 本章常見錯誤小結
習題8
本章實驗題
第9章 指針
9.1 變量的內存地址
9.2 指針變量的定義和初始化
9.3 間接尋址運算符
9.4 按值調用與模擬按引用調用
9.5 用指針變量作函數參數的程序實例
9.6 函數指針及其應用
9.7 本章知識點小結
9.8 本章常見錯誤小結
習題9
本章實驗題
第10章 字符串
10.1 字符串常量
10.2 字符串的存儲
10.3 字符指針
lO.4 字符串的訪問和輸入/輸出
10.4.1 如何訪問字符串中的單個字符
10.4.2 字符串的輸入/輸出
10.5 字符串處理函數
10.6 向函數傳遞字符串
10.7 從函數返回字符串指針
10.8 本章擴充內容
10.9 本章知識點小結
10.1 0本章常見錯誤小結
習題10
本章實驗題
第11章指針和數組
11.1 指針和一維數組間的關系
11.2 指針和二維數組間的關系
11.3 指針數組及其應用
11.3.1 指針數組用于表示多個字符串
11.3.2 指針數組用于表示命令行參數
11.4 動態數組
11.4.1 C程序的內存映像
11.4.2 動態內存分配函數
11.4.3 長度可變的一維動態數組
11.4.4 長度可變的二維動態數組
11.5 本章擴充內容
11.5.1 常見的內存錯誤及其對策
11.5.2 緩沖區溢出攻擊
11.6 本章知識點小結
11.7 本章常見錯誤小結
習題11
本章實驗題
第12章 結構體和共用體
12.1 從基本數據類型到抽象數據類型
12.2 結構體的定義
12.2.1 為什么要定義結構體類型
12.2.2 結構體變量的定義
12.2.3 用typedef定義數據類型
12.2.4 結構體變量的初始化
12.2.5 嵌套的結構體
12.2.6 結構體變量的引用
12.2.7 結構體所占內存的字節數
12.3 結構體數組的定義和初始化
12.3.1 結構體數組的定義
12.3.2 結構體數組的初始化
12.4 結構體指針的定義和初始化
12.4.1 指向結構體變量的指針
12.4.2 指向結構體數組的指針
12.5 向函數傳遞結構體
12.6 共用體
12.7 枚舉數據類型
12.8 動態數據結構——單向鏈表
12.8.1 問題的提出
12.8.2 鏈表的定義
12.8.3 單向鏈表的建立
12.8.4 單向鏈表的刪除操作
12.8.5 單向鏈表的插入操作
12.9 本章知識點小結
12.10 本章常見錯誤小結
習題12
本章實驗題
第13章 文件操作
13.1 二進制文件和文本文件
13.2 文件的打開和關閉
13.3 按字符讀寫文件
13.4 按格式讀寫文件
13.5 按數據塊讀寫文件
13.6 本章擴充內容
13.6.1 文件的隨機讀寫
13.6.2 標準輸入/輸出重定向
13.7 本章知識點小結
13.8 本章常見錯誤小結
習題13
本章實驗題
附錄A C關鍵字
附錄B Visual C++下基本數據類型的
取值范圍
附錄C C運算符的優先級與結合性
附錄D 常用字符與ASCII值對照表
附錄E 常用的ANSI C標準庫函數
參考文獻