C程式設計與項目實踐

C程式設計與項目實踐

《C程式設計與項目實踐》是2011年9月清華大學出版社出版的圖書,作者是王一萍、梁偉、金梅。

內容簡介

C語言是近幾十年來影響最為深遠的程式設計語言,在它的基礎上誕生了C++、Java和C#等當前非常流行並且極具生產力的程式設計語言,許多計算機專業人員和計算機愛好者都把C語言作為學習程式設計語言的首選。

本書不是一本大而全的C語言語法教科書,而是一個能夠讓初學者輕鬆入門和快速提高的“言傳身教”者。在編寫過程中,我們始終堅持理論與實踐並重,理論深入淺出,高屋建瓴,實踐扎紮實實、腳踏實地。

本書在系統化介紹C語言語法知識的前提下,致力於培養學生利用所學知識進行程式設計和項目實踐的能力。全書通過數十個精心設計、由淺入深、貼近實際的案例和小項目的分析講解,幫助他們學以致用、輕鬆入門和快速提高。本書案例精心設計,來源於長期的教學實踐,覆蓋了儘可能多的類型(如數值計算類、邏輯推理類、小遊戲類、事務處理類、算法學習類、設計方法類等),每一個案例都儘可能貼近實用、有意義,讓初學者愛學好學、容易上手,並且在學習過程中不知不覺、循序漸進地就掌握了眾多實用的案例,積累了豐富的小項目開發實踐經驗。

本書一開始就促使程式設計初學者把學習的焦點集中在如何利用程式設計語言進行程式設計上,而不是死摳語法,紙上談兵。“讀書百遍,不如抄書一遍”,程式設計更是“讀書百遍,不如敲書一遍”。為了便於初學者學習,本書列出了所有案例和項目的完整原始碼以及運行效果圖,供學習者閱讀、分析、領悟和超越。

本書作為程式設計類教材,著重強調超越語言的各種語言概念和指導程式設計實踐的相關思想與理念。從一開始就強調注重代碼的書寫風格,便於初學者模仿,逐漸養成良好的程式設計習慣。側重講解了疊代式、增量式的模組化程式分析、設計方法。在案例和小項目實踐中逐步地引入了測試、程式的調試、輸入驗證、持久存儲等使程式更加健壯和實用化的考慮。同一個案例或小項目在不同的章節往往採用不同的數據結構、算法以及程式架構來進行重構,使它們儘可能地貼近實際,讓學習者持久地思考和改進它們,為將來企業級的開發做足準備。

通過本教材,學習者可以在貼近實際的案例和項目中更容易地理解和掌握相關的程式設計語言的概念和語法知識,奠定紮實的基本功,同時積累豐富的小項目開發經驗。

本書注重教材的可讀性和實用性,在每章的開頭都給出了本章的學習目標,重要的知識點都給出了完整的程式示例和運行效果,結尾部分給出了本章知識點的總結,並在習題與實踐中給出了課後進一步提升的程式設計實踐項目。

本書共分9章:

第1章C語言程式設計導引,介紹什麼是計算機、什麼是程式、什麼是程式設計語言、什麼是程式設計、C語言的相關背景知識(歷史沿革及特點)、C程式設計快速入門三要素(快速開發HelloWorld程式、掌握基本的輸入/輸出手段、C程式的基本組織結構),以及HelloWorld程式擴展的幾個小案例(字元界面設計、紙張對摺到月球、IPv6地址分配、計算機的計時系統、超市計費系統1.0版)。

第2章數據類型、運算符與表達式,介紹C語言的基本數據類型、常量和變數、各種運算符和表達式、數據類型轉換,以及兩個小案例(計算機中的數學和3種方式交換兩個整數)。

第3章算法與流程控制,介紹什麼是算法、算法的流程圖表示、基本的流程控制語句(順序、分支、循環),以及3個小案例(超市計費系統2.0版、模擬龜兔賽跑1.0版、猜數遊戲1.0版)。

第4章函式與模組化程式設計,介紹函式的概念、定義、聲明、調用,參數傳遞的兩種方式,函式的嵌套和遞歸調用、變數的存儲類別、生存期和作用域,編譯預處理(包含頭檔案、宏定義及宏展開、條件編譯及特殊符號處理),模組化的編譯和連結,以及5個利用模組化方法開發的小案例(模擬龜兔賽跑2.0版、猜數遊戲2.0版、模擬銀行ATM機、石頭剪刀布遊戲、小學生四則運算練習軟體)。

第5章數組,介紹數組的概念、定義及使用,一維數組和二維數組的套用,基本的排序和查找算法,字元串操作相關庫函式,以及相關的案例(學籍管理系統、奇數階魔方矩陣)。

第6章指針,介紹地址與指針的概念,指針的基本運算,空指針與指向void的指針、多級指針的概念,指針與一維/二維數組的關係,指針與函式的關係(指向函式的指針、指針作為函式的參數、返回指針的函式、命令行參數與動態記憶體分配),以及相關的案例(尋找最長輸入行、輸入串模式匹配、輸入驗證處理、基本數據類型的存儲表示)。

第7章用戶定製數據類型,介紹結構體、共用體的概念、定義及使用,結構體與數組指針和函式的關係,鍊表的概念、創建及基本操作,枚舉類型,typedef自定義類型,位段與位操作,以及相關的案例(C關鍵字查找統計、表達式求值)。

第8章檔案,介紹檔案的概念、作用、基本操作(打開與關閉、順序讀寫、隨機讀寫、錯誤檢測等),以及相關的案例(英語單詞測試系統、軟體產權保護系統)。

第9章綜合案例分析,介紹利用不同數據結構進行疊代、增量開發的同學通訊錄系統和騎士飛行棋遊戲的完整開發過程。

本書為任課教師免費提供電子課件,包括教學用PPT、全部案例和項目的完整原始碼,以方便教學者進行教學,需要者可登錄清華大學出版社網站。

本書特別適合作為高等院校相關專業學生學習程式設計課程的教材,也可作為相關人員自學程式設計的教材和參考書。

本書由王一萍主編,梁偉、金梅參編。第1章、第4章、第6章、第9章由梁偉編寫,第2章、第8章和附錄由金梅編寫,第3章、第5章、第7章由王一萍編寫。全書由王一萍、梁偉統稿。

精彩論述

計算機的基本工作原理:

現代計算機幾乎都採用馮·諾依曼的存儲程式體系結構。它有5大部件:輸入設備、輸出設備、存儲設備、運算器和控制器。其中運算器和控制器合稱為中央處理單元,即CPU。

計算機在組織結構上非常類似於生產性的企業:輸入設備相當於原材料的採購部門,輸出設備相當於最後產品的銷售部門,存儲設備相當於企業的倉庫,運算器相當於生產車間,控制器相當於企業的經營管理部門。

在工作流程上,計算機也和生產性的企業非常類似:生產性的企業在經營管理部門(控制器)的指導控制下,通過採購部門(輸入設備)採購相應的原材料(待加工的數據),存儲在倉庫(存儲器)中,生產開始時將原材料從倉庫(存儲器)中取出送至生產車間(運算器)進行加工生產,生產的半成品或最終成品又臨時存儲在倉庫(存儲器)中,最後將成品交由銷售部門(輸出設備)進行銷售,從而完成整個生產流程。

--------以上論述摘自《C程式設計與項目實踐》一書第一章。

學習任何程式語言快速入門三要素:

1. 儘快開發出該語言版本的HelloWorld程式。

2. 掌握和理解該語言版本的基本程式結構。

3. 找出該語言中如何進行輸入輸出。

--------以上論述摘自《C程式設計與項目實踐》一書第一章。

程式設計三要素:

1. 數據結構的分析和設計;

2. 算法(即處理邏輯,微觀層次)的分析和設計;

3. 系統架構(即處理邏輯,巨觀層次)的分析和設計。

--------以上論述摘自《C程式設計與項目實踐》一書第一章。

圖書目錄

第1章 C語言程式設計導引

1.1 程式與程式設計語言

1.1.1 計算機與程式

1.1.2 程式設計語言

1.1.3 程式開發過程

1.2 C語言相關知識概述

1.2.1 C語言的歷史沿革

1.2.2 C語言的特點

1.3 C語言程式設計快速入門

1.3.1 HelloWorld程式開發過程

1.3.2 C語言的基本輸入/輸出

1.3.3 C語言程式的基本結構

1.3.4 C語言程式的簡單調試

1.4 案例分析

1.4.1 HelloWorld程式的擴展

1.4.2 紙張對摺多少次到月球

1.4.3 IPv6地址能分配多久

1.4.4 計算機系統中的計時問題

1.4.5 超市計費系統1.0版

小結

習題與實踐

第2章 數據類型、運算符與表達式

2.1 數據類型

2.1.1 基本數據類型

2.1.2 構造數據類型

2.1.3 指針和void類型

2.2 常量與變數

2.2.1 常量

2.2.2 變數

2.3 運算符與表達式

2.3.1 算術運算符

2.3.2 賦值運算符

2.3.3 關係運算符

2.3.4 邏輯運算符

2.3.5 逗號運算符

2.3.6 條件運算符

2.3.7 位運算

2.3.8 表達式求值

2.4 數據類型轉換

2.4.1 自動轉換

2.4.2 強制轉換

2.5 案例分析

2.5.1 計算機中的數學

2.5.2 交換兩個整數

小結

習題與實踐

第3章 算法與流程控制

3.1 算法的概念與表示

3.1.1 算法的概念

3.1.2 算法舉例

3.1.3 算法的特徵

3.1.4 算法的表示

3.2 順序流程控制

3.2.1 賦值語句

3.2.2 表達式語句

3.2.3 函式調用語句

3.2.4 空語句與複合語句

3.3 選擇流程控制

3.3.1 if語句

3.3.2 switch語句

3.3.3 多分支結構總結

3.4 循環結構程式設計

3.4.1 引述

3.4.2 while語句

3.4.3 do...while語句

3.4.4 for 語句

3.4.5 循環中的問題

3.4.6 循環的嵌套

3.5 案例分析

3.5.1 超市計費系統2.0版

3.5.2 模擬龜兔賽跑1.0版

3.5.3 猜數遊戲1.0版

小結

習題與實踐

第4章 函式與模組化程式設計

4.1 函式

4.1.1 函式的定義與聲明

4.1.2 函式的調用與傳參

4.1.3 函式的嵌套調用與遞歸調用

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.5 案例分析

4.5.1 模擬龜兔賽跑2.0版

4.5.2 猜數遊戲2.0版

4.5.3 模擬銀行ATM自動取款機

4.5.4 石頭剪刀布遊戲

4.5.5 小學生四則運算練習軟體

小結

習題與實踐

第5章 數 組

5.1 數組的引入

5.2 一維數組

5.2.1 一維數組的定義

5.2.2 一維數組元素的引用

5.2.3 一維數組的初始化

5.2.4 一維數組與函式的關係

5.2.5 一維數組的簡單套用

5.2.6 排序與查找

5.3 二維數組

5.3.1 二維數組的定義

5.3.2 二維數組元素的引用

5.3.3 二維數組的初始化

5.3.4 二維數組的套用

5.4 字元數組與字元串

5.4.1 字元數組與字元串

5.4.2 字元串輸入輸出

5.4.3 字元串處理庫函式

5.4.4 字元串的套用

5.5 案例分析

5.5.1 學籍管理系統

5.5.2 奇數階魔方矩陣

小結

習題與實踐

第6章 指 針

6.1 指 針 基 礎

6.1.1 指針的概念

6.1.2 指針的運算

6.1.3 空指針與指向void的指針

6.1.4 多級指針

6.2 指針與數組

6.2.1 指向數組元素的指針

6.2.2 指向數組的指針

6.2.3 指針數組

6.2.4 數組作為函式參數

6.2.5 指針與字元串

6.3 指針與函式

6.3.1 指針作為函式的參數

6.3.2 指向函式的指針

6.3.3 返回指針的函式

6.3.4 命令行參數

6.3.5 動態記憶體分配

6.4 案例分析

6.4.1 尋找最長行

6.4.2 輸入模式匹配

6.4.3 輸入驗證處理

6.4.4 基本數據類型的存儲表示

小結

習題與實踐

第7章 用戶定製數據類型

7.1 結構體類型基礎

7.1.1 結構體類型定義

7.1.2 結構體變數的定義及初始化

7.1.3 結構體變數的引用

7.2 結構體數組

7.2.1 結構體數組的定義與初始化

7.2.2 結構體數組元素的引用

7.3 結構體指針

7.3.1 指向結構體變數的指針

7.3.2 指向結構體數組的指針

7.4 結構體與函式

7.4.1 結構體變數作為函式參數

7.4.2 結構體指針作為函式參數

7.4.3 返回結構體的函式

7.5 鍊表

7.5.1 鍊表的概念

7.5.2 簡單鍊表

7.5.3 鍊表的基本操作

7.6 共用體類型

7.7 枚 舉 類 型

7.8 typedef自定義類型

7.9 位段與位操作

7.9.1 位段結構類型及位段結構變數

的定義

7.9.2 位段結構的使用

7.10 案例分析

7.10.1 C關鍵字查找統計

7.10.2 表達式求值

小 結

習題與實踐

第8章 檔案

8.1 檔案的相關概念

8.1.1 檔案及檔案分類

8.1.2 檔案名稱、目錄與路徑

8.1.3 檔案指針與檔案位置指針

8.2 檔案的打開與關閉

8.2.1 檔案的打開

8.2.2 檔案的關閉

8.3 檔案的讀寫操作

8.3.1 檔案的順序讀寫

8.3.2 檔案的隨機讀寫

8.4 檔案檢測函式

8.4.1 檔案結束檢測函式feof函式

8.4.2 讀寫檔案出錯檢測函式

8.4.3 檔案出錯標誌和檔案結束標誌

置0函式

8.5 案例分析

8.5.1 英語單詞測試系統

8.5.2 軟體產權保護系統

小結

習題與實踐

第9章 綜合案例分析

9.1 同學通訊錄系統

9.2 騎士飛行棋遊戲

小結

習題與實踐

附錄A 運算符的優先權與結合性

附錄B ASCII碼錶

附錄C C語言庫函式

參考文獻

相關詞條

相關搜尋

熱門詞條

聯絡我們