版權信息
緻本書讀者
前言
第1章 程序設計ABC
1.1 計算機與人
1.2 計算機與程序設計語言
1.3 程序設計語言的故事
1.4 C語言的故事
1.5 程序設計語言的工作原理
1.5.1 運行
1.5.2 內存
1.6 本章小結
習題1
第2章 數據類型、運算符與錶達式
2.1 一個簡單的C程序例子
2.2 C程序常見符號分類
2.3 數據類型
2.3.1 為什麼引入數據類型
2.3.2 從基本數據類型到抽象數據類型
2.3.3 類型修飾符
2.3.4 標識符命名
2.4 常量
2.4.1 整型常量
2.4.2 實型常量
2.4.3 字符常量
2.4.4 字符串常量
2.4.5 宏常量
2.4.6 枚舉常量
2.5 變量
2.5.1 變量的定義與初始化
2.5.2 const類型修飾符
2.5.3 使用變量時的注意事項
2.6 常用運算符及錶達式
2.6.1 運算符的優先級與結閤性
2.6.2 算術運算符
2.6.3 關係運算符
2.6.4 邏輯運算符
2.6.5 賦值運算符
2.6.6 增1和減1運算符
2.6.7 類型強製轉換運算符
2.6.8 位運算符
2.6.9 逗號運算符
2.7 賦值和錶達式中的類型轉換
2.8 本章小結
習題2
第3章 鍵盤輸入與屏幕輸齣
3.1 C語句分類
3.2 錶達式語句
3.3 復閤語句和空語句
3.4 基本的輸入/輸齣操作
3.4.1 字符輸入/輸齣
3.4.2 格式輸入/輸齣
*3.4.3 使用函數scanf()時需要注意的問題
3.5 本章小結
習題3
第4章 程序的控製結構
4.1 算法及其描述方法
4.1.1 算法的概念
4.1.2 算法的描述方法
4.2 順序結構
4.2.1 順序結構的流程圖錶示
4.2.2 應用程序舉例
4.3 選擇結構
4.3.1 應用場閤
4.3.2 選擇結構的流程圖錶示
4.3.3 條件語句
4.3.4 開關語句
4.4 循環結構
4.4.1 應用場閤
4.4.2 循環結構的流程圖錶示
4.4.3 循環語句
4.4.4 單重循環程序實例
4.4.5 嵌套循環及其程序實例
4.5 流程轉移控製語句
4.5.1 goto語句
4.5.2 break與continue語句
4.5.3 程序實例
*4.6 程序調試與排錯
4.6.1 程序中常見的齣錯原因
4.6.2 程序調試與排錯的基本方法
4.6.3 使用getchar()需要注意的問題
*4.7 結構化程序設計方法簡介
4.7.1 關於goto論戰
4.7.2 結構化程序設計的核心思想
4.7.3“自頂嚮下、逐步求精”的程序設計方法
4.8 本章小結
習題4
第5章 函數
5.1 程序設計的藝術
5.2 函數的定義與使用
5.2.1 函數的分類
5.2.2 函數的定義
5.2.3 函數的調用、參數傳遞和返迴值
5.2.4 函數原型
5.2.5 主函數main()的特殊性
5.3 變量的作用域和存儲類型
5.3.1 變量的作用域
5.3.2 全局變量
5.3.3 變量的存儲類型
5.4 函數封裝
5.5 預處理指令
5.5.1#include
5.5.2#define和#undef
5.5.3 條件編譯
5.6 使用assert()查錯
5.7 模塊和鏈接
*5.8 模塊化程序設計方法簡介
5.8.1 模塊劃分的原則
5.8.2 應用實例——“猜數”遊戲
*5.9 遞歸
5.9.1 遞歸問題的提齣
5.9.2 遞歸函數
5.10 本章小結
習題5
第6章 數組
6.1 數組類型的應用場閤
6.2 數組的定義、引用和初始化
6.2.1 數組的定義
6.2.2 數組的引用
6.2.3 數組的初始化
6.2.4 程序實例
6.3 嚮函數傳遞一維數組
6.4 嚮函數傳遞二維數組
6.5 字符數組
6.5.1 字符數組與字符串的關係
6.5.2 字符數組的輸入/輸齣
6.5.3 字符串處理函數
6.5.4 應用實例
6.6 本章小結
習題6
第7章 指針
7.1 指針概述
7.1.1 指針的概念
7.1.2 為什麼引入指針的概念
7.1.3 指針變量作函數參數
7.1.4 字符指針作函數參數
7.2 指針和數組間的關係
7.2.1 一維數組的地址和指針
7.2.2 二維數組的地址和指針
7.3 指針數組
*7.4 函數指針
*7.5 帶參數的main()函數
*7.6 動態數組的實現
7.6.1 C程序的內存映像
7.6.2 動態內存分配函數
7.6.3 一維動態數組的實現
7.6.4 二維動態數組的實現
*7.7 使用const修飾指針變量
*7.8 代碼風格
7.8.1 程序版式
7.8.2 命名規則
7.8.3 函數設計
7.8.4 防禦性程序設計
7.9 本章小結
習題7
第8章 結構體與共用體
8.1 結構體的應用場閤
8.2 結構體類型與結構體變量
8.2.1 結構體類型的聲明
8.2.2 用typedef定義結構體類型
8.2.3 結構體變量的定義
8.2.4 指嚮結構體變量的指針
8.2.5 結構體變量的引用和初始化
8.3 結構體數組
8.3.1 結構體數組的定義
8.3.2 結構體數組程序實例
8.3.3 指嚮結構體數組的指針
8.4 嚮函數傳遞結構體
*8.5 動態數據結構
8.5.1 問題的提齣
8.5.2 鏈錶的定義
8.5.3 鏈錶的特點及操作原理
8.5.4 鏈錶的建立
8.5.5 鏈錶的刪除操作
8.5.6 鏈錶的插入操作
8.6 共用體
8.7 本章小結
習題8
第9章 文件操作
9.1 計算機中的流
9.2 文件
9.2.1 存儲設備的使用
9.2.2 目錄
9.2.3 文件格式
9.3 基本文件操作
9.3.1 基本文件操作函數
9.3.2 錯誤處理
9.3.3 程序示例
9.3.4 基本文件操作的意義
9.4 高級文件操作
9.4.1 文件的打開與關閉
9.4.2 文件的讀/寫
9.4.3 程序實例
9.4.4 標準輸入與標準輸齣
9.5 本章小結
習題9
第10章 C程序設計常見錯誤及解決方案
條款1:使用未初始化和未賦值的變量
條款2:不考慮數值溢齣的可能
條款3:不用sizeof()獲得類型或變量的字長
條款4:假定類型取值範圍
條款5:期望兩個整數的運算自動得齣浮點數的結果
條款6:不預先判斷除數是否為0
條款7:混淆“&,|”與“&&,||”
條款8:使用依賴編譯器求值順序的語句
條款9:使用依靠算符優先級的錶達式
條款10:錶達式過於復雜
條款11:用“==”時誤用“=”
條款12:用“==”比較兩個浮點數
條款13:使用幻數
條款14:printf()和scanf()中格式控製字符串與參數類型不匹配
條款15:循環或判斷語句以“;”結尾
條款16:在循環體內改變循環結束條件
條款17:case分支不用break結束
條款18:switch-case語句沒有default分支
條款19:不聲明函數原型
條款20:不定義函數參數或返迴值的類型
條款21:有返迴值的函數不用return指明返迴值
條款22:調用函數後,不檢查函數是否正確執行
條款23:變量、函數和模塊功能不單一
條款24:函數過長
條款25:函數的參數過於復雜
條款26:返迴指嚮局部變量的指針
條款27:隨意修改全局變量的值
條款28:數組下標越界
條款29:字符串沒有' '終結符
條款30:使用不限製最大處理長度的字符串處理函數
條款31:用malloc()申請的內存不用free()
條款32:使用已經被free()的指針
條款33:文件打開後不主動關閉
條款34:成對函數不在同一個模塊或函數內調用
條款35:頭文件不加宏定義鎖
條款36:忽略編譯器警告
條款37:用“復製+粘貼”的方式復用代碼
條款38:在字符串和注釋以外的地方使用全角字符
條款39:代碼風格不佳
條款40:代碼與注釋不一緻
附錄A 常用基本概念、名詞、語句、運算符、數據類型和算法索引錶
附錄B C關鍵字
附錄C Visual C++下各數據類型所占字節數和取值範圍
附錄D C運算符的優先級與結閤性
附錄E ASCII碼的字符編碼
附錄F ASCII碼和ASCII擴展碼字符錶
附錄G 常用的ANSI C標準庫函數
參考文獻
· · · · · · (
收起)
評分
☆☆☆☆☆
这本书是读大学时的教材。在完全没有编程基础下,为了学好C,几乎翻烂了每一页。多年后重温新版,还是那个扎实的味道。 亮点 1. 丰富的语法细节/陷阱提示。很多都是初学者容易犯的错误。认真练习,潜移默化的养成细心的编程习惯。 2. 行列指针和链表的拓展内容。反复思考,抽象...
評分
☆☆☆☆☆
这本书是读大学时的教材。在完全没有编程基础下,为了学好C,几乎翻烂了每一页。多年后重温新版,还是那个扎实的味道。 亮点 1. 丰富的语法细节/陷阱提示。很多都是初学者容易犯的错误。认真练习,潜移默化的养成细心的编程习惯。 2. 行列指针和链表的拓展内容。反复思考,抽象...
評分
☆☆☆☆☆
这本书是读大学时的教材。在完全没有编程基础下,为了学好C,几乎翻烂了每一页。多年后重温新版,还是那个扎实的味道。 亮点 1. 丰富的语法细节/陷阱提示。很多都是初学者容易犯的错误。认真练习,潜移默化的养成细心的编程习惯。 2. 行列指针和链表的拓展内容。反复思考,抽象...
評分
☆☆☆☆☆
这本书是读大学时的教材。在完全没有编程基础下,为了学好C,几乎翻烂了每一页。多年后重温新版,还是那个扎实的味道。 亮点 1. 丰富的语法细节/陷阱提示。很多都是初学者容易犯的错误。认真练习,潜移默化的养成细心的编程习惯。 2. 行列指针和链表的拓展内容。反复思考,抽象...
評分
☆☆☆☆☆
这本书是读大学时的教材。在完全没有编程基础下,为了学好C,几乎翻烂了每一页。多年后重温新版,还是那个扎实的味道。 亮点 1. 丰富的语法细节/陷阱提示。很多都是初学者容易犯的错误。认真练习,潜移默化的养成细心的编程习惯。 2. 行列指针和链表的拓展内容。反复思考,抽象...