C
M
Y
CM
MY
CY
CMY
K
書名頁.pdf 1 2019/1/9 下午 10:13:36
C
M
Y
CM
MY
CY
CMY
K
Blue Ocean BO18201
C 語言入門精要
C 語言入門精要 / 康廷數位著. -- 初版.-新北市 : 藍海文化, 2019.02 面 ; 公分 ISBN 978-986-6432-92-7(平裝)
康廷數位
1.C(電腦程式語言) 312.32C
C
M
2019
107020810
2
Y
余旻禎
CM
MY
CY
CMY
K
2019
vi C 語言入門精要
a0.indd vi
2016/8/31 下午 11:11:04
/31 下午 11:11:04
前言
◎ 前言 C 是近代程式語言的基礎,相較於新世代的語言(例如 Java),學習曲線較為陡
峭,由於早期軟體技術未臻成熟,語言本身的設計不夠直觀,因此程式設計師 必須花費更大的心力才能具備駕馭這門語言的能力。 不過 C 語言具備其它程式語言無法企及的優點,高效能、操作記憶體的指標設 計與硬體控制能力,更是被用來實作包含了 Windows 以及 Linux 等主流作業系 統的程式語言,也因此儘管新的程式語言不斷出現, C 語言依然還是所有資訊 科系必修的入門課程之一。 本書透過精巧的範例搭配簡單易懂的說明圖示,闡述各項語法元素以及初學者 必須瞭解的程式敘述建構技巧。 除了變數、流程控制等基礎課程,更針對最難以理解的指標課程進行切割,分 成入門與應用等兩個獨立的章節,循序漸進,提供老師與學生最美好的 C 語言 教學與學習體驗。
◎ 閱讀建議 本書假設讀者沒有程式設計的背景知識,內容以入門讀者需要瞭解的進度編排 設計,因此請依照順序逐章研讀。 每一章結束的摘要截取章節重點,可以協助快速掌握重點。 課後練習請逐題練習,以取得最佳的學習效果。
◎ 勘誤與問題回應 若是您在本書閱讀學習的過程中有任何問題,歡迎至本書專屬資訊頁,留下您 的寶貴意見與想法,網址如下:
http://www.kangting.tw/2019/01/c-programming-language.html
C 語言入門精要 vii
前言
任何與本書有關的資訊,包含範例檔案下載、勘誤發布以及未來的延伸與教學 內容,甚至改版資訊,都將公布在這個網頁中。
◎ 誌謝 本書得以問市,要感謝「藍海文化」團隊於書籍排版編輯製作的支援,出版部 主編沈志翰、編輯林瑜璇這段時間的書籍製作統籌與聯繫工作,以及協助本書 封面設計的余旻禎小姐與內文排版的徐慶鐘先生,感謝你們。 另外,負責本書問市之後,市場行銷作業的業務團隊,對於未來你們即將為本 書銷售所付出的努力,「康廷數位」在這裡同時表達感謝之意。
viii C 語言入門精要
目錄總表
目錄總表
01 02 03 04 05 06 07 08 09 10 11 12 13 14 A B
C 語言概觀 變數與資料型態 運算子 輸出與輸入 決策流程控制 迴圈 函數 前置處理器與標準函數 陣列 指標 指標與陣列 結構與列舉型態 檔案資料讀寫 模組設計與應用程式發展
Dev-C++ 安裝與設定 ASCII 字元表
C 語言入門精要 ix
目錄
目錄
01 C 語言概觀 1.1 1.2 1.3 1.4 1.5 1.6
關於 C 語言
1-2
撰寫、編譯與執行
1-4
簡單的實作
1- 6
關於錯誤處理
1-10
C 程式語法
1-11
函數與 C 程式架構
1-16
1.6.1 程式區塊與巢狀架構
1-16
1.6.2 標頭檔與 #include
1-18
1.6.3 運算式以及程式敘述
1-20
1.6.4 變數與宣告
1-22
1.6.5 關鍵字
1-23
1.7 輸出與輸入 學習評量
02 變數與資料型態 2.1 變數
1-24 1-28
2-1 2-2
2.1.1 關於變數
2-2
2.1.2 關於 printf() 與資料輸出
2-4
2.1.3 變數宣告與資料存取
2-5
2.1.4 同時宣告多個變數
2-7
2.1.5 修改變數值
2-8
2.2 常數
x C 語言入門精要
1-1
2-9
目錄
2.3 資料型態
2-11
2.3.1 關於資料型態
2-12
2.3.2 使用整數
2-13
2.3.3 無號整數
2-14
2.3.4 不當設值溢位
2-15
2.3.5 浮點數型態
2-17
2.3.6 字元
2-19
2.3.7 跳脫字元
2-22
2.3.8 關於布林型態
2-25
2.4 型態轉換
2-26
學習評量
2-30
03 運算子 3.1 程式敘述與運算式 3.2 運算子
3.3 3.4 3.5 3.6 3.7
3-1 3-2 3-3
3.2.1 運算元與運算子
3-3
3.2.2 設值運算子
3-5
3.2.3 算數運算子
3- 6
3.2.4 變數自身的運算
3-12
3.2.5 單一運算元運算子
3-13
3.2.6 算數與設值複合運算
3-14
關係運算子
3-15
邏輯運算子
3-18
條件式運算子
3-20
運算子優先順序
3-21
運算過程的型態轉換
3-23
學習評量
3-28
C 語言入門精要 xi
目錄
04 輸出與輸入 4.1 printf() 與格式化輸出
4-2
4.1.1 使用 printf()
4-2
4.1.2 printf() 與格式化輸出
4-3
4.1.3 型態轉換
4-7
4.1.4 八進位與十六進位格式
4-7
4.1.5 格式化輸出的排版
4 -8
4.2 使用 scanf() 與輸入
4-12
4.2.1 使用 scanf() 建立輸入功能
4-12
4.2.2 多參數輸入
4-14
4.2.3 scanf() 與數值資料輸入
4-15
4.2.4 scanf() 與字元資料輸入
4-17
4.2.5 連續讀取資料
4-20
4.2.6 fflush() 函數與緩衝區資料清除
4-23
4.2.7 整數與字串的混合擷取
4-24
4.3 其它字元讀取功能函數 學習評量
05 決策流程控制 5.1 關於流程控制 5.2 if-else 敘述
xii C 語言入門精要
4-1
4-25 4-30
5-1 5-2 5- 4
5.2.1 使用 if
5-5
5.2.2 包含運算式的 if 判斷式
5-9
5.2.3 結合邏輯運算子
5-10
5.2.4 if 的簡易寫法
5-12
5.2.5 巢狀式 if 區塊
5-15
5.2.6 if-else 判斷式
5-16
目錄
5.2.7 if-else if 判斷式
5-19
5.2.8 else 與 else if 的合併使用
5-21
5.2.9 if-else 巢狀迴圈
5-22
5.3 switch 敘述
5-23
5.3.1 使用 switch 實作多重判斷式
5-24
5.3.2 break 與 case 中斷
5-26
5.3.3 default
5-28
學習評量
5-32
06 迴圈
6-1
6.1 關於迴圈 6.2 固定次數的迴圈 ‒ for 敘述
6-2 6-3
6.2.1 使用 for 迴圈
6-4
6.2.2 for 無窮迴圈
6-6
6.2.3 迴圈計數的進一步設定
6 -8
6.2.4 巢狀式 for 迴圈
6-10
6.3 while 迴圈
6-11
6.3.1 使用 while 迴圈
6-12
6.3.2 do - while
6-14
6.3.3 巢狀式 while
6-16
6.3.4 while 無窮迴圈
6-17
6.4 迴圈中斷
6-18
6.4.1 break
6-18
6.4.2 continue
6-20
6.5 goto 6.6 區塊變數的有效範圍
6-22
學習評量
6-24 6-27
C 語言入門精要 xiii
目錄
07 函數
7-1
7.1 關於函數 7.2 使用函數
7-2 7-4
7.2.1 宣告、定義與呼叫
7-4
7.2.2 函數的參數
7-7
7.2.3 函數回傳值
7-10
7.3 函數與有效區域
7-13
7.3.1 變數與宣告範圍
7-13
7.3.2 全域變數
7-16
7.3.3 靜態變數
7-19
7.4 函數的參數傳遞方式 7.5 遞迴
7-20
學習評量
08 前置處理器與標準函數 8.1 前置處理器
7-30
8-1 8-2
8.1.1 關於前置處理器
8-2
8.1.2 #define
8-3
8.1.3 #define 的問題
8-5
8.1.4 #include
8-7
8.2 使用標準函數庫-數學函數
xiv C 語言入門精要
7-22
8-11
8.2.1 數學函數與 math.h
8-11
8.2.2 指數與對數函數
8-12
8.2.3 次方與開根號
8-14
8.2.4 取得近似整數
8-15
8.2.5 亂數
8-16
目錄
8.3 使用標準函數庫-時間日期函數
8-19
8.3.1 取得目前的系統時間
8-19
8.3.2 取得程式執行時間
8-21
8.3.3 計算時間差
8-22
學習評量
8-25
09 陣列
9-1
9.1 陣列 9.1.1
9-2 關於陣列
9-2
9.1.2 陣列的變數存取
9-5
9.1.3 陣列長度
9-7
9.1.4 使用陣列的錯誤
9 -8
9.1.5 初始化陣列
9-10
9.1.6 陣列元素的列舉
9-11
9.1.7 空陣列
9-12
9.2 多維陣列
9-13
9.2.1 二維陣列
9-13
9.2.2 利用巢狀式迴圈列舉二維陣列
9-17
9.2.3 二維陣列的初始化
9-18
9.2.4 三維陣列
9-19
9.3 陣列與函數參數的傳址呼叫 9.4 字串資料
9-20 9-23
9.4.1 關於字串
9-23
9.4.2 宣告固定長度字元陣列
9-24
9.4.3 字串與字元
9-25
9.4.4 gets() 與 puts()
9-26
9.5 字串陣列 9.6 字串函數
9-28 9-29 C 語言入門精要 xv
目錄
9.6.1 取得字串長度
9-29
9.6.2 轉換大小寫
9-30
9.6.3 搜尋子字串
9-31
9.6.4 複製與串接字串
9-32
學習評量
9-36
10 指標
10-1
10.1 變數與儲存位址 10.2 使用指標
10 -2 10 -4
10.2.1 變數與指標變數
10 -4
10.2.2 「*」 與「指標變數」宣告
10 -8
10.2.3 「指標變數」的重設與變數位址
10 -9
10.2.4 「指標變數」與變數內容變更
10 -11
10.2.5 「指標變數」的型態
10 -12
10.2.6 指標的位址架構與運算
10 -13
10.3 指標與函數
10 -17
10.3.1 指標與函數引數
10 -17
10.3.2 「指標變數」的傳址行為
10 -18
10.3.3 回傳指標
10 -21
10.4 雙重指標
10 -23
學習評量
10 -28
11 指標與陣列 11.1 陣列的位址 11.2 陣列指標與元素存取
xvi C 語言入門精要
11-1 11-2 11-5
11.2.1 透過指標存取陣列元素
11-5
11.2.2 變更陣列位址值的錯誤
11-9
目錄
11.3 以指標為儲存元素的陣列 11.4 指標與二維陣列
11-11
11.4.1 二維陣列位址
11-14
11.4.2 二維陣列的指標運算
11-16
11-14
11.5 字串與陣列指標
11-18
學習評量
11-21
12 結構與列舉型態
12-1
12.1 建立與使用結構
12-2
12.1.1 建立結構
12-2
12.1.2 初始化結構成員
12-4
12.1.3 結構陣列
12-7
12.1.4 全域結構
12-9
12.2 結構型態與函數 12.3 定義型態名稱 12.4 巢狀式結構 12.5 指標與結構
12-9 12-12 12-14 12-16
12.5.1 結構指標
12-16
12.5.2 結構陣列與指標
12-18
12.6 列舉
12-19
12.6.1 建立列舉
12-19
12.6.2 列舉常數的設定
12-22
學習評量
12-26
13 檔案資料讀寫 13.1 檔案與資料
13-1 13-2
C 語言入門精要 xvii
目錄
13.2 檔案處理函數 13.3 檔案操作
13-4 13-4
13.3.1 開啟檔案
13-5
13.3.2 關閉檔案
13-7
13.4 檔案讀取
13-8
13.4.1 讀取單一字元
13-8
13.4.2 讀取字串
13-11
13.5 檔案寫入
13-12
13.5.1 寫入單一字元
13-12
13.5.2 寫入字串
13-15
13.6 複製檔案 13.7 檔案緩衝區 13.8 無緩衝區資料讀寫
13-17 13-18 13-19
13.8.1 無緩衝區檔案讀寫函數
13-19
13.8.2 開啟與關閉檔案
13-19
13.8.3 讀寫檔案
13-22
13.9 二進位格式檔案讀寫
13-24
13.9.1 fread() 與 fwrite()
13-24
13.9.2 無緩衝區的檔案讀寫
13-27
學習評量
13-31
14 模組設計與應用程式發展
14-1
14.1 多函數呼叫 14.2 檔案模組設計
14-2
14.2.1 切割檔案
14-4
14.2.2 函數功能檔案實作與編譯
14-5
14.2.3 建立程式專案
14-7
xviii C 語言入門精要
14-4
目錄
14.2.4 引用外部檔案函數
14-10
14.2.5 專案檔
14-14
14.3 條件式編譯 學習評量
14-15 14-20
A Dev-C++ 安裝與設定
A-1
B ASCII 字元表
B-1
C 語言入門精要 xix
C
M
Y
CM
MY
CY
CMY
K