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