本書嚴格遵循C語言標準,全面、系統、深入淺出地闡述了C語言的基本概念、語法和語義,以及用C語言進行程序設計的方法和技術。全書共三篇,第一篇為“C語言程序設計基礎知識”,第二篇為“C語言高級編程技術”,第三篇為“C語言綜合應用與實踐”。第一篇強調對基本概念的理解和掌握,主要講解C語言的語法規則、C語言的基本控制結構、數組、函數等知識;第二篇強調在理解和掌握的基礎上運用高級編程技術的方法編寫程序的能力,該篇主要介紹了指針、結構體、共用體、文件等相關知識;第三篇重在培養學生綜合編程能力及程序編碼的規范性,主要介紹了學生成績管理系統的設計和開發。
本書內容豐富,可讀性強,內容的編排盡量符合初學者的要求,在實例的選擇上從易到難,并且能夠解決一些實際問題。配套的實驗指導書《C語言趣味實驗》可以強化學生熟練和鞏固所學知識。
本書可作為大學本科計算機和相關專業的“C程序設計”教材,也適合作為C語言初學者的入門讀物和自學教程。
1.以實際案例為主線
2.引入軟件工程的思想,介紹軟件開發方法
第一篇 C語言程序設計基礎知識
第1章 C語言程序設計預備知識 1
1.1 計算機系統組成及工作原理簡介 1
1.1.1 硬件系統的組成及其工作原理 1
1.1.2 軟件系統的組成 3
1.2 進位計數制及其轉換 3
1.2.1 計算機中數制的表示 3
1.2.2 非十進制數和十進制數的轉換 4
1.2.3 二進制數、八進制數和十六進制數的轉換 5
1.3 機器數的表示形式及其表示范圍 6
1.3.1 真值與機器數 6
1.3.2 數的原碼、反碼和補碼 7
1.3.3 無符號整數與帶符號整數 8
1.3.4 字符的表示法 8
習題1 9
第2章 C語言概述 10
2.1 C語言的發展及特點 10
2.1.1 程序設計語言的發展 10
2.1.2 C語言的起源與發展 11
2.1.3 C語言的特點 12
2.2 C語言應用領域概述 13
2.2.1 C語言在系統開發中的應用 13
2.2.2 C語言在嵌入式系統開發中的應用 13
2.2.3 C語言在商業應用軟件開發中的應用 13
2.2.4 C語言在硬件驅動開發、游戲設計中的應用 14
2.3 C程序的格式 14
2.3.1 簡單的C程序實例 14
2.3.2 C程序的結構特點 16
2.4 C程序的開發環境 18
2.4.1 用計算機解決實際問題的步驟 18
2.4.2 運行C程序的一般步驟 19
2.5 Visual C++ 6.0集成環境介紹 20
2.5.1 Visual C++ 6.0界面簡介 20
2.5.2 Visual C++ 6.0環境設置 21
2.5.3 在Visual C++ 6.0中編輯和運行C程序 23
習題2 25
第3章 基本數據類型、運算符與表達式 27
3.1 常量與變量 27
3.1.1 C語言的基本元素 27
3.1.2 數據和數據類型 28
3.1.3 常量 29
3.1.4 變量 30
3.2 基本數據類型 31
3.2.1 整型數據 31
3.2.2 實型數據 34
3.2.3 字符型數據 35
3.2.4 不同類型數據之間的混合運算 37
3.3 三大運算符及其表達式 38
3.3.1 算術運算符及算術表達式 38
3.3.2 關系運算符及關系表達式 39
3.3.3 邏輯運算符及邏輯表達式 40
3.4 其他運算符及其表達式 41
3.4.1 賦值運算符及賦值表達式 41
3.4.2 自增自減運算符及其表達式 43
3.4.3 條件、強制類型轉換運算符及其表達式 43
3.4.4 求字節、逗號運算符及其表達式 45
3.4.5 取地址運算符 45
3.4.6 位運算符及應用 45
3.5 運算符的優先級與結合性 48
習題3 50
第4章 輸入/輸出函數的使用 53
4.1 按格式輸出函數printf()的使用 53
4.2 按格式輸入函數scanf()的使用 56
4.3 字符輸入/輸出函數的使用 58
習題4 60
第5章 算法與結構化程序設計 63
5.1 算法的概念 63
5.1.1 程序設計的概念 63
5.1.2 程序的靈魂—算法 64
5.1.3 算法的特征及優劣 64
5.2 算法的描述方法 65
5.2.1 用自然語言表示算法 65
5.2.2 用傳統流程圖描述算法 66
5.2.3 用N-S圖表示算法 68
5.2.4 用偽代碼表示算法 70
5.3 結構化程序設計 71
5.3.1 三大基本結構 71
5.3.2 實現結構化程序設計的方法 72
5.3.3 算法的合理性與優化 75
習題5 78
第6章 C語言程序的基本控制結構 79
6.1 C語句分類 79
6.2 順序結構程序設計舉例 81
6.3 選擇結構程序設計及其語句 83
6.3.1 選擇結構程序設計思想 83
6.3.2 if語句的應用 84
6.3.3 switch開關語句的應用 90
6.4 選擇結構程序舉例 92
6.5 循環結構程序設計及其語句 95
6.5.1 while循環語句的應用 95
6.5.2 do…while循環語句的應用 96
6.5.3 for循環語句的應用 97
6.5.4 循環的嵌套 101
6.5.5 幾種循環的比較 102
6.6 輔助控制語句及循環結構程序舉例 103
6.6.1 輔助控制語句的應用 103
6.6.2 循環結構程序舉例 106
6.7 程序的調試 107
6.7.1 編譯出錯信息理解與調試 107
6.7.2 Visual C++ 6.0中的程序調試 110
習題6 111
第7章 數組 115
7.1 問題的提出 115
7.2 一維數組 116
7.2.1 一維數組的定義 116
7.2.2 一維數組的引用 118
7.2.3 一維數組的初始化 118
7.2.4 一維數組的應用 120
7.3 二維數組和多維數組 125
7.3.1 二維數組的定義 126
7.3.2 二維數組的引用 127
7.3.3 二維數組的初始化 127
7.3.4 二維數組的應用 128
7.3.5 多維數組的定義和引用 133
7.4 字符數組和字符串 133
7.4.1 字符數組的定義、初始化和引用 133
7.4.2 字符數組的輸入/輸出 136
7.4.3 常用字符串處理函數 137
7.4.4 字符數組的應用 142
習題7 145
第8章 函數和變量的作用域 149
8.1 函數概述 149
8.1.1 模塊化程序設計方法 149
8.1.2 C一模塊化程序設計語言 150
8.1.3 函數的分類 151
8.2 函數的定義與調用 152
8.2.1 函數的定義 152
8.2.2 函數的參數和返回值 154
8.2.3 函數聲明 156
8.2.4 函數的調用和參數傳遞 157
8.3 函數的嵌套調用和遞歸調用 160
8.3.1 函數的嵌套調用 160
8.3.2 函數的遞歸調用 162
8.4 數組作為函數的參數 164
8.4.1 數組元素作函數實參 164
8.4.2 一維數組名作函數實參 165
8.4.3 二維數組名作函數實參 166
8.5 變量的作用域與生存期 167
8.5.1 局部變量及其存儲類型 168
8.5.2 全局變量及其存儲類型 173
8.6 內部函數和外部函數 177
8.6.1 內部函數 177
8.6.2 外部函數 177
8.6.3 如何運行一個多文件的程序 178
8.7 程序綜合示例 180
習題8 182
第二篇 C語言高級編程技術
第9章 指針的應用 185
9.1 指針概述 185
9.1.1 變量與地址 185
9.1.2 指針與指針變量 185
9.1.3 &與*運算符 186
9.1.4 直接訪問與間接訪問 187
9.2 指針變量 187
9.2.1 指針變量的定義、初始化及引用 187
9.2.2 零指針與空類型指針 189
9.2.3 指針變量作為函數參數 190
9.3 指針與數組 191
9.3.1 指向數組元素的指針變量的定義與賦值 191
9.3.2 數組元素的表示方法 192
9.3.3 指針變量的運算 194
9.3.4 指針與二維數組 195
9.3.5 指針數組 198
9.4 指針與字符串 200
9.4.1 字符串的表示形式及其相關操作 200
9.4.2 字符指針作函數參數 203
9.5 函數指針與指針函數 203
9.5.1 函數指針及指向函數的指針變量 203
9.5.2 指針函數 204
9.5.3 指向指針的指針 205
9.6 帶參數的main函數 207
9.7 指針的應用舉例 208
習題9 210
第10章 結構體、共用體及枚舉類型的應用 214
10.1 結構體的應用 214
10.1.1 結構體類型的定義 215
10.1.2 結構體變量的聲明 216
10.1.3 結構體變量的初始化 218
10.1.4 結構體變量的引用 218
10.2 結構體數組 219
10.3 指向結構體的指針 221
10.4 結構體與函數 223
10.4.1 函數的形參與實參是結構體 223
10.4.2 函數的返回值類型是結構體 224
10.5 共用體的應用 227
10.5.1 共用體類型的定義 228
10.5.2 共用體變量的聲明和引用 228
10.5.3 共用體變量程序舉例 230
10.6 單鏈表的應用 231
10.6.1 鏈表概述 231
10.6.2 動態分配內存庫函數 233
10.6.3 單鏈表的基本操作 233
10.6.4 單鏈表的應用舉例 238
10.7 枚舉類型 241
10.8 類型定義 243
習題10 244
第11章 文件 248
11.1 C文件概述及文件類型指針 248
11.1.1 C文件概述 248
11.1.2 文件的分類 248
11.1.3 文件類型指針 249
11.2 文件的操作 249
11.2.1 文件的打開和關閉操作 249
11.2.2 文件讀寫操作 251
11.2.3 文件的定位 259
11.2.4 文件出錯的檢測 261
11.3 庫文件 262
11.4 文件操作應用舉例 263
習題11 267
第12章 編譯預處理 269
12.1 宏定義 269
12.2 “文件包含”處理 274
12.3 條件編譯 276
12.4 程序示例 279
習題12 279
第三篇 C語言綜合應用與實踐
第13章 程序編碼規范 282
13.1 標識符命名規范 282
13.2 代碼編寫格式 284
13.2.1 清晰的表達式 285
13.2.2 語句的規范性 286
13.2.3 縮進的書寫格式 288
13.2.4 一致性和習慣用法 290
13.2.5 程序描述的層次 291
13.3 文檔注釋 292
13.3.1 注釋 292
13.3.2 注釋的書寫格式 293
13.3.3 注釋的分類及使用 293
習題13 295
第14章 學生成績管理系統 296
14.1 軟件設計過程 296
14.1.1 需求分析 296
14.1.2 總體設計 297
14.1.3 詳細設計 297
14.1.4 測試與調試 297
14.2 學生成績管理系統V1 297
14.2.1 需求分析 297
14.2.2 總體設計 297
14.2.3 詳細設計 299
14.3 學生成績管理系統V2 310
14.3.1 功能分析 310
14.3.2 總體設計 311
14.3.3 詳細設計 313
附錄1 常用字符與ASCⅡ代碼對照表 319
附錄2 Visual C++ 6.0常見錯誤信息表 320
附錄3 Visual C++常用庫函數一覽表 322
參考文獻 327