本書以初學(xué)者為主要對(duì)象,全面介紹了C語言程序設(shè)計(jì)的相關(guān)技術(shù)。在內(nèi)容排列上由淺入深,讓讀者循序漸進(jìn)地掌握C語言編程;在內(nèi)容講解上結(jié)合豐富的圖解和形象的比喻,幫助讀者理解“晦澀難懂”的技術(shù);在內(nèi)容形式上附有大量的注意、說明等欄目,夯實(shí)讀者理論技術(shù),豐富管理與開發(fā)經(jīng)驗(yàn)。
本書共分16章,其中前12章為基礎(chǔ)部分,主要包括為什么要學(xué)C語言,最簡(jiǎn)單的C語言程序,什么是程序,C語言基礎(chǔ)——數(shù)據(jù)類型、常量及變量,選擇結(jié)構(gòu)程序設(shè)計(jì),循環(huán)結(jié)構(gòu)程序設(shè)計(jì),同一類型多個(gè)元素的集合——數(shù)組,寫程序就是寫函數(shù),C語言的特產(chǎn)——指針,編譯預(yù)處理,結(jié)構(gòu)體和文件等內(nèi)容;后4章為提高篇,核心是“以考促學(xué)”,主要包括全國(guó)計(jì)算機(jī)等級(jí)考試(NCRE)簡(jiǎn)介、考試流程、通過真題了解評(píng)分標(biāo)準(zhǔn)及注意事項(xiàng)和公共基礎(chǔ)知識(shí)等內(nèi)容。本書中的例題和課后習(xí)題包含了許多全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)真題,并且按照二級(jí)考試大綱要求,開發(fā)環(huán)境使用Visual C++ 2010 Express。
本書可作為高等學(xué)校各專業(yè)C語言程序設(shè)計(jì)課程教材。對(duì)計(jì)算機(jī)愛好者、中學(xué)生、職高中專學(xué)生及各類自學(xué)人員也有參考價(jià)值。
1. 適合最新等考大綱。
2. 滿足最新等考環(huán)境,使用Visual C++ 2010 Express。
3. 配套資源豐富。
4. 提供在線教學(xué)系統(tǒng),讓老師更好教,學(xué)生更好學(xué)。
劉琨,河北師范大學(xué)軟件學(xué)院php教研室教師,渡手科技實(shí)訓(xùn)中心教學(xué)總監(jiān),擁有五年軟件開發(fā)和管理工作經(jīng)驗(yàn)(其中包括兩年海外工作經(jīng)驗(yàn)),四年IT教學(xué)工作經(jīng)驗(yàn)。資深技術(shù)講師,實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,授課耐心細(xì)致,通俗易懂,勇于實(shí)踐,勤于創(chuàng)新,授課風(fēng)格貼近生活,授課語言生動(dòng)風(fēng)趣,多年來培訓(xùn)的學(xué)員已成功在用友、搜狐、淘寶、中軟等知名企業(yè)就職。
第1章 為什么要學(xué)C語言 1
1.1 這門語言值得一學(xué)嗎 1
1.2 C 語言教給我們的事 2
1.3 C 語言程序“編輯”體驗(yàn) 4
1.4 開發(fā)工具 4
1.4.1 Dev-C++ 5
1.4.2 Visual C++ 5
1.4.3 Visual C++2010 Express 7
1.5 C 語言程序的開發(fā)流程 7
1.5.1 編譯C 語言源代碼 8
1.5.2 連接目標(biāo)文件 9
1.5.3 編譯連接過程示例 9
1.5.4 運(yùn)行程序 9
1.6 習(xí)題 10
第2章 最簡(jiǎn)單的C 語言程序 11
2.1 C 語言程序的構(gòu)成 11
2.2 C 語言程序的注釋 12
2.3 C 語言程序必須有main 函數(shù) 13
2.4 調(diào)用函數(shù)在屏幕上顯示文字 14
2.5 #include 預(yù)處理器指示符 14
2.5.1 函數(shù)聲明及其作用 14
2.5.2 試驗(yàn)尋找#include 的作用 15
2.5.3 #include 的作用 15
2.6 習(xí)題 16
第3章 什么是程序 18
3.1 程序簡(jiǎn)介 18
3.2 輸入—處理—輸出:這就是程序 19
3.2.1 用printf 函數(shù)輸出數(shù)據(jù) 19
3.2.2 用scanf 函數(shù)輸入數(shù)據(jù) 20
3.3 結(jié)構(gòu)化程序設(shè)計(jì) 21
3.4 順序結(jié)構(gòu)與流程圖 22
3.5 選擇結(jié)構(gòu) 24
3.6 循環(huán)結(jié)構(gòu) 25
3.7 擴(kuò)充內(nèi)容:printf 函數(shù)的格式字符 27
3.8 擴(kuò)充內(nèi)容:scanf 函數(shù)的格式字符 31
3.9 擴(kuò)充內(nèi)容:字符輸入輸出函數(shù) 33
3.10 習(xí)題 37
3.10.1 輸入輸出函數(shù) 37
3.10.2 結(jié)構(gòu)化程序設(shè)計(jì) 38
第4章 C 語言基礎(chǔ)——數(shù)據(jù)類型、常量及變量 39
4.1 計(jì)算機(jī)是如何表示數(shù)據(jù)的 39
4.1.1 二進(jìn)制、八進(jìn)制和十六進(jìn)制 39
4.1.2 表示數(shù)據(jù)的字節(jié)和位 40
4.2 數(shù)據(jù)類型 41
4.2.1 整型數(shù)據(jù) 42
4.2.2 字符型數(shù)據(jù) 45
4.2.3 實(shí)數(shù)類型 47
4.2.4 數(shù)據(jù)類型轉(zhuǎn)換 48
4.3 常量 52
4.4 變量 54
4.4.1變量概述 54
4.4.2 為變量賦初值 57
4.4.3 變量使用時(shí)常見的錯(cuò)誤 58
4.4.4 幾個(gè)與變量相關(guān)的經(jīng)典算法 59
4.5 擴(kuò)充內(nèi)容:標(biāo)識(shí)符 61
4.6 習(xí)題 62
4.6.1 進(jìn)制轉(zhuǎn)換 62
4.6.2 數(shù)據(jù)類型 62
4.6.3 常量與變量 62
4.6.4 標(biāo)識(shí)符 63
第5章 選擇結(jié)構(gòu)程序設(shè)計(jì) 64
5.1 用if 語句實(shí)現(xiàn)選擇結(jié)構(gòu) 65
5.2 switch 語句 69
5.3 擴(kuò)充內(nèi)容:關(guān)系運(yùn)算符和關(guān)系表達(dá)式 73
5.4 擴(kuò)充內(nèi)容:條件運(yùn)算符和條件表達(dá)式 74
5.5 擴(kuò)充內(nèi)容:邏輯運(yùn)算符和邏輯表達(dá)式 75
5.6 習(xí)題 77
5.6.1 關(guān)系、條件及邏輯運(yùn)算符 77
5.6.2 條件語句 77
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 80
6.1 while 語句 80
6.2 do-while 語句 81
6.3 for 語句 82
6.4 循環(huán)嵌套 83
6.5 跳轉(zhuǎn)語句 87
6.5.1 break 語句 87
6.5.2 continue 語句 88
6.6 擴(kuò)充內(nèi)容:算術(shù)運(yùn)算符 89
6.7 擴(kuò)充內(nèi)容:賦值運(yùn)算符 90
6.8 擴(kuò)充內(nèi)容:逗號(hào)運(yùn)算符 90
6.9 習(xí)題 91
6.9.1 基本循環(huán)語句 91
6.9.2 嵌套循環(huán) 92
6.9.3 跳轉(zhuǎn)語句 92
6.9.4 循環(huán)應(yīng)用 93
第7章 同一類型多個(gè)元素的 集合——數(shù)組 95
7.1 一維數(shù)組 95
7.1.1 一維數(shù)組的聲明和初始化 95
7.1.2 一維數(shù)組的引用 96
7.1.3 一維數(shù)組的實(shí)例 97
7.2 二維數(shù)組 101
7.2.1 二維數(shù)組的定義 101
7.2.2 二維數(shù)組的初始化 102
7.2.3 二維數(shù)組元素的引用 103
7.2.4 二維數(shù)組應(yīng)用舉例 103
7.3 字符數(shù)組 104
7.3.1 字符數(shù)組的定義 104
7.3.2 字符數(shù)組的初始化 105
7.3.3 字符數(shù)組的引用 105
7.4 字符數(shù)組與字符串 105
7.4.1 字符串的初始化 106
7.4.2 字符串的輸入輸出 107
7.4.3 字符串應(yīng)用舉例 108
7.4.4 使用字符串處理函數(shù) 110
7.5 習(xí)題 112
7.5.1 一維數(shù)組的定義和引用 112
7.5.2 二維數(shù)組的定義和引用 113
7.5.3 字符數(shù)組 114
第8章 寫程序就是寫函數(shù) 117
8.1 什么是函數(shù) 117
8.1.1 函數(shù)的由來 117
8.1.2 分而治之與信息隱藏 118
8.2 函數(shù)的分類和定義 120
8.2.1 函數(shù)的分類 120
8.2.2函數(shù)的定義 120
8.3 形式參數(shù)和實(shí)際參數(shù)分配內(nèi)存的區(qū)別 122
8.4 函數(shù)的返回值 124
8.5 函數(shù)調(diào)用 126
8.5.1 函數(shù)調(diào)用的一般形式 126
8.5.2 函數(shù)調(diào)用的執(zhí)行過程 128
8.6 函數(shù)的聲明 129
8.7 函數(shù)的嵌套調(diào)用 131
8.8 函數(shù)的遞歸調(diào)用 133
8.9 數(shù)組作為函數(shù)參數(shù)——值傳遞與地址傳遞 137
8.9.1 數(shù)組元素作為函數(shù)實(shí)參——值傳遞 137
8.9.2 一維數(shù)組名作為函數(shù)參數(shù)——地址傳遞 138
8.10 變量的作用域 141
8.11 變量的存儲(chǔ)類型 143
8.11.1 uto 變量 143
8.11.2 register 變量 143
8.11.3 extern 變量 144
8.11.4 static 變量 146
8.11.5 存儲(chǔ)類型小結(jié) 148
8.12 習(xí)題 149
8.12.1 函數(shù)的調(diào)用與聲明 149
8.12.2 函數(shù)的嵌套調(diào)用和遞歸調(diào)用 152
8.12.3 數(shù)組作為函數(shù)參數(shù)——值傳遞與地址傳遞 154
8.12.4 全局變量和局部變量 155
8.12.5 變量的存儲(chǔ)類型 155
第9 章 C 語言特產(chǎn)——指針 157
9.1 指針簡(jiǎn)介 157
9.2 指針變量的定義 158
9.3 指針變量的初始化 159
9.4 指針變量的引用 160
9.4.1 與指針有關(guān)的兩種運(yùn)算符 160
9.4.2 指針變量的引用 161
9.5 指針與一維數(shù)組 161
9.6 指針與字符串 163
9.7 指針數(shù)組 165
9.8 二級(jí)指針 166
9.9 指針與二維數(shù)組 168
9.9.1 二維數(shù)組的行地址和列地址 168
9.9.2 通過二維數(shù)組的行指針和列指針來引用二維數(shù)組 170
9.10 指針與函數(shù) 171
9.10.1 函數(shù)名與指針的關(guān)系 171
9.10.2 返回指針變量的函數(shù) 172
9.11 指針總結(jié) 173
9.11.1 明確分辨各種指針類型 174
9.11.2 正確理解指針 174
9.12 擴(kuò)充內(nèi)容:使用指針引用數(shù)組元素的優(yōu)點(diǎn) 175
9.13 擴(kuò)充內(nèi)容:函數(shù)指針與函數(shù)名 176
9.13.1 函數(shù)指針與函數(shù)名的區(qū)別 176
9.13.2 函數(shù)指針的作用 178
9.14 習(xí)題 178
9.14.1 指針概述與定義 178
9.14.2 指針變量的初始化 179
9.14.3 指針變量的引用 179
9.14.4 數(shù)組與指針 180
9.14.5 指針與字符串 181
9.14.6 指針數(shù)組 182
9.14.7 二維數(shù)組與指針 182
9.14.8 指向函數(shù)的指針 183
第10 章編譯預(yù)處理 184
10.1 不帶參數(shù)的宏定義 184
10.2 帶參數(shù)的宏定義 186
10.3 #include 命令 187
10.4 習(xí)題 188
10.4.1 宏定義和調(diào)用 188
10.4.2 預(yù)處理 189
第11 章結(jié)構(gòu)體 191
11.1 結(jié)構(gòu)體類型與結(jié)構(gòu)體變量 191
11.1.1 結(jié)構(gòu)體類型的定義 191
11.1.2 結(jié)構(gòu)體變量的定義 192
11.1.3 結(jié)構(gòu)體變量的初始化和引用 195
11.2 結(jié)構(gòu)體數(shù)組 196
11.2.1 結(jié)構(gòu)體數(shù)組的定義 196
11.2.2 結(jié)構(gòu)體數(shù)組的初始化和引用 197
11.3 結(jié)構(gòu)體指針 198
11.3.1 結(jié)構(gòu)體指針變量的定義與引用 198
11.3.2 結(jié)構(gòu)體指針作為函數(shù)參數(shù) 200
11.4 用typedef 定義類型 201
11.5 鏈表 202
11.5.1 什么是鏈表 202
11.5.2 建立簡(jiǎn)單的鏈表 204
11.6 習(xí)題 205
11.6.1 結(jié)構(gòu)體類型和結(jié)構(gòu)體變量 205
11.6.2 結(jié)構(gòu)體數(shù)組與指針 205
11.6.3 用typedef 說明一個(gè)新類型 207
11.6.4 鏈表 .207
第12章文件 208
12.1 C 語言文件的概念 208
12.1.1 文件的概念及分類 208
12.1.2 文件的處理方式 209
12.2 文件類型指針 209
12.3 文件的打開與關(guān)閉 211
12.3.1 文件打開 211
12.3.2 文件關(guān)閉 212
12.4 文件的讀寫 213
12.4.1 文件讀寫的含義 213
12.4.2 文件讀寫函數(shù) 214
12.5 文件的定位 219
12.6
習(xí)題 221
12.6.1 文件的概念及文件類型指針 221
12.6.2 文件的打開與關(guān)閉 221
12.6.3 文件的讀寫 222
12.6.4 文件的定位 223
第13 章全國(guó)計(jì)算機(jī)等級(jí)考試 (NCRE)簡(jiǎn)介 224
13.1 考試大綱基本要求 224
13.2 考試內(nèi)容 224
13.3 考試方式 225
第14 章考試流程 226
14.1 登錄 226
14.1.1 啟動(dòng)考試系統(tǒng) 226
14.1.2 準(zhǔn)考證號(hào)驗(yàn)證 226
14.1.3 登錄成功 227
14.2 答題 227
14.2.1 試題內(nèi)容查閱窗口 227
14.2.2 考試狀態(tài)信息條 228
14.2.3 啟動(dòng)考試環(huán)境 228
14.2.4 考生文件夾 228
14.3 交卷 229
第15 章通過真題了解評(píng)分標(biāo)準(zhǔn) 及注意事項(xiàng) 230
15.1 選擇題 230
15.1.1 公共基礎(chǔ)知識(shí)(共10 分) 230
15.1.2 C 語言基礎(chǔ)知識(shí)(共30 分) 230
15.2 程序操作題 231
15.2.1 程序填空題(共18 分) 231
15.2.2 程序修改題(共18 分) 232
15.2.3 程序設(shè)計(jì)題(共24 分) 233
第16 章公共基礎(chǔ)知識(shí) 234
16.1 數(shù)據(jù)結(jié)構(gòu) 234
16.1.1 算法 234
16.1.2 數(shù)據(jù)結(jié)構(gòu)的基本概念 234
16.1.3 線性表及其順序存儲(chǔ)結(jié)構(gòu) 234
16.1.4 棧和隊(duì)列 235
16.1.5 線性鏈表 235
16.1.6 樹與二叉樹 235
16.1.7 查找與排序 236
16.2 程序設(shè)計(jì)基礎(chǔ) 236
16.2.1 程序設(shè)計(jì)方法與風(fēng)格 236
16.2.2 結(jié)構(gòu)化程序設(shè)計(jì) 236
16.2.3 面向?qū)ο蟪绦蛟O(shè)計(jì) 237
16.3 軟件工程基礎(chǔ) 237
16.3.1 軟件工程的基本概念 237
16.3.2 需求分析及其方法 238
16.3.3 軟件設(shè)計(jì)及其方法 238
16.3.4 軟件測(cè)試 239
16.4 數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ) 239
16.4.1 數(shù)據(jù)庫(kù)系統(tǒng)的基本概念 239
16.4.2 E-R 模型 240
16.4.3 關(guān)系代數(shù) 240
16.4.4 數(shù)據(jù)庫(kù)設(shè)計(jì) 241
附錄A 字符與標(biāo)準(zhǔn)ASCII 代碼 對(duì)照表 242
附錄B 運(yùn)算符和結(jié)合性 243
附錄C Visual C++ 2010 Express 基本操作 246
C.1 常見配置 246
C.1.1 添加行號(hào) 246
C.1.2 添加生成工具欄 246
C.1.3 添加開始執(zhí)行(不調(diào)試)按鈕 247
C.2 創(chuàng)建工程 248
C.3 添加源程序 250
C.4 編寫hello.c 編譯并執(zhí)行 251