本書以C語言為工具,力圖用最簡明的語言、最典型的實例,介紹計算思維和程序設計的基本方法,把它們的核心思想貫穿于C語言的介紹中,目的是使讀者在學習C語言以后,能夠用計算思維和程序設計的方法解決相關領域中的實際問題。本書分13章,內容包括:C語言基本概念,數(shù)據(jù)類型與表達式,格式化輸入與輸出,選擇結構,循環(huán)結構,函數(shù),數(shù)組,指針,字符串,指針與數(shù)組,自定義數(shù)據(jù)類型,文件,構建大規(guī)模程序。每單后均有習題,掃描第1~12章后的二維碼,可以獲取本章知識點小結和本章常見錯誤小結。本書免費提供電子課件,登錄華信教育資源網(www.hxedu.com.cn)注冊后下載。本書假設讀者沒有任何編程背景,既可以是學生及計算機用戶,也可以是有經驗的但不熟悉C語言、需要掌握結構化程序設計方法的程序員。
曾智勇,博士,福建師范大學數(shù)學與信息學院副教授,數(shù)字福建大數(shù)據(jù)安全技術研究所副所長,中國人工智能學會科普委員會委員,教育部示范性軟件學院數(shù)字媒體技術專業(yè)規(guī)范研制專家組專家,中國計算機學會高級會員,中國圖象圖形學會高級會員,福建省科技廳專家,福州市科技局專家。主要從事計算機視覺、模式識別與人工智能方向的研究。先后主持或參與承擔了"中國電子政務應用示范工程”863科技攻關項目,"十五”軍用高科技掃描輸入技術"總裝備部軍事預研項目,"醫(yī)療CT圖像三維建模系統(tǒng)”,"支持采編播一體化的多通道收錄系統(tǒng)關鍵技術研究與應用”福建省省科技廳高校產學合作重大項目,"基于計算機視覺的疲勞駕駛檢測系統(tǒng)研制”福建省科技重點課題;"圖像語義的形式化分析與驗證”,"基于區(qū)域語義和相關反饋的多媒體檢索系統(tǒng)設計”,<<基于區(qū)域語義和相關反饋的圖像檢索系統(tǒng)的設計與實現(xiàn)>>多項福建省自然科學基金等科研攻關項目,在國內外核心期刊及國際會議上發(fā)表學術論文40多篇,其中被SCI或EI收錄20余篇。主持或參與福建省級精品在線課程"C語言程序設計”,福建省精品課程"C及面向對象程序設計”,福建師范大學"金課”。
第1章 C語言基本概念 1
1.1 計算機語言和程序 1
1.1.1 計算機語言 1
1.1.2 計算機程序 1
1.1.3 C語言 2
1.1.4 程序設計 2
1.2 算法和算法表示 3
1.2.1 算法的概念 4
1.2.2 算法的特征 5
1.2.3 算法的表示 6
1.2.4 算法的優(yōu)化 12
1.2.5 結構化程序設計方法 14
1.3 C語言編程 17
1.4 變量、表達式和賦值 19
1.5 從鍵盤讀取輸入 20
1.6 常量定義 21
1.7 標識符 23
1.8 C程序的結構特點 24
1.9 C語言編程風格 25
習題1 26
第2章 數(shù)據(jù)類型與表達式 28
2.1 變量聲明與表達式 28
2.2 基本數(shù)據(jù)類型 28
2.3 整型 29
2.4 浮點型 30
2.5 算術運算符與表達式 31
2.5.1 算術運算符 31
2.5.2 算術表達式 33
2.6 賦值運算符與表達式 34
2.6.1 賦值運算符 34
2.6.2 賦值表達式 34
2.6.3 復合賦值運算符及表達式 35
2.7 自增/自減運算符 36
2.8 字符型 36
2.9 字符處理函數(shù) 38
2.10 類型轉換 40
2.11 類型定義 42
習題2 43
實驗題 46
第3章 格式化輸入與輸出 47
3.1 輸出函數(shù) 47
3.2 輸入函數(shù) 50
習題3 55
實驗題 56
第4章 選擇結構 57
4.1 關系、等式和邏輯運算符 57
4.2 邏輯運算符和表達式 58
4.3 復合語句 59
4.4 空語句 59
4.5 if語句 59
4.6 if-else語句 61
4.7 if語句的嵌套 62
4.8 級聯(lián)式語句 66
4.9 switch語句 67
4.10 條件表達式 69
4.11 程序舉例與測試 70
4.12 本章擴展內容:位運算 73
4.12.1 位運算符 73
4.12.2 位邏輯運算 73
4.12.3 移位運算 74
4.12.4 復合位運算賦值運算符 75
4.12.5 位運算的應用 75
習題4 76
實驗題 81
第5章 循環(huán)結構 82
5.1 循環(huán)結構與循環(huán)語句 82
5.2 計數(shù)控制的循環(huán) 87
5.3 嵌套循環(huán) 89
5.4 條件控制的循環(huán) 91
5.5 流程的控制轉移 95
5.5.1 break語句 95
5.5.2 continue語句 96
5.5.3 goto語句 98
5.6 應用舉例 99
習題5 103
實驗題 105
第6章 函數(shù) 107
6.1 模塊化程序設計 107
6.2 函數(shù)的定義 108
6.2.1 函數(shù)的分類 108
6.2.2 函數(shù)的定義 108
6.3 函數(shù)調用 109
6.4 函數(shù)原型聲明 111
6.5 函數(shù)封裝與防御性編程 113
6.6 函數(shù)設計的基本原則 118
6.7 函數(shù)的嵌套調用 119
6.8 函數(shù)的遞歸調用和遞歸函數(shù) 120
6.9 變量的作用域和存儲類型 122
6.9.1 變量的作用域 122
6.9.2 變量的存儲類型 124
6.10 模塊化程序設計實例 128
習題6 132
實驗題 135
第7章 數(shù)組 136
7.1 一維數(shù)組 136
7.2 二維數(shù)組 138
7.3 一維數(shù)組作為函數(shù)參數(shù) 140
7.4 排序與查找 144
7.5 二維數(shù)組作為函數(shù)參數(shù) 152
習題7 154
實驗題 157
第8章 指針 158
8.1 指針和指針變量 158
8.2 指針變量的定義和初始化 158
8.3 間接尋址運算符 161
8.4 指針變量作為函數(shù)參數(shù) 163
8.5 指針變量作為函數(shù)參數(shù)應用舉例 166
8.6 函數(shù)指針及其應用 171
習題8 174
實驗題 176
第9章 字符串 178
9.1 字符串常量 178
9.2 字符串的存儲 178
9.3 字符指針 179
9.4 字符串的讀/寫 180
9.5 字符串處理函數(shù) 184
9.6 字符串作為函數(shù)參數(shù) 186
9.7 從函數(shù)返回字符串指針 187
習題9 189
實驗題 191
第10章 指針與數(shù)組 192
10.1 指針的運算 192
10.2 指針和一維數(shù)組的關系 192
10.3 指針和二維數(shù)組的關系 197
10.4 指針數(shù)組及其應用 201
10.5 動態(tài)數(shù)組 205
10.5.1 C程序的內存映像 205
10.5.2 動態(tài)內存分配函數(shù) 206
10.5.3 一維動態(tài)數(shù)組的內存分配 208
10.5.4 二維動態(tài)數(shù)組的內存分配 209
習題10 211
實驗題 212
第11章 自定義數(shù)據(jù)類型 214
11.1 用戶自定義數(shù)據(jù)類型和信息隱藏 214
11.2 結構體的定義 214
11.3 結構體變量的初始化 216
11.4 結構體的嵌套 217
11.5 結構體變量的引用 217
11.6 結構體變量在內存中的存儲形式 219
11.7 結構體數(shù)組的定義和初始化 220
11.8 結構體指針的定義和初始化 223
11.9 結構體作為函數(shù)參數(shù) 224
11.10 共用體 229
11.11 枚舉類型 231
11.12 單向鏈表 234
11.12.1 問題的提出 234
11.12.2 鏈表 234
11.12.3 單向鏈表的創(chuàng)建 235
11.12.4 單向鏈表的搜索 237
11.12.5 從單向鏈表中刪除節(jié)點 238
習題11 242
實驗題 244
第12章 文件 246
12.1 文件分類 246
12.2 文件的打開與關閉 247
12.3 順序讀/寫文件 248
12.3.1 讀/寫字符 248
12.3.2 讀/寫字符串 251
12.3.3 格式化讀/寫文件 253
12.3.4 讀/寫數(shù)據(jù)塊 257
12.4 隨機讀/寫文件 260
12.5 標準輸入/輸出重定向 262
習題12 263
實驗題 265
第13章 構建大規(guī)模程序 266
13.1 頭文件 266
13.1.1 #include指令的使用 266
13.1.2 定義共享類型和宏 266
13.1.3 共享函數(shù)原型 267
13.1.4 共享變量聲明 268
13.1.5 嵌套包含 268
13.1.6 保護頭文件 268
13.1.7 頭文件中的#error指令 269
13.2 源文件 269
13.3 多文件程序的設計 269
13.4 構建多文件程序 273
13.4.1 makefile文件 274
13.4.2 鏈接錯誤 274
13.4.3 重構程序 275
13.4.4 在程序外定義宏 276
習題13 277
實驗題 277
附錄A Dev-C++和Visual C++下基本數(shù)據(jù)類型的取值范圍 278
附錄B 關鍵字 278
附錄C 運算符的優(yōu)先級與結合性 279
附錄D ASCII字符表 280
附錄E ANSI C標準庫函數(shù) 282
附錄F Dev-C++集成開發(fā)環(huán)境 289
參考文獻 292