第1章 編寫ASNI C程序
1.1 準備編程
1.2 第一個程序
1.3 變量、表達式和賦值
1.4 初始化
1.5 #define和#include的用法
1.6 printf()和scanf()的用法
1.6.1 printf()的用法
1.6.2 scanf()的用法
1.7 while語句
1.8 問題求解:計算總和
1.9 風格
1.10 常見的編程錯誤
1.11 系統(tǒng)考慮
1.11.1 編寫和運行C程序
1.11.2 中斷程序
1.11.3 輸入文件尾標識
1.11.4 輸入和輸出的重定向
1.12 轉向C++
小結
練習
第2章 詞法元素、運算符和C系統(tǒng)
2.1 字符和詞法元素
2.2 注釋
2.3 關鍵字
2.4 標識符
2.5 常量
2.6 串常量
2.7 運算符和標點符號
2.8 運算符的優(yōu)先級和結合性
2.9 增量運算符和減量運算符
2.10 賦值運算符
2.11 例子:計算2的冪
2.12 C系統(tǒng)
2.12.1 預處理器
2.12.2 標準庫
2.13 風格
2.14 常見的編程錯誤
2.15 系統(tǒng)考慮
2.16 轉向C++
小結
練習
第3章 控制流
3.1 關系、等式和邏輯運算符
3.2 關系運算符和表達式
3.3 等式運算符和表達式
3.4 邏輯運算符和表達式
3.5 復合語句
3.6 空語句
3.7 if和if-else語句
3.8 while語句
3.9 問題求解:找最大值
3.10 for語句
3.11 問題求解:組合數(shù)學
3.12 問題求解:布爾變量
3.13 逗號運算符
3.14 do語句
3.15 goto語句
3.16 break和continue語句
3.17 switch語句
3.18 嵌套的控制流
3.19 條件運算符
3.20 風格
3.21 常見的編程錯誤
3.22 系統(tǒng)考慮
3.23 轉向C++
小結
練習
第4章 函數(shù)和結構化編程
4.1 函數(shù)調用
4.2 函數(shù)定義
4.3 return語句
4.4 函數(shù)原型
4.5 自頂向下設計
4.6 程序的正確性:assert()宏
4.7 從編譯器的角度來看函數(shù)聲明
4.8 問題求解:隨機數(shù)
4.9 函數(shù)定義次序的可選風格
4.10 開發(fā)一個大程序
4.11 模擬:正反面游戲
4.12 調用和按值調用
4.13 遞歸
4.14 風格
4.15 常見的編程錯誤
4.16 系統(tǒng)考慮
4.17 轉向C++
小結
練習
第5章 字符處理
5.1 數(shù)據(jù)類型char
5.2 getchar()和putchar()的用法
5.3 例子:大寫
5.4 ctype.h中的宏
5.5 問題求解:重復字符
5.6 問題求解:對單詞計數(shù)
5.7 風格
5.8 常見的編程錯誤
5.9 系統(tǒng)考慮
5.10 轉向C++
小結
練習
第6章 基本數(shù)據(jù)類型
6.1 聲明和表達式
6.2 基本數(shù)據(jù)類型
6.3 字符和數(shù)據(jù)類型char
6.4 數(shù)據(jù)類型int
6.5 整數(shù)類型short、long和unsigned
6.6 浮點類型
6.7 sizeof運算符
6.8 數(shù)學函數(shù)
6.9 轉換和類型轉換
6.9.1 整型提升
6.9.2 常用的算術轉換
6.9.3 類型轉換
6.10 問題求解:計算利息
6.11 風格
6.12 常見的編程錯誤
6.13 系統(tǒng)考慮
6.14 轉向C++
小結
練習
第7章 枚舉類型和typedef
7.1 枚舉類型
7.2 typedef的用法
7.3 例子:石頭、剪刀、布游戲
7.4 風格
7.5 常見的編程錯誤
7.6 系統(tǒng)考慮
7.7 轉向C++
小結
練習
第8章 函數(shù)、指針和存儲類型
8.1 指針聲明和賦值
8.2 地址和間接訪問
8.3 指向void的指針
8.4 引用調用
8.5 作用域規(guī)則
8.6 存儲類型
8.6.1 存儲類型auto
8.6.2 存儲類型extern
8.6.3 存儲類型register
8.6.4 存儲類型static
8.7 靜態(tài)外部變量
8.8 缺省的初始化
8.9 例子:字符處理
8.10 函數(shù)聲明和函數(shù)定義
8.11 類型限定符const和volatile
8.12 風格
8.13 常見的編程錯誤
8.14 系統(tǒng)考慮
8.15 轉向C++
小結
練習
第9章 數(shù)組和指針
9.1 一維數(shù)組
9.1.1 初始化
9.1.2 下標
9.2 例子:分別對每個字母計數(shù)
9.3 數(shù)組和指針間的關系
9.4 指針運算和元素尺寸
9.5 把數(shù)組傳遞給函數(shù)
9.6 排序算法:冒泡排序
9.7 二維數(shù)組
9.8 多維數(shù)組
9.9 動態(tài)內存分配
9.10 風格
9.11 常見的編程錯誤
9.12 系統(tǒng)考慮
9.13 轉向C++
小結
練習
第10章 串和指針
10.1 串結束標志
10.2 串的初始化
10.3 例子:心情愉快
10.4 用指針處理串
10.5 問題求解:單詞計數(shù)
10.6 把參數(shù)傳遞給main()
10.7 標準庫中的串處理函數(shù)
10.8 風格
10.9 常見的編程錯誤
10.10 系統(tǒng)考慮
10.11 轉向C++
小結
練習
第11章 遞歸
11.1 遞歸問題求解
11.2 例子:在屏幕上繪制圖案
11.3 用遞歸處理串
11.4 分而治之方法
11.5 例子:漢諾塔
11.6 風格
11.7 常見的編程錯誤
11.8 系統(tǒng)考慮
11.9 轉向C++
小結
練習
第12章 結構和抽象數(shù)據(jù)類型
12.1 聲明結構
12.2 訪問成員
12.3 運算符的優(yōu)先級和結合性:總結
12.4 結構、函數(shù)和賦值
12.5 問題求解:學生記錄
12.6 結構的初始化
12.7 typedef的用法
12.8 自引用結構
12.9 線性鏈表
12.10 對鏈表的操作
12.11 計數(shù)和查找
12.12 插入和刪除
12.13 風格
12.14 常見的編程錯誤
12.15 系統(tǒng)考慮
12.16 轉向C++
小結
練習
第13章 輸入/輸出和文件
13.1 輸出函數(shù)printf()
13.2 輸入函數(shù)scanf()
13.2.1 控制串中的指示
13.2.2 普通字符
13.2.3 空白字符
13.2.4 轉換說明
13.2.5 輸入流中的浮點數(shù)
13.2.6 使用掃描集
13.2.7 返回值
13.2.8 一個scanf()的例子
13.3 函數(shù)sprintf()和sscanf()
13.4 函數(shù)fprintf()和fscanf()
13.5 訪問文件
13.6 例子:對文件行距加倍
13.7 使用臨時文件和得體的函數(shù)
13.8 隨機地訪問文件
13.9 風格
13.10 常見的編程錯誤
13.11 系統(tǒng)考慮
13.12 轉向C++
小結
練習
第14章 軟件工具
14.1 在C程序中執(zhí)行命令
14.2 環(huán)境變量
14.3 C編譯器
14.4 創(chuàng)建庫
14.5 使用profiler
14.6 關于時間的編碼
14.7 dbx的用法
14.8 make的用法
14.9 touch的用法
14.10 其他有用的工具
14.11 風格
14.12 常見的編程錯誤
14.13 系統(tǒng)考慮
小結
練習
第15章 從C到C++
15.1 為什么轉到C++
15.2 類和抽象數(shù)據(jù)類型
15.3 重載
15.4 構造器和析構器
15.5 繼承
15.6 多態(tài)性
15.7 模板
15.8 C++中的異常
15.9 面向對象編程的益處
15.10 風格
15.11 常見的編程錯誤
15.12 系統(tǒng)考慮
小結
練習
附錄A 標準庫
附錄B 預處理器
附錄C 位運算符
附錄D ANSI C與傳統(tǒng)C的比較
附錄E ASCII字符編碼表
附錄F 運算符的優(yōu)先級和結合性
索引