《C語言的科學和藝術》是計算機科學的經典教材,介紹了計算機科學的基礎知識和程序設計的專門知識。《C語言的科學和藝術》以介紹ANSI C為主線,不僅涵蓋C語言的基本知識,而且介紹了軟件工程技術以及如何應用良好的程序設計風格進行開發等內容。
《C語言的科學和藝術》采用了庫函數的方法,強調抽象的原則,詳細闡述了庫和模塊化開發。此外,《C語言的科學和藝術》還利用大量實例講述解決問題的全過程,對開發過程中常見的錯誤也給出了解決和避免的方法。《C語言的科學和藝術》既可作為高等院校計算機科學入門課程及C語言入門課程的教材,也是C語言開發人員的極佳參考書。
目錄
譯者序
前言
第1章 概述
1.1 計算簡史
1.2 什麼是計算機科學
1.3 計算機硬件簡介
1.3.1 cpu
1.3.2 內存
1.3.3 輔助存儲器
1.3.4 i/o設備
1.4 算法
1.5 程序設計語言和編譯
1.6 編程錯誤和調試
1.7 軟件維護
1.8 軟件工程的重要性
1.9 關于c程序設計語言的一些思考
小結
復習題
第一部分 c語言程序設計基礎
第2章 通過例子學習
2.1 “hello world”程序
2.1.1 注釋
2.1.2 庫包含
2.1.3 主程序
2.2 兩個數的加法程序
2.2.1 輸入階段
2.2.2 計算階段
2.2.3 輸出階段
2.3 有關程序設計過程的觀點
2.4 數據類型
2.4.1 浮點型數據
2.4.2 字符串類型的數據
2.5 表達式
2.5.1 常量
2.5.2 變量
2.5.3 賦值語句
2.5.4 運算符和操作數
2.5.5 整型數和浮點型數的結合
2.5.6 整數除法和求余運算符
2.5.7 優先級
2.5.8 優先級法則的應用
2.5.9 類型轉換
小結
復習題
程序設計練習
第3章 問題求解
3.1 程序設計習語和範例
3.1.1 復合賦值習語
3.1.2 自增和自減運算符
3.2 解決規模稍大的問題
3.3 控制語句
3.3.1 重復n次習語
3.3.2 迭代和循環
3.3.3 下標變量
3.3.4 初始化的重要性
3.3.5 讀入-直到-標志習語
3.3.6 創造一個更實用的應用程序
3.3.7 條件執行和if語句
3.4 一個調試練習
3.5 格式化輸出
3.5.1 printf的格式碼
3.5.2 控制空格、對齊方式和精度
3.6 構思一個程序
3.6.1 程序設計風格
3.6.2 設計時考慮將來的修改
3.6.3 #define機制
小結
復習題
程序設計練習
第4章 語句形式
4.1 簡單語句
4.1.1 賦值的嵌套
4.1.2 多重賦值
4.1.3 程序塊
4.2 控制語句
4.3 布爾型數據
4.3.1 關系運算符
4.3.2 邏輯運算符
4.3.3 簡化求值
4.3.4 標志
4.3.5 避免布爾表達式中的冗余
4.3.6 布爾計算示例
4.4 if語句
4.4.1 單行if語句
4.4.2 多行if語句
4.4.3 if/else語句
4.4.4 級聯if語句
4.4.5 ?: 運算符(可選的)
4.5 switch語句
4.6 while語句
4.6.1 while循環的應用
4.6.2 無限循環
4.6.3 解決半途退出問題
4.7 for語句
4.7.1 嵌套的for循環
4.7.2 for和while的關系
4.7.3 for語句中浮點型數據的使用問題
小結
復習題
程序設計練習
第5章 函數
5.1 使用庫函數
5.2 函數聲明
5.3 自己編寫函數
5.3.1 return語句
5.3.2 將函數與主程序放在一起
5.3.3 包含內部控制結構的函數
5.3.4 返回非數字值的函數
5.3.5 謂詞函數
5.3.6 測試字符串是否相等的謂詞函數
5.4 函數調用過程機制
5.4.1 參數傳遞
5.4.2 在其他函數中調用函數
5.5 過程
5.6 逐步精化
5.6.1 從頂開始
5.6.2 實現printcalendar
5.6.3 實現printcalendarmonth
5.6.4 完成最後的片段
小結
復習題
程序設計練習
第6章 算法
6.1 測試素數
6.1.1 一個isprime的簡單版本
6.1.2 驗證一個策略是否表示一個算法
6.1.3 說明isprime算法的正確性
6.1.4 改進算法的效率
6.1.5 在各個可選方案中選擇
6.2 計算最大公約數
6.2.1 brute-force算法
6.2.2 歐幾里得算法
6.2.3 歐幾里得算法的正確性說明(可選)
6.2.4 比較gcd算法的效率
6.3 數值算法
6.3.1 連續逼近
6.3.2 報告錯誤
6.4 級數展開
6.4.1 zeno悖論
6.4.2 用級數展開法設計平方根函數
6.4.3 估計平方根的泰勒級數展開 (可選)
6.4.4 泰勒級數近似的實現
6.4.5 停留在收斂半徑之內
6.5 指定數值類型的大小
6.5.1 整數類型
6.5.2 無符號類型
6.5.3 浮點類型
小結
復習題
程序設計練習
第二部分 庫和模塊化開發
第7章 庫和接口︰一個簡單的圖形庫
7.1 接口的概念
7.2 圖形庫介紹
7.2.1 graphics.h的基本模型
7.2.2 graphics.h接口的函數
7.2.3 軟件包初始化
7.2.4 畫直線
7.2.5 畫圓和弧
7.2.6 獲取有關圖形窗口的信息
7.3 建立自己的工具
7.3.1 定義drawbox
7.3.2 定義drawcenteredcircle
7.3.3 絕對坐標和相對坐標間的切換
7.3.4 定義過程的好處
7.4 解決一個較大的問題
7.4.1 使用逐步精化
7.4.2 實現drawhouse過程
7.4.3 尋找共同的模式
7.4.4 結束分解
小結
復習題
程序設計練習
第8章 設計接口︰一個隨機數庫
8.1 接口設計
8.1.1 同一主題的重要性
8.1.2 簡單性和信息隱藏的原則
8.1.3 滿足客戶的需要
8.1.4 通用工具的優勢
8.1.5 穩定性的價值
8.2 用計算機生成隨機數
8.2.1 確定行為與非確定行為
8.2.2 隨機數和偽隨機數
8.2.3 ansi c中生成偽隨機數
8.2.4 改變隨機數的範圍
8.2.5 將此問題通用化
8.3 在庫中保存工具
8.3.1 接口的內容
8.3.2 寫random.h接口
8.3.3 random.c的實現
8.3.4 構造客戶程序
8.3.5 初始化隨機數發生器
8.4 評價random.h接口的設計
8.4.1 產生隨機實數
8.4.2 模擬一個概率事件
8.4.3 在接口中包含頭文件
8.4.4 完成隨機數軟件包的實現
8.5 使用隨機數軟件包
小結
復習題
程序設計練習
第9章 字符串和字符
9.1 枚舉的原理
9.1.1 在機器內部表示枚舉類型
9.1.2 將枚舉類型表示為整數
9.1.3 定義新的枚舉類型
9.1.4 枚舉類型的操作
9.1.5 標量類型
9.2 字符
9.2.1 數據類型char
9.2.2 ascii代碼
9.2.3 字符常量
9.2.4 ascii代碼方案的重要特性
9.2.5 特殊字符
9.2.6 字符運算
9.2.7 ctype.h接口
9.2.8 涉及字符的控制語句
9.2.9 字符的輸入輸出
9.3 字符串作為抽象數據類型
9.3.1 分層抽象
9.3.2 抽象類型的概念
9.4 strlib.h接口
9.4.1 確定字符串的長度
9.4.2 從一個字符串中選擇字符
9.4.3 連接
9.4.4 將字符轉換為字符串
9.4.5 抽取字符串的一部分
9.4.6 比較兩個字符串
9.4.7 在一個字符串內搜索
9.4.8 大小寫轉換
9.4.9 數值轉換
9.4.10 效率和strlib.h庫
小結
復習題
程序設計練習
第10章 模塊化開發
10.1 pig latin—一個模塊化開發的 案例研究
10.1.1 應用自頂向下的設計
10.1.2 使用偽代碼
10.1.3 實現translateline
10.1.4 考慮空格和標點符號的問題
10.1.5 精化單詞的定義
10.1.6 設計記號掃描器
10.1.7 完成translateline的實現
10.1.8 定義掃描器模塊接口
10.2 在模塊中維護內部狀態
10.2.1 全局變量
10.2.2 使用全局變量的危險性
10.2.3 保持變量的模塊私有化
10.2.4 初始化全局變量
10.2.5 私有函數
10.3 實現掃描器抽象
小結
復習題
程序設計練習
第三部分 復合數據類型
第11章 數組
11.1 數組
11.1.1 數組聲明
11.1.2 數組選擇
11.1.3 一個簡單的數組實例
11.1.4 改變下標值的範圍
11.2 數據的內部表示法
11.2.1 比特、字節和字
11.2.2 內存地址
11.2.3 運算符sizeof
11.2.4 變量的內存分配
11.2.5 引用超出數組範圍的元素
11.3 數組作為參數進行傳遞
11.3.1 元素個數的通用化
11.3.2 數組參數傳遞機制
11.3.3 實現函數printintegerarray和getintegerarray
11.3.4 實現函數reverseintegerarray
11.3.5 實現函數swapintegerelements
11.4 使用數組制作表格
11.5 數組的靜態初始化
11.5.1 自動確定數組大小
11.5.2 確定初始化數組的大小
11.5.3 初始化數組和標量類型
11.6 多維數組
11.6.1 向函數傳送多維數組
11.6.2 初始化多維數組
小結
復習題
程序設計練習
第12章 查找和排序
12.1 查找
12.1.1 在整數數組中查找
12.1.2 關于查找的另一個更復雜 的例子
12.1.3 線性查找
12.1.4 二分查找
12.1.5 查找算法的相對效率
12.2 排序
12.2.1 對一個整數數組排序
12.2.2 選擇排序算法
12.2.3 選擇排序效率的評估
12.2.4 測試程序的運行時間
12.2.5 選擇排序的算法分析
小結
復習題
程序設計練習
第13章 指針
13.1 將地址作為數據值
13.2 c語言的指針操作
13.2.1 在c語言中聲明指針變量
13.2.2 基本的指針操作
13.2.3 特殊指針null
13.3 通過引用傳遞參數
13.3.1 設計函數swapinteger
13.3.2 用引用調用返回多個結果
13.3.3 過度使用引用調用的危險
13.4 指針和數組
13.4.1 指針運算
13.4.2 運算符++和--的新作用
13.4.3 指針的自增和自減
13.4.4 指針和數組的關系
13.5 動態分配
13.5.1 void *類型
13.5.2 動態數組
13.5.3 查找malloc中的錯誤
13.5.4 釋放內存
小結
復習題
程序設計練習
第14章 再論字符串
14.1 string類型的概念表示
14.1.1 字符串作為數組
14.1.2 字符串作為指針
14.1.3 字符串作為抽象類型
14.1.4 字符串參數
14.1.5 字符串變量
14.1.6 指針和數組變量間的區別
14.1.7 決定字符串的表示方法
14.2 ansi字符串庫
14.2.1 strcpy函數
14.2.2 strncpy函數
14.2.3 strcat和strncat函數
14.2.4 strlen、strcmp和strncmp函數
14.2.5 strchr、strrchr和strstr函數
14.2.6 ansi字符串函數的應用
14.3 strlib庫的實現
14.3.1 實現轉換函數
14.3.2 strlib分配函數的實現
小結
復習題
程序設計練習
第15章 文件
15.1 文本文件
15.2 c語言中文件的使用
15.2.1 聲明file*類型的變量
15.2.2 打開文件
15.2.3 執行i/o操作
15.2.4 關閉文件
15.2.5 標準文件
15.3 字符i/o
15.3.1 文件更新
15.3.2 在輸入文件中重新讀取字符
15.4 面向行的i/o
15.5 格式化i/o
15.5.1 printf的三種形式
15.5.2 scanf函數
15.5.3 用scanf讀入字符串
15.5.4 格式化i/o的一個實例
15.5.5 使用scanf的局限
小結
復習題
程序設計練習
第16章 記錄
16.1 數據記錄的概念
16.2 記錄在c語言中的使用
16.2.1 定義一個結構類型
16.2.2 聲明結構變量
16.2.3 記錄選擇
16.2.4 記錄初始化
16.2.5 簡單記錄
16.3 數組與記錄的結合
16.4 記錄的指針
16.4.1 定義一個指向記錄類型的指針
16.4.2 為記錄數據分配空間
16.4.3 對記錄指針進行操作
16.5 創建記錄的數據庫
16.5.1 創建員工信息數據庫
16.5.2 數據庫的使用
16.6 基于記錄的應用程序設計
16.6.1 使用數據庫的重要性
16.6.2 問題的框架
16.6.3 設計內部表示
16.6.4 設計外部結構
16.6.5 程序代碼
16.6.6 數據驅動設計方法的重要性
小結
復習題
程序設計練習
第17章 深入學習
17.1 遞歸
17.1.1 遞歸的簡單說明
17.1.2 factorial函數
17.1.3 遞歸信任
17.1.4 遞歸範例
17.1.5 排列的生成
17.1.6 用遞歸的思想思考
17.2 抽象數據類型
17.2.1 隊列抽象
17.2.2 以隊列抽象表示類型
17.2.3 queue.h 接口
17.2.4 實現隊列抽象
17.2.5 隊列抽象的另一種實現方法
17.3 算法分析
17.3.1 評估算法效率
17.3.2 o標記
17.3.3 再看選擇排序
17.3.4 分而治之策略
17.3.5 合並兩個數組
17.3.6 合並排序算法
17.3.7 合並排序的計算復雜性
17.3.8 比較平方復雜性與nlogn復雜性的性能
小結
復習題
程序設計練習
附 錄
附錄a c語言的語法和結構總結
附錄b 庫源代碼
前言
第1章 概述
1.1 計算簡史
1.2 什麼是計算機科學
1.3 計算機硬件簡介
1.3.1 cpu
1.3.2 內存
1.3.3 輔助存儲器
1.3.4 i/o設備
1.4 算法
1.5 程序設計語言和編譯
1.6 編程錯誤和調試
1.7 軟件維護
1.8 軟件工程的重要性
1.9 關于c程序設計語言的一些思考
小結
復習題
第一部分 c語言程序設計基礎
第2章 通過例子學習
2.1 “hello world”程序
2.1.1 注釋
2.1.2 庫包含
2.1.3 主程序
2.2 兩個數的加法程序
2.2.1 輸入階段
2.2.2 計算階段
2.2.3 輸出階段
2.3 有關程序設計過程的觀點
2.4 數據類型
2.4.1 浮點型數據
2.4.2 字符串類型的數據
2.5 表達式
2.5.1 常量
2.5.2 變量
2.5.3 賦值語句
2.5.4 運算符和操作數
2.5.5 整型數和浮點型數的結合
2.5.6 整數除法和求余運算符
2.5.7 優先級
2.5.8 優先級法則的應用
2.5.9 類型轉換
小結
復習題
程序設計練習
第3章 問題求解
3.1 程序設計習語和範例
3.1.1 復合賦值習語
3.1.2 自增和自減運算符
3.2 解決規模稍大的問題
3.3 控制語句
3.3.1 重復n次習語
3.3.2 迭代和循環
3.3.3 下標變量
3.3.4 初始化的重要性
3.3.5 讀入-直到-標志習語
3.3.6 創造一個更實用的應用程序
3.3.7 條件執行和if語句
3.4 一個調試練習
3.5 格式化輸出
3.5.1 printf的格式碼
3.5.2 控制空格、對齊方式和精度
3.6 構思一個程序
3.6.1 程序設計風格
3.6.2 設計時考慮將來的修改
3.6.3 #define機制
小結
復習題
程序設計練習
第4章 語句形式
4.1 簡單語句
4.1.1 賦值的嵌套
4.1.2 多重賦值
4.1.3 程序塊
4.2 控制語句
4.3 布爾型數據
4.3.1 關系運算符
4.3.2 邏輯運算符
4.3.3 簡化求值
4.3.4 標志
4.3.5 避免布爾表達式中的冗余
4.3.6 布爾計算示例
4.4 if語句
4.4.1 單行if語句
4.4.2 多行if語句
4.4.3 if/else語句
4.4.4 級聯if語句
4.4.5 ?: 運算符(可選的)
4.5 switch語句
4.6 while語句
4.6.1 while循環的應用
4.6.2 無限循環
4.6.3 解決半途退出問題
4.7 for語句
4.7.1 嵌套的for循環
4.7.2 for和while的關系
4.7.3 for語句中浮點型數據的使用問題
小結
復習題
程序設計練習
第5章 函數
5.1 使用庫函數
5.2 函數聲明
5.3 自己編寫函數
5.3.1 return語句
5.3.2 將函數與主程序放在一起
5.3.3 包含內部控制結構的函數
5.3.4 返回非數字值的函數
5.3.5 謂詞函數
5.3.6 測試字符串是否相等的謂詞函數
5.4 函數調用過程機制
5.4.1 參數傳遞
5.4.2 在其他函數中調用函數
5.5 過程
5.6 逐步精化
5.6.1 從頂開始
5.6.2 實現printcalendar
5.6.3 實現printcalendarmonth
5.6.4 完成最後的片段
小結
復習題
程序設計練習
第6章 算法
6.1 測試素數
6.1.1 一個isprime的簡單版本
6.1.2 驗證一個策略是否表示一個算法
6.1.3 說明isprime算法的正確性
6.1.4 改進算法的效率
6.1.5 在各個可選方案中選擇
6.2 計算最大公約數
6.2.1 brute-force算法
6.2.2 歐幾里得算法
6.2.3 歐幾里得算法的正確性說明(可選)
6.2.4 比較gcd算法的效率
6.3 數值算法
6.3.1 連續逼近
6.3.2 報告錯誤
6.4 級數展開
6.4.1 zeno悖論
6.4.2 用級數展開法設計平方根函數
6.4.3 估計平方根的泰勒級數展開 (可選)
6.4.4 泰勒級數近似的實現
6.4.5 停留在收斂半徑之內
6.5 指定數值類型的大小
6.5.1 整數類型
6.5.2 無符號類型
6.5.3 浮點類型
小結
復習題
程序設計練習
第二部分 庫和模塊化開發
第7章 庫和接口︰一個簡單的圖形庫
7.1 接口的概念
7.2 圖形庫介紹
7.2.1 graphics.h的基本模型
7.2.2 graphics.h接口的函數
7.2.3 軟件包初始化
7.2.4 畫直線
7.2.5 畫圓和弧
7.2.6 獲取有關圖形窗口的信息
7.3 建立自己的工具
7.3.1 定義drawbox
7.3.2 定義drawcenteredcircle
7.3.3 絕對坐標和相對坐標間的切換
7.3.4 定義過程的好處
7.4 解決一個較大的問題
7.4.1 使用逐步精化
7.4.2 實現drawhouse過程
7.4.3 尋找共同的模式
7.4.4 結束分解
小結
復習題
程序設計練習
第8章 設計接口︰一個隨機數庫
8.1 接口設計
8.1.1 同一主題的重要性
8.1.2 簡單性和信息隱藏的原則
8.1.3 滿足客戶的需要
8.1.4 通用工具的優勢
8.1.5 穩定性的價值
8.2 用計算機生成隨機數
8.2.1 確定行為與非確定行為
8.2.2 隨機數和偽隨機數
8.2.3 ansi c中生成偽隨機數
8.2.4 改變隨機數的範圍
8.2.5 將此問題通用化
8.3 在庫中保存工具
8.3.1 接口的內容
8.3.2 寫random.h接口
8.3.3 random.c的實現
8.3.4 構造客戶程序
8.3.5 初始化隨機數發生器
8.4 評價random.h接口的設計
8.4.1 產生隨機實數
8.4.2 模擬一個概率事件
8.4.3 在接口中包含頭文件
8.4.4 完成隨機數軟件包的實現
8.5 使用隨機數軟件包
小結
復習題
程序設計練習
第9章 字符串和字符
9.1 枚舉的原理
9.1.1 在機器內部表示枚舉類型
9.1.2 將枚舉類型表示為整數
9.1.3 定義新的枚舉類型
9.1.4 枚舉類型的操作
9.1.5 標量類型
9.2 字符
9.2.1 數據類型char
9.2.2 ascii代碼
9.2.3 字符常量
9.2.4 ascii代碼方案的重要特性
9.2.5 特殊字符
9.2.6 字符運算
9.2.7 ctype.h接口
9.2.8 涉及字符的控制語句
9.2.9 字符的輸入輸出
9.3 字符串作為抽象數據類型
9.3.1 分層抽象
9.3.2 抽象類型的概念
9.4 strlib.h接口
9.4.1 確定字符串的長度
9.4.2 從一個字符串中選擇字符
9.4.3 連接
9.4.4 將字符轉換為字符串
9.4.5 抽取字符串的一部分
9.4.6 比較兩個字符串
9.4.7 在一個字符串內搜索
9.4.8 大小寫轉換
9.4.9 數值轉換
9.4.10 效率和strlib.h庫
小結
復習題
程序設計練習
第10章 模塊化開發
10.1 pig latin—一個模塊化開發的 案例研究
10.1.1 應用自頂向下的設計
10.1.2 使用偽代碼
10.1.3 實現translateline
10.1.4 考慮空格和標點符號的問題
10.1.5 精化單詞的定義
10.1.6 設計記號掃描器
10.1.7 完成translateline的實現
10.1.8 定義掃描器模塊接口
10.2 在模塊中維護內部狀態
10.2.1 全局變量
10.2.2 使用全局變量的危險性
10.2.3 保持變量的模塊私有化
10.2.4 初始化全局變量
10.2.5 私有函數
10.3 實現掃描器抽象
小結
復習題
程序設計練習
第三部分 復合數據類型
第11章 數組
11.1 數組
11.1.1 數組聲明
11.1.2 數組選擇
11.1.3 一個簡單的數組實例
11.1.4 改變下標值的範圍
11.2 數據的內部表示法
11.2.1 比特、字節和字
11.2.2 內存地址
11.2.3 運算符sizeof
11.2.4 變量的內存分配
11.2.5 引用超出數組範圍的元素
11.3 數組作為參數進行傳遞
11.3.1 元素個數的通用化
11.3.2 數組參數傳遞機制
11.3.3 實現函數printintegerarray和getintegerarray
11.3.4 實現函數reverseintegerarray
11.3.5 實現函數swapintegerelements
11.4 使用數組制作表格
11.5 數組的靜態初始化
11.5.1 自動確定數組大小
11.5.2 確定初始化數組的大小
11.5.3 初始化數組和標量類型
11.6 多維數組
11.6.1 向函數傳送多維數組
11.6.2 初始化多維數組
小結
復習題
程序設計練習
第12章 查找和排序
12.1 查找
12.1.1 在整數數組中查找
12.1.2 關于查找的另一個更復雜 的例子
12.1.3 線性查找
12.1.4 二分查找
12.1.5 查找算法的相對效率
12.2 排序
12.2.1 對一個整數數組排序
12.2.2 選擇排序算法
12.2.3 選擇排序效率的評估
12.2.4 測試程序的運行時間
12.2.5 選擇排序的算法分析
小結
復習題
程序設計練習
第13章 指針
13.1 將地址作為數據值
13.2 c語言的指針操作
13.2.1 在c語言中聲明指針變量
13.2.2 基本的指針操作
13.2.3 特殊指針null
13.3 通過引用傳遞參數
13.3.1 設計函數swapinteger
13.3.2 用引用調用返回多個結果
13.3.3 過度使用引用調用的危險
13.4 指針和數組
13.4.1 指針運算
13.4.2 運算符++和--的新作用
13.4.3 指針的自增和自減
13.4.4 指針和數組的關系
13.5 動態分配
13.5.1 void *類型
13.5.2 動態數組
13.5.3 查找malloc中的錯誤
13.5.4 釋放內存
小結
復習題
程序設計練習
第14章 再論字符串
14.1 string類型的概念表示
14.1.1 字符串作為數組
14.1.2 字符串作為指針
14.1.3 字符串作為抽象類型
14.1.4 字符串參數
14.1.5 字符串變量
14.1.6 指針和數組變量間的區別
14.1.7 決定字符串的表示方法
14.2 ansi字符串庫
14.2.1 strcpy函數
14.2.2 strncpy函數
14.2.3 strcat和strncat函數
14.2.4 strlen、strcmp和strncmp函數
14.2.5 strchr、strrchr和strstr函數
14.2.6 ansi字符串函數的應用
14.3 strlib庫的實現
14.3.1 實現轉換函數
14.3.2 strlib分配函數的實現
小結
復習題
程序設計練習
第15章 文件
15.1 文本文件
15.2 c語言中文件的使用
15.2.1 聲明file*類型的變量
15.2.2 打開文件
15.2.3 執行i/o操作
15.2.4 關閉文件
15.2.5 標準文件
15.3 字符i/o
15.3.1 文件更新
15.3.2 在輸入文件中重新讀取字符
15.4 面向行的i/o
15.5 格式化i/o
15.5.1 printf的三種形式
15.5.2 scanf函數
15.5.3 用scanf讀入字符串
15.5.4 格式化i/o的一個實例
15.5.5 使用scanf的局限
小結
復習題
程序設計練習
第16章 記錄
16.1 數據記錄的概念
16.2 記錄在c語言中的使用
16.2.1 定義一個結構類型
16.2.2 聲明結構變量
16.2.3 記錄選擇
16.2.4 記錄初始化
16.2.5 簡單記錄
16.3 數組與記錄的結合
16.4 記錄的指針
16.4.1 定義一個指向記錄類型的指針
16.4.2 為記錄數據分配空間
16.4.3 對記錄指針進行操作
16.5 創建記錄的數據庫
16.5.1 創建員工信息數據庫
16.5.2 數據庫的使用
16.6 基于記錄的應用程序設計
16.6.1 使用數據庫的重要性
16.6.2 問題的框架
16.6.3 設計內部表示
16.6.4 設計外部結構
16.6.5 程序代碼
16.6.6 數據驅動設計方法的重要性
小結
復習題
程序設計練習
第17章 深入學習
17.1 遞歸
17.1.1 遞歸的簡單說明
17.1.2 factorial函數
17.1.3 遞歸信任
17.1.4 遞歸範例
17.1.5 排列的生成
17.1.6 用遞歸的思想思考
17.2 抽象數據類型
17.2.1 隊列抽象
17.2.2 以隊列抽象表示類型
17.2.3 queue.h 接口
17.2.4 實現隊列抽象
17.2.5 隊列抽象的另一種實現方法
17.3 算法分析
17.3.1 評估算法效率
17.3.2 o標記
17.3.3 再看選擇排序
17.3.4 分而治之策略
17.3.5 合並兩個數組
17.3.6 合並排序算法
17.3.7 合並排序的計算復雜性
17.3.8 比較平方復雜性與nlogn復雜性的性能
小結
復習題
程序設計練習
附 錄
附錄a c語言的語法和結構總結
附錄b 庫源代碼
網路書店
類別
折扣
價格
-
新書87折$412