本書是“十二五”普通高等教育本科國家級規(guī)劃教材和國家精品課程教材。全書共10章,內容包括:程序設計ABC,數(shù)據(jù)類型、運算符和表達式,鍵盤輸入和屏幕輸出,程序的控制結構,函數(shù),數(shù)組,指針,結構體和共用體,文件操作,游戲程序設計等。本書注重教材的可讀性和可用性,每章開頭有內容關鍵詞、重點和難點;每章結尾安排本章小結,給出了該章常見編程錯誤提示;典型例題一題多解,由淺入深,強化知識點、算法、編程方法與技巧;將程序測試、程序調試與排錯、軟件的健壯性和代碼風格、結構化與模塊化程序設計方法等軟件工程知識以及弘揚傳統(tǒng)文化和社會主義核心價值觀的元素融入其中,新增對華為鯤鵬技術的相關內容的介紹,包括“C語言程序設計精髓”智能基座精品慕課中與華為鯤鵬技術相關的微視頻;配套教材《C語言大學實用教程學習指導(第5版)》包括習題解答、上機實驗指導、案例分析三部分,案例分析中給出了錯誤案例與趣味經典實例分析;為任課教師免費提供電子課件及全部例題和習題源代碼。本書為新形態(tài)教材,配備豐富的教學資源,讀者可以掃描相應的二維碼來獲取相關教學資源。本書是一本充滿趣味性和實用性的大學C語言教材,適合作為大學各專業(yè)公共課教材、ACM程序設計大賽培訓教材和全國計算機等級考試參考書。
蘇小紅,博士,教授,博士生導師,省級教學名師,中國計算機學會高級會員,全國高等學校計算機基礎教育研究會理事,EI期刊《系統(tǒng)工程與電子技術》編委,《計算機學報》等國內多種核心以上期刊的審稿人,寶鋼優(yōu)秀教師獎、省師德先進個人、省優(yōu)秀教師獲得者。
目 錄
第1章 程序設計ABC 1
1.1 計算機與人 1
1.2 計算機與程序設計語言 3
1.3 程序設計語言的故事 5
1.4 C語言的故事 7
1.5 程序設計語言的工作原理 10
本章小結 12
習題1 12
第2章 數(shù)據(jù)類型、運算符和表達式 13
2.1 一個簡單的C程序例子 13
2.2 C語言程序常見符號分類 15
2.3 數(shù)據(jù)類型 16
2.3.1 為什么引入數(shù)據(jù)類型 16
2.3.2 從基本數(shù)據(jù)類型到抽象數(shù)據(jù)類型 17
2.3.3 類型修飾符 18
2.3.4 標識符命名 19
2.4 常量 20
2.4.1 整型常量 20
2.4.2 實型常量 20
2.4.3 字符常量 21
2.4.4 字符串常量 22
2.4.5 宏常量 22
2.4.6 枚舉常量 23
2.5 變量 24
2.5.1 變量的定義與初始化 24
2.5.2 const類型修飾符 25
2.5.3 使用變量時的注意事項 25
2.6 常用運算符及表達式 32
2.6.1 運算符的優(yōu)先級和結合性 32
2.6.2 算術運算符 32
2.6.3 關系運算符 34
2.6.4 邏輯運算符 35
2.6.5 賦值運算符 36
2.6.6 增1和減1運算符 37
2.6.7 類型強制轉換運算符 39
2.6.8 位運算符 40
2.6.9 逗號運算符 41
2.7 賦值運算和表達式中的類型轉換 42
本章小結 43
習題2 44
第3章 鍵盤輸入和屏幕輸出 46
3.1 C語句分類 46
3.2 表達式語句 46
3.3 復合語句和空語句 47
3.4 基本的輸入、輸出操作 48
3.4.1 字符輸入和輸出 48
3.4.2 格式輸入/輸出 49
*3.4.3 使用scanf()函數(shù)時需要注意的問題 55
本章小結 62
習題3 63
第4章 程序的控制結構 65
4.1 算法及其描述方法 65
4.1.1 算法的概念 65
4.1.2 算法的描述方法 66
4.2 順序結構 68
4.2.1 順序結構的流程圖表示 68
4.2.2 應用程序舉例 69
4.3 選擇結構 72
4.3.1 應用場合 72
4.3.2 選擇結構的流程圖表示 73
4.3.3 條件語句 73
4.3.4 開關語句 81
4.4 循環(huán)結構 85
4.4.1 應用場合 85
4.4.2 循環(huán)結構的流程圖表示 86
4.4.3 循環(huán)語句 86
4.4.4 單重循環(huán)程序實例 88
4.4.5 嵌套循環(huán)及其程序實例 99
4.5 流程轉移控制語句 103
4.5.1 goto語句 103
4.5.2 break和continue語句 104
4.5.3 程序實例 106
*4.6 程序調試與排錯 110
4.6.1 程序中常見的出錯原因 110
4.6.2 程序調試與排錯的基本方法 111
4.6.3 使用getchar()需要注意的問題 113
*4.7 結構化程序設計方法簡介 119
4.7.1 關于goto論戰(zhàn) 119
4.7.2 結構化程序設計的核心思想 119
4.7.3 “自頂向下、逐步求精”的程序設計方法 120
本章小結 124
習題4 125
第5章 函數(shù) 130
5.1 程序設計的藝術 130
5.2 函數(shù)的定義和使用 131
5.2.1 函數(shù)的分類 131
5.2.2 函數(shù)的定義 132
5.2.3 函數(shù)的調用、參數(shù)傳遞和返回值 133
5.2.4 函數(shù)原型 134
5.2.5 主函數(shù)的特殊性 135
5.3 變量的作用域和存儲類型 136
5.3.1 變量的作用域 136
5.3.2 全局變量 137
5.3.3 變量的存儲類型 138
5.4 函數(shù)封裝 140
5.5 預處理指令 140
5.5.1 #include指令 140
5.5.2 #define和#undef指令 141
5.5.3 條件編譯 143
5.6 使用assert()查錯 143
5.7 模塊和鏈接 145
*5.8 模塊化程序設計方法簡介 147
5.8.1 模塊劃分的原則 147
5.8.2 應用實例——“猜數(shù)”游戲 148
*5.9 遞歸 150
5.9.1 遞歸問題的提出 150
5.9.2 遞歸函數(shù) 151
本章小結 154
習題5 155
第6章 數(shù)組 157
6.1 數(shù)組類型的應用場合 157
6.2 數(shù)組的定義、引用和初始化 157
6.2.1 數(shù)組的定義 157
6.2.2 數(shù)組的引用 159
6.2.3 數(shù)組的初始化 160
6.2.4 程序實例 161
6.3 向函數(shù)傳遞一維數(shù)組 166
6.4 向函數(shù)傳遞二維數(shù)組 176
6.5 字符數(shù)組 180
6.5.1 字符數(shù)組與字符串的關系 180
6.5.2 字符數(shù)組的輸入/輸出 182
6.5.3 字符串處理函數(shù) 183
6.5.4 應用實例 184
本章小結 187
習題6 188
第7章 指針 191
7.1 指針概述 191
7.1.1 指針的概念 191
7.1.2 為什么引入指針的概念 193
7.1.3 指針變量作為函數(shù)參數(shù) 195
7.1.4 字符指針作為函數(shù)參數(shù) 203
7.2 指針和數(shù)組間的關系 210
7.2.1 一維數(shù)組的地址和指針 210
7.2.2 二維數(shù)組的地址和指針 217
7.3 指針數(shù)組 222
*7.4 函數(shù)指針 226
*7.5 帶參數(shù)的main()函數(shù) 231
*7.6 動態(tài)數(shù)組的實現(xiàn) 233
7.6.1 C語言程序的內存映像 233
7.6.2 動態(tài)內存分配函數(shù) 234
7.6.3 一維動態(tài)數(shù)組的實現(xiàn) 236
7.6.4 二維動態(tài)數(shù)組的實現(xiàn) 237
*7.7 使用const修飾指針變量 238
*7.8 代碼風格 239
7.8.1 程序版式 240
7.8.2 命名規(guī)則 242
7.8.3 函數(shù)設計 243
7.8.4 防御性程序設計 243
本章小結 244
習題7 246
第8章 結構體和共用體 248
8.1 結構體的應用場合 248
8.2 結構體類型與結構體變量 250
8.2.1 結構體類型的聲明 250
8.2.2 用typedef定義結構體類型 250
8.2.3 結構體變量的定義 251
8.2.4 指向結構體變量的指針 253
8.2.5 結構體變量的引用和初始化 254
8.3 結構體數(shù)組 256
8.3.1 結構體數(shù)組的定義 256
8.3.2 結構體數(shù)組程序實例 257
8.3.3 指向結構體數(shù)組的指針 260
8.4 向函數(shù)傳遞結構體 261
*8.5 動態(tài)數(shù)據(jù)結構 263
8.5.1 問題的提出 263
8.5.2 鏈表的定義 264
8.5.3 鏈表的特點及操作原理 265
8.5.4 鏈表的建立 265
8.5.5 鏈表的刪除操作 267
8.5.6 鏈表的插入操作 269
8.6 共用體 271
本章小結 273
習題8 273
第9章 文件操作 275
9.1 計算機中的流 275
9.2 文件 276
9.2.1 存儲設備的使用 276
9.2.2 目錄 277
9.2.3 文件格式 277
9.3 基本文件操作 278
9.3.1 基本文件操作函數(shù) 278
9.3.2 錯誤處理 281
9.3.3 程序示例 282
9.3.4 基本文件操作的意義 285
9.4 高級文件操作 285
9.4.1 文件的打開和關閉 285
9.4.2 文件的讀和寫 286
9.4.3 程序實例 287
9.4.4 標準輸入和標準輸出 289
本章小結 290
習題9 291
第10章 游戲程序設計 293
10.1 動畫設計的基本原理 293
10.2 人機交互走迷宮 294
10.3 自動走迷宮 297
本章小結 301
習題10 301
附錄A C關鍵字 303
附錄B GCC中各數(shù)據(jù)類型所占字節(jié)數(shù)和取值范圍 304
附錄C C運算符的優(yōu)先級與結合性 305
附錄D ASCII字符編碼 306
附錄E ASCII表和ASCII擴展碼字符表 307
附錄F 常用的ANSI C標準庫函數(shù) 308
附錄G Intel x86系列處理器與華為鯤鵬處理器的異同 313
參考文獻 316