C程式設計思想與方法

C程式設計思想與方法

《C程式設計思想與方法》是2009年1月1日,由機械工業出版社出版的圖書,作者是尹寶林。該書主要是以C語言為工具,講授程式設計的過程和方法,可以幫助培養學生的專業程式設計能力打下基礎。

作者簡介

尹寶林,1973年10月畢業於北京航空學院計算機專業,1984年獲英國愛丁堡大學博士學位。現任北京航空航天大學計算機系教授、博士生導師。從事計算機專業教學和科研工作多年,曾主講《C語言程式設計》、《高級語言程式設計》、《UNIX程式設計環境》、《計算機圖形學》、《圖像處理》等課程,其中《高級語言程式設計》被評為北京市精品課程。主編過《離散數學》教材一部。參加全國信息學奧林匹克(NOI)活動的組織與指導工作,任全國信息學奧林匹克科學委員會副主席。

內容簡介

《C程式設計思想與方法》不是一本講授C語言自身特點的教材,而是講授使用C語言進行程式設計的教材。它以C語言為工具,講授程式設計的過程和方法,為培養學生的專業程式設計能力打下基礎。《C程式設計思想與方法》以程式設計的思想和過程為主線,從專業化的角度重點討論C語言的要素和特點、程式設計的基本思想和方法、程式質量的評估和改進、程式與運行環境的關係、中等規模程式的組織要點,以及一些專業化編程所必備的編程習慣和技巧等,並結合例題介紹這些方法和原則在實際編程中的具體運用。

《C程式設計思想與方法》面向對C語言和數據結構、算法分析等相關知識有基本了解,同時希望進一步提高自己實際程式設計能力的讀者,適合作為計算機及相關專業高年級學生學習高級程式設計的教材,同時也適合剛走上工作崗位的專業人員閱讀。

尹寶林,1973年10月畢業於北京航空學院計算機專業,1984年獲英國愛丁堡大學博士學位。現任北京航空航天大學計算機系教授、博士生導師。從事計算機專業教學和科研工作多年,曾主講《C語言程式設計》、《高級語言程式設計》、《UNIX程式設計環境》、《計算機圖形學》、《圖像處理》等課程,其中《高級語言程式設計》被評為北京市精品課程。

目錄

出版者的話

序言

前言

教學建議

例題索引

第0章 引言

第1章 C語言和C程式的基本要素

1.1 C語言概述

1.2 C程式的開發過程

1.3 C程式的基本結構

1.4 調試初步-語法錯誤的定位

1.5 算術運算和表達式

1.6 常量和變數

1.6.1 數字常量

1.6.2 字元常量

1.6.3 字元串常量

1.6.4 符號常量

1.6.5 枚舉常量

1.6.6 變數

1.6.7 變數的賦值和初始化

1.6.8 一維數組

1.6.9 字元數組和字元串

1.6.10 二維數組

1.7 分支和條件語句

1.7.1 關係運算符和邏輯運算符

1.7.2 運算符的優先權

1.7.3 從自然語言到邏輯表達式

1.7.4 條件語句

1.7.5 條件表達式的類型

1.7.6 條件語句的嵌套和級聯

1.7.7 使用條件語句時的注意事項

1.7.8 多路選擇和switch語句

1.8 循環和循環語句

1.8.1 while語句

1.8.2 for語句

1.8.3. do while語句

1.8.4 循環語句中的跳轉

1.9 函式

1.9.1 函式的結構

1.9.2 函式的調用

1.9.3 函式的參數傳遞

1.9.4 代碼的封裝

1.10 輸入和輸出

1.10.1 檔案

1.10.2 標準輸入/輸出檔案

1.10.3 常用的輸入/輸出函式

1.11 C語言的書寫格式

1.11.1 換行和空行

1.11.2 縮進

1.11.3 空格

1.11.4 注釋

習題

第2章 程式設計的基本方法

2.1 程式設計的基本過程

2.2 問題分析

2.2.1 對程式功能的要求

2.2.2 對程式性能的要求

2.2.3 程式的使用方式和環境

2.2.4 程式的錯誤處理

2.2.5 程式的測試

2.2.6 問題分析的結果

2.3 方案設計

2.3.1 解題思路

2.3.2 計算模型

2.3.3 算法分類

2.3.4 算法和數據結構的選擇

2.3.5 算法的檢驗

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 故障的檢查、確認和修改

2.5.3 常見的故障類型和調試方法

2.5.4 調試數據的設計和使用

2.5.5 調試數據和標準輸入/輸出的重新定向

2.5.6 調試工具

2.5.7 測試和調試中常見的問題

2.6 手冊的使用

習題

第3章 數值的表示和計算

3.1 整型數據類型

3.1.1 有符號數和無符號數

3.1.2 無符號數和標誌位

3.1.3 整型的截斷與擴展

3.1.4 整型計算的溢出和判斷

3.1.5 整除所引起的誤差

3.1.6 整型數據的位元組序和尾端

3.2 浮點數據類型

3.2.1 浮點數據的表示方法

3.2.2 有效數字和最低位當量

3.2.3 浮點數的比較

3.2.4 浮點數值計算中的上溢和下溢

3.3 數值計算中的類型轉換

3.3.1 基本類型轉換和數據寬度

3.3.2 強制類型轉換

3.3.3 char的符號類型

3.3.4 變數符號類型的判斷

3.4 按位操作

3.4.1 移位操作

3.4.2 標誌位的設定、檢測和清除

3.4.3 常用的位操作模式

3.4.4 位操作套用的例

3.5 數值計算的速度

習題

第4章 指針、數組、結構和類型

4.1 指針變數

4.1.1 指針變數的定義

4.1.2 指針的類型

4.1.3 指針運算

4.1.4 指針的強制類型轉換

4.1.5 不合法的指針運算

4.1.6 指針與整數

4.1.7 指針的增量運算和減量運算

4.1.8 作為函式參數的指針

4.2 指針和一維數組

4.2.1 指針和數組的互換

4.2.2 動態一維數組

4.2.3 數組複製與指針賦值

4.2.4 變數限制符const

4.2.5 數組的負數下標

4.3 二維數組和一維指針數組

4.3.1 作為參數的二維數組

4.3.2 二維數組和指針

4.3.3 二維數組和一維指針數組

4.3.4 指針數組和命令行參數

4.3.5 二維數組的動態分配

4.4 函式指針

4.4.1 函式指針變數的定義

4.4.2 函式指針變數的使用

4.4.3 函式指針數組的使用

4.5 結構

4.5.1 結構類型的定義

4.5.2 結構成員的訪問

4.5.3 結構類型的嵌套定義

4.5.4 結構的自引用

4.5.5 結構類型與函式的參數和返回值

4.6 複雜類型的解讀

4.6.1 變數定義中的複雜類型說明

4.6.2 強制類型轉換中的複雜類型

4.6.3 類型定義(typedef)語句和複雜類型的定義

習題

第5章 程式中的遞歸

5.1 遞歸的定義

5.2 遞歸函式的執行

5.3 遞歸函式的設計

5.4 遞歸的優點和缺點

5.5 遞歸函式的效率

5.6 遞歸函式的使用

5.6.1 適宜使用遞歸的情況

5.6.2 不適宜使用遞歸的情況

5.7 遞歸函式效率的改進

5.7.1 尾遞歸函式的非遞歸化

5.7.2 帶存儲機制的遞歸

5.7.3 一般遞歸函式的非遞歸化

習題

第6章 搜尋

6.1 搜尋的目標和基本過程

6.2 深度優先搜尋

6.2.1 深度優先搜尋的基本算法

6.2.2 回溯搜尋

6.3 廣度優先搜尋

6.4 重複節點的判斷

6.5 帶深度控制的廣度優先搜尋

6.6 節點的編碼和搜尋效率

習題

第7章 常用函式和函式館

7.1 靜態連結和動態連結

7.1.1 靜態連結

7.1.2 動態連結

7.2 庫函式的使用

7.2.1 標準庫函式的頭檔案

7.2.2 標準函式館檔案的使用

7.2.3 錯誤信息函式和變數

7.3 數據輸入輸出函式

7.3.1 檔案描述字和字元流

7.3.2 檔案的打開、創建和關閉

7.3.3 檔案數據的二進制格式讀寫

7.3.4 讀寫操作中的定位

7.3.5 基礎讀寫與字元流讀寫的效率比較

7.3.6 字元流的沖刷

7.3.7 檔案的屬性

7.4 字元類型和字元串函式

7.4.1 字元類型函式

7.4.2 字元串操作函式

7.5 時間函式

7.5.1 日曆時間

7.5.2 程式運行時間

7.6 隨機數函式

7.6.1 基本隨機數函式

7.6.2 均勻分布隨機數的生成

7.6.3 非均勻連續分布隨機數的生成

7.6.4 離散分布隨機數的生成

習題245

第8章 程式的最佳化

8.1 最佳化的作用和意義

8.2 最佳化的基本過程

8.2.1 運算時間和存儲空間

8.2.2 最佳化可能性的判斷

8.2.3 程式運行的整體計時

8.2.4 程式運行的分析計時和程式運行剖面

8.3 運行效率的改進策略和方法

8.3.1 調整代碼

8.3.2 改進算法

8.3.3 空間換時間

8.3.4 改進數據結構

8.3.5 了解和適應硬體的特性

8.3.6 編譯最佳化選項

8.4 空間效率的改進策略和方法

8.4.1 記憶體使用狀況的檢測

8.4.2 空間效率的改進方法

習題273

第9章 程式的風格、結構和組織

9.1 程式風格的要素

9.2 程式的描述

9.2.1 代碼描述的層次

9.2.2 代碼的函式封裝

9.2.3 數據描述控制代碼的執行

9.2.4 表達式的描述

9.2.5 預處理和變數初始化的使用

9.2.6 程式可靠性的設計要點

9.2.7 錯誤信息和日誌檔案

9.2.8 關於可移植性的考慮

9.2.9 程式中的注釋

9.3 變數使用中的規則和風格

9.3.1 變數的命名

9.3.2 變數的命名空間和作用域

9.3.3 變數的生存周期和靜態局部變數

9.3.4 全局變數的使用

9.3.5 變數與常量的比較

9.4 函式的參數和變長參數表

9.4.1 基於指針數組的變長參數處理機制

9.4.2 變長參數表

9.4.3 函式的參數傳遞

9.4.4 變長參數表的基本處理機制和工具

9.4.5 變長參數表和程式描述風格

9.4.6 vprintf()函式族

9.5 緩衝區溢出

9.6 常用編譯預處理命令的使用

9.6.1 檔案的包含

9.6.2 宏

9.6.3 條件編譯

9.7 源檔案的拆分

9.7.1 源檔案拆分的基本原則

9.7.2 源檔案的類型和後綴

9.7.3 避免.h檔案被重複引用

9.7.4 靜態全局變數

9.7.5 執行檔的生成和更新

習題

附錄

參考文獻

相關詞條

相關搜尋

熱門詞條

聯絡我們