本書以24堂課的形式,從初中級用戶的角度出發,進行合理的內容安排,突出學、練、用結合。本書主要內容包括:初識C語言、掌握C語言數據類型、表達式與運算符、數據輸入/輸出函數、設計選擇/分支結構程序、循環控制、數組的應用、字符數組、函數的應用、變量的存儲類別、C語言中的指針、結構體的使用、共用體的綜合應用、使用預處理命令、存儲管理、鏈表在C語言中的應用、棧和隊列、C語言中的位運算、文件操作技術、圖形圖像處理、猜數字游戲、五子棋游戲、學生成績管理系統和圖書管理系統(MySQL)。
本書適合有志于從事軟件開發的初學者、高校計算機相關專業學生和畢業生,也可作為軟件開發人員的參考手冊或者高校的教學參考書。
本書通過教學視頻、實例訓練、綜合應用、項目實踐、自我測試、行動指南逐步深入和強化訓練等方式,并輔之以心理勵志,來持續激發讀者主動學習、自發學習。
本書給出了375個小型實例,184個綜合應用,7個項目案例(部分在光盤中),各類技巧、試驗200余個,測試題目210個,以方便讀者訓練、測試和快速提升。
本書DVD光盤給出了72集(308段)多媒體教學視頻講解,每個實例都給出了相應的源程序,可直接復制源碼學習或應用。
目 錄
第1部分 基礎篇
第1堂課 初識C語言 3
視頻講解:45分鐘
1.1 C語言發展史 4
1.1.1 程序語言簡述 4
1.1.2 C語言歷史 4
1.2 C語言的特點 5
1.3 一個簡單C程序 5
1.4 一個完整的C程序 7
1.5 C語言程序的格式 10
1.6 開發環境 11
1.6.1 Turbo C 2.0 11
1.6.2 Visual C++ 6.0 14
1.7 照貓畫虎——基本功訓練 19
1.7.1 基本功訓練1——使用TC創建C文件 19
1.7.2 基本功訓練2——使用Visual C++ 6.0
創建.c文件 20
1.7.3 基本功訓練3——打開一個C文件 21
1.7.4 基本功訓練4——設置工具欄 21
1.8 情景應用——拓展與實踐 22
1.8.1 情景應用1——求和程序 22
1.8.2 情景應用2——求10! 23
1.8.3 情景應用3——猴子吃桃 24
1.8.4 情景應用4——陽陽買蘋果 25
1.9 自我測試 26
1.10 行動指南 27
1.11 成功可以復制——迅雷創始人鄒勝龍 27
第2堂課 掌握C語言數據類型 29
視頻講解:56分鐘
2.1 C語言的編程規范 30
2.1.1 注釋的合理使用 30
2.1.2 程序中的“{}”要對齊 30
2.1.3 合理使用空格使代碼更規范 31
2.1.4 換行使代碼更清晰 31
2.2 關鍵字 32
2.3 標識符 32
2.4 數據類型 33
2.5 常量 34
2.5.1 整型常量 34
2.5.2 實型常量 36
2.5.3 字符型常量 36
2.5.4 轉義字符 39
2.5.5 符號常量 40
2.6 變量 41
2.6.1 整型變量 41
2.6.2 實型變量 43
2.6.3 字符型變量 45
2.7 照貓畫虎——基本功訓練 46
2.7.1 基本功訓練1——定義正確的數據類型
求圓周長 46
2.7.2 基本功訓練2——數值型常量的使用 47
2.7.3 基本功訓練3——字符變量的使用 48
2.7.4 基本功訓練4——實型變量的使用 48
2.8 情景應用——拓展與實踐 49
2.8.1 情景應用1——十進制轉換為二進制 49
2.8.2 情景應用2——利用“#”輸出圖形 51
2.8.3 情景應用3——打印楊輝三角 51
2.8.4 情景應用4——利用“”輸出矩形 52
2.9 自我測試 53
2.10 行動指南 54
2.11 成功可以復制——蓋茨第二
馬克·扎克伯格 55
第3堂課 表達式與運算符 57
視頻講解:59分鐘
3.1 表達式 58
3.2 賦值運算符與賦值表達式 59
3.2.1 變量賦初值 60
3.2.2 自動類型轉換 61
3.2.3 強制類型轉換 61
3.3 算術運算符與表達式 62
3.3.1 算術運算符 62
3.3.2 算術表達式 63
3.3.3 優先級與結合性 64
3.3.4 自增自減運算符 66
3.4 關系運算符與表達式 68
3.4.1 關系運算符 68
3.4.2 關系表達式 68
3.4.3 優先級與結合性 69
3.5 邏輯運算符與表達式 70
3.5.1 邏輯運算符 70
3.5.2 邏輯表達式 71
3.5.3 優先級與結合性 71
3.6 位邏輯運算符與表達式 72
3.6.1 位邏輯運算符 72
3.6.2 位邏輯表達式 72
3.7 逗號運算符與表達式 73
3.8 復合賦值運算符 74
3.9 照貓畫虎——基本功訓練 75
3.9.1 基本功訓練1——使用基本的算術
運算符 75
3.9.2 基本功訓練2——賦值表達式類型的
轉換 76
3.9.3 基本功訓練3——復合賦值運算符的
應用 77
3.9.4 基本功訓練4——逗號運算符的應用 77
3.9.5 基本功訓練5——關系表達式進行算術
運算 78
3.10 情景應用——拓展與實踐 78
3.10.1 情景應用1——求1~10的累加和 78
3.10.2 情景應用2——計算學生平均身高 79
3.10.3 情景應用3——求一元二次方程
ax2+bx+c=0的根 79
3.10.4 情景應用4——求字符串中字符的
個數 80
3.10.5 情景應用5——計算a+=a=a/=a-6 81
3.11 自我測試 82
3.12 行動指南 83
3.13 成功可以復制——善于抓住時機的人
徐少春 84
第4堂課 數據輸入/輸出函數 87
視頻講解:69分鐘
4.1 語句 88
4.2 字符數據輸入/輸出 88
4.2.1 字符數據輸出 88
4.2.2 字符數據輸入 89
4.3 字符串輸入/輸出 91
4.3.1 字符串輸出函數 91
4.3.2 字符串輸入函數 92
4.4 格式輸出函數 93
4.5 格式輸入函數 95
4.6 順序程序設計應用 99
4.7 照貓畫虎——基本功訓練 100
4.7.1 基本功訓練1——使用字符函數輸入/
輸出字符 100
4.7.2 基本功訓練2——使用字符輸出函數
輸出“mrsoft” 101
4.7.3 基本功訓練3——輸出相對的最小
整數 102
4.7.4 基本功訓練4——輸出乘法口訣表 102
4.7.5 基本功訓練5——輸出兩個數的最大
公約數 103
4.8 情景應用——拓展與實踐 104
4.8.1 情景應用1——將輸入的小寫字符
轉換為大寫字符 104
4.8.2 情景應用2——用“*”號輸出圖案 105
4.8.3 情景應用3——輸出3×3的矩陣 106
4.8.4 情景應用4——輸出一個字符的前
驅字符 106
4.8.5 情景應用5——根據輸入判斷能否
組成三角形 107
4.9 自我測試 108
4.10 行動指南 110
4.11 成功可以復制——暴雪公司的領航者
邁克·莫漢 110
第5堂課 設計選擇/分支結構程序 113
視頻講解:81分鐘
5.1 if語句 114
5.2 if語句的基本形式 114
5.2.1 if語句形式 114
5.2.2 if…else語句形式 117
5.2.3 else if語句形式 121
5.3 if的嵌套形式 124
5.4 條件運算符 126
5.5 switch語句 127
5.5.1 switch語句的基本形式 127
5.5.2 多路開關模式的switch語句 131
5.6 if else語句和switch語句的區別 132
5.7 選擇結構程序應用 134
5.8 照貓畫虎——基本功訓練 136
5.8.1 基本功訓練1——單條件單分支
選擇語句 136
5.8.2 基本功訓練2——單條件雙分支
選擇語句 136
5.8.3 基本功訓練3——條件運算符的使用 137
5.8.4 基本功訓練4——計算工人工資 138
5.8.5 基本功訓練5——判斷閏年 139
5.9 情景應用——拓展與實踐 140
5.9.1 情景應用1——從小到大輸出3個數 140
5.9.2 情景應用2——求學生的最低分和
最高分 141
5.9.3 情景應用3——模擬自動售貨機 142
5.9.4 情景應用4——模擬ATM機界面
程序 143
5.9.5 情景應用5——計算某日是該年的第
幾天 146
5.10 自我測試 147
5.11 行動指南 150
5.12 成功可以復制——因特網的點火人
馬克·安德森 151
第6堂課 循環控制 153
視頻講解:82分鐘
6.1 循環語句 154
6.2 while語句 154
6.3 do…while語句 157
6.4 for語句 158
6.4.1 for語句使用 158
6.4.2 for循環的變體 161
6.4.3 for語句中的逗號應用 163
6.5 3種循環語句的比較 164
6.6 循環嵌套 164
6.6.1 循環嵌套的結構 164
6.6.2 循環嵌套實例 166
6.7 轉移語句 166
6.7.1 goto語句 167
6.7.2 break語句 168
6.7.3 continue語句 169
6.8 照貓畫虎——基本功訓練 170
6.8.1 基本功訓練1——求某個數的階乘 170
6.8.2 基本功訓練2——一元錢的兌換方案 171
6.8.3 基本功訓練3——特殊等式 172
6.8.4 基本功訓練4——計算12+22+…+102 173
6.8.5 基本功訓練5——輸出10~100之間的
素數 173
6.9 情景應用——拓展與實踐 175
6.9.1 情景應用1——愛因斯坦階梯問題 175
6.9.2 情景應用2——斐波那契數列 176
6.9.3 情景應用3——銀行存款問題 177
6.9.4 情景應用4——計算學生的最高分 177
6.9.5 情景應用5——統計不及格的人數 178
6.10 自我測試 179
6.11 行動指南 182
6.12 成功可以復制——微型博客Twitter
創始人埃文·威廉姆斯 183
第7堂課 數組的應用 185
視頻講解:58分鐘
7.1 一維數組 186
7.1.1 一維數組的定義和引用 186
7.1.2 一維數組初始化 187
7.1.3 一維數組應用 189
7.2 二維數組 190
7.2.1 二維數組的定義和引用 190
7.2.2 二維數組初始化 191
7.2.3 二維數組應用 192
7.3 多維數組 193
7.4 數組的排序算法 194
7.4.1 選擇法排序 194
7.4.2 冒泡法排序 196
7.4.3 交換法排序 197
7.4.4 插入法排序 199
7.4.5 折半法排序 201
7.4.6 排序算法的比較 204
7.5 照貓畫虎——基本功訓練 205
7.5.1 基本功訓練1——逆序存放數據 205
7.5.2 基本功訓練2——查找數組中的
最值 206
7.5.3 基本功訓練3——判斷一個數是否存在
數組中 207
7.5.4 基本功訓練4——相鄰元素之和 208
7.5.5 基本功訓練5——求二維數組對角線
之和 208
7.6 情景應用——拓展與實踐 209
7.6.1 情景應用1——選票統計 209
7.6.2 情景應用2——模擬比賽打分 211
7.6.3 情景應用3——統計學生成績 212
7.6.4 情景應用4——矩陣的轉置 213
7.6.5 情景應用5——設計魔方陣 215
7.7 自我測試 216
7.8 行動指南 218
7.9 成功可以復制——射擊游戲之父
John Carmack 218
第8堂課 字符數組 221
視頻講解:60分鐘
8.1 字符數組的應用 222
8.1.1 字符數組定義和引用 222
8.1.2 字符數組初始化 222
8.1.3 字符數組的結束標志 224
8.1.4 字符數組的輸入/輸出 224
8.1.5 字符數組應用 226
8.2 字符串處理函數 227
8.2.1 字符串復制 227
8.2.2 字符串連接 228
8.2.3 字符串比較 229
8.2.4 字符串大小寫轉換 230
8.2.5 獲得字符串長度 232
8.3 照貓畫虎——基本功訓練 233
8.3.1 基本功訓練1——不使用strcpy函數
實現字符串復制功能 233
8.3.2 基本功訓練2——用字符數組存儲
學生姓名并輸出 234
8.3.3 基本功訓練3——字符升序排列 234
8.3.4 基本功訓練4——在指定位置插入
字符 236
8.3.5 基本功訓練5——刪除字符串中的
連續字符 237
8.4 情景應用——拓展與實踐 238
8.4.1 情景應用1——統計各種字符個數 238
8.4.2 情景應用2——字符串倒置 239
8.4.3 情景應用3——字符串替換 240
8.4.4 情景應用4——回文字符串 241
8.4.5 情景應用5——字符串加密和解密 242
8.5 自我測試 244
8.6 行動指南 245
8.7 成功可以復制——圖文世界的締造者
約翰·沃洛克 246
第2部分 提高篇
第9堂課 函數的應用 251
視頻講解:98分鐘
9.1 函數概述 252
9.2 函數的定義 253
9.2.1 函數定義的形式 254
9.2.2 定義與聲明 255
9.3 返回語句 257
9.3.1 從函數返回 257
9.3.2 返回值 258
9.4 函數參數 259
9.4.1 形式參數與實際參數 260
9.4.2 數組作函數參數 261
9.4.3 main的參數 266
9.5 函數的調用 267
9.5.1 函數調用方式 267
9.5.2 嵌套調用 269
9.5.3 遞歸調用 271
9.6 內部函數和外部函數 273
9.6.1 內部函數 274
9.6.2 外部函數 275
9.7 局部變量和全局變量 276
9.7.1 局部變量 276
9.7.2 全局變量 278
9.8 函數應用 280
9.9 照貓畫虎——基本功訓練 285
9.9.1 基本功訓練1——設計函數輸出兩個數
中的最大值 285
9.9.2 基本功訓練2——設計函數計算學生的
平均成績 286
9.9.3 基本功訓練3——判斷素數 287
9.9.4 基本功訓練4——求數組元素中的
最小值 287
9.9.5 基本功訓練5——打印1到5的階乘 288
9.10 情景應用——拓展與實踐 289
9.10.1 情景應用1——遞歸解決年齡問題 289
9.10.2 情景應用2——百錢百雞問題 290
9.10.3 情景應用3——求最大公約數和最小
公倍數 292
9.10.4 情景應用4——求直角三角形斜邊 293
9.10.5 情景應用5——小數分離 294
9.11 自我測試 294
9.12 行動指南 296
9.13 成功可以復制——征途巨人史玉柱 297
第10堂課 變量的存儲類別 299
視頻講解:42分鐘
10.1 了解變量的存儲類型 300
10.2 使用auto關鍵字聲明自動變量 300
10.3 使用static關鍵字聲明靜態變量 301
10.4 使用register關鍵字聲明寄存器
變量 303
10.5 使用extern關鍵字聲明外部變量 304
10.5.1 聲明在一個文件中使用的外部變量 304
10.5.2 聲明在多個文件中使用的外部變量 305
10.6 使用static關鍵字聲明靜態外部
變量 306
10.7 照貓畫虎——基本功訓練 307
10.7.1 基本功訓練1——聲明自動變量 307
10.7.2 基本功訓練2——比較兩個數的大小 308
10.7.3 基本功訓練3——求兩個數的和 309
10.7.4 基本功訓練4——計算用戶輸入整數的
乘積 309
10.7.5 基本功訓練5——使用register定義局部
變量 310
10.8 情景應用——拓展與實踐 311
10.8.1 情景應用1——婚禮上的謊言 311
10.8.2 情景應用2——求新同學的年齡 312
10.8.3 情景應用3——捕魚和分魚 313
10.8.4 情景應用4——求郵票總數 314
10.8.5 情景應用5——巧分蘋果 315
10.9 自我測試 316
10.10 行動指南 318
10.11 成功可以復制——締造華人的
硅谷傳奇楊致遠 319
第11堂課 C語言中的指針 321
視頻講解:107分鐘
11.1 指針相關概念 322
11.1.1 地址與指針 322
11.1.2 變量與指針 323
11.1.3 指針變量 323
11.1.4 指針自加自減運算 326
11.2 數組與指針 327
11.2.1 一維數組與指針 328
11.2.2 二維數組與指針 331
11.2.3 字符串與指針 333
11.2.4 字符串數組 334
11.3 指向指針的指針 336
11.4 指針變量作函數參數 338
11.5 返回指針值的函數 343
11.6 指針數組作main函數的參數 345
11.7 照貓畫虎——基本功訓練 346
11.7.1 基本功訓練1——利用指針查找數列中
最大值和最小值 346
11.7.2 基本功訓練2——利用指針實現字符串
復制 347
11.7.3 基本功訓練3——實現數組元素值逆序
存放 348
11.7.4 基本功訓練4——使用指針連接兩個
字符串 349
11.7.5 基本功訓練5——利用指針輸出數組
元素 350
11.8 情景應用——拓展與實踐 351
11.8.1 情景應用1——查找成績不及格的學生 351
11.8.2 情景應用2——使用指針實現冒泡排序 352
11.8.3 情景應用3——輸入月份號輸出英文
月份名 353
11.8.4 情景應用4——使用指針插入元素 354
11.8.5 情景應用5——使用指針交換兩個數組
中的最大值 355
11.9 自我測試 357
11.10 行動指南 359
11.11 成功可以復制——殺毒王王江民 360
第12堂課 結構體的使用 363
視頻講解:62分鐘
12.1 結構體 364
12.1.1 結構體類型的概念 364
12.1.2 結構體變量的定義 365
12.1.3 結構體變量的引用 366
12.1.4 結構體類型的初始化 368
12.2 結構體數組 370
12.2.1 定義結構體數組 370
12.2.2 初始化結構體數組 371
12.3 結構體指針 373
12.3.1 指向結構體變量的指針 373
12.3.2 指向結構體數組的指針 376
12.3.3 結構體作函數參數 377
12.4 包含結構的結構 380
12.5 照貓畫虎——基本功訓練 381
12.5.1 基本功訓練1——結構體變量的
初始化 381
12.5.2 基本功訓練2——使用結構體存放學生
信息 382
12.5.3 基本功訓練3——整數排序 383
12.5.4 基本功訓練4——指向數組元素的結構
指針運算 384
12.5.5 基本功訓練5——計算學生的平均成績 385
12.6 情景應用——拓展與實踐 386
12.6.1 情景應用1——找出最高分 386
12.6.2 情景應用2——候選人選票程序 387
12.6.3 情景應用3——求平面上兩點的距離 388
12.6.4 情景應用4——設計通訊錄 389
12.6.5 情景應用5——輸出火車票價 390
12.7 自我測試 392
12.8 行動指南 394
12.9 成功可以復制——中國第一程序員
求伯君 395
第13堂課 共用體的綜合應用 397
視頻講解:24分鐘
13.1 共用體 398
13.1.1 共用體的概念 398
13.1.2 共用體變量的引用 398
13.1.3 共用體變量的初始化 399
13.1.4 共用體類型的數據特點 400
13.2 枚舉類型 400
13.3 照貓畫虎——基本功訓練 401
13.3.1 基本功訓練1——共用體變量的應用 401
13.3.2 基本功訓練2——共用體處理任意類型
數據 402
13.3.3 基本功訓練3——取出整型數據的高
字節數據 403
13.4 情景應用——拓展與實踐 404
13.4.1 情景應用1——使用共用體存放學生和
老師信息 404
13.4.2 情景應用2——輸出今天星期幾 405
13.4.3 情景應用3——制作花束 406
13.5 自我測試 408
13.6 行動指南 409
13.7 成功可以復制——80后新貴、
泡泡網CEO李想 409
第14堂課 使用預處理命令 411
視頻講解:62分鐘
14.1 宏定義 412
14.1.1 不帶參數的宏定義 412
14.1.2 帶參數的宏定義 413
14.2 #include指令 414
14.3 條件編譯 416
14.3.1 #if命令 416
14.3.2 #ifdef及#ifndef命令 418
14.3.3 #undef命令 419
14.3.4 #line命令 419
14.3.5 #pragma命令 420
14.4 照貓畫虎——基本功訓練 420
14.4.1 基本功訓練1——不帶參數的宏定義求
平行四邊形面積 420
14.4.2 基本功訓練2——定義帶參數的宏實現
求兩個整數的乘積 421
14.4.3 基本功訓練3——編寫頭文件包含圓
面積的計算公式 422
14.4.4 基本功訓練4——使用條件編譯將字符
轉換為大寫 423
14.4.5 基本功訓練5——使用宏定義實現數組
值的互換 424
14.5 情景應用——拓展與實踐 425
14.5.1 情景應用1——使用帶參數的宏求圓
面積 425
14.5.2 情景應用2——利用宏定義求偶數和 426
14.5.3 情景應用3——從3個數中找出最小數 427
14.5.4 情景應用4——利用文件包含設計輸出
模式 428
14.5.5 情景應用5——使用條件編譯隱藏密碼 428
14.6 自我測試 429
14.7 行動指南 431
14.8 成功可以復制——使計算機成為
生活的必需品比爾·蓋茨 432
第3部分 高級篇
第15堂課 存儲管理 435
視頻講解:33分鐘
15.1 內存組織方式 436
15.1.1 內存組織方式 436
15.1.2 堆管理 436
15.2 動態管理 437
15.2.1 malloc函數 437
15.2.2 calloc函數 438
15.2.3 realloc函數 439
15.2.4 free函數 439
15.3 內存丟失 440
15.4 照貓畫虎——基本功訓練 441
15.4.1 基本功訓練1——sizeof關鍵字的
應用 441
15.4.2 基本功訓練2——為具有3個數組元素
的數組分配內存 442
15.4.3 基本功訓練3——為二維數組動態分配
內存 442
15.5 情景應用——拓展與實踐 444
15.5.1 情景應用1——使用malloc()函數分配
內存 444
15.5.2 情景應用2——調用calloc()函數動態
分配內存 444
15.5.3 情景應用3——商品信息的動態存放 445
15.6 自我測試 446
15.7 行動指南 447
15.8 成功可以復制——知識改變命運、
科技改變生活李彥宏 448
第16堂課 鏈表在C語言中的應用 451
視頻講解:76分鐘
16.1 鏈表 452
16.1.1 鏈表概述 452
16.1.2 靜態鏈表 453
16.1.3 處理動態鏈表所需的函數 454
16.2 鏈表相關操作 454
16.2.1 創建動態鏈表 454
16.2.2 輸出鏈表 456
16.2.3 鏈表的插入操作 458
16.2.4 鏈表的刪除操作 459
16.3 鏈表的表現形式 463
16.3.1 單向鏈表 463
16.3.2 循環鏈表 464
16.3.3 雙向鏈表 464
16.4 照貓畫虎——基本功訓練 465
16.4.1 基本功訓練1——創建單向鏈表 465
16.4.2 基本功訓練2——向單向鏈表中插入
元素 467
16.4.3 基本功訓練3——刪除結點元素 469
16.4.4 基本功訓練4——創建雙向鏈表 471
16.4.5 基本功訓練5——創建循環鏈表 474
16.5 情景應用——拓展與實踐 475
16.5.1 情景應用1——單向鏈表逆置 475
16.5.2 情景應用2——雙向鏈表逆序輸出 477
16.5.3 情景應用3——連接兩個鏈表 479
16.5.4 情景應用4——使用鏈表實現約瑟
夫環 480
16.5.5 情景應用5——查找兩個鏈表中的
相同元素 482
16.6 自我測試 484
16.7 行動指南 486
16.8 成功可以復制——中國通信設備
行業的領跑者任正非 486
第17堂課 棧和隊列 489
視頻講解:73分鐘
17.1 棧的定義和幾種基本操作 490
17.1.1 棧的定義 490
17.1.2 棧常見的幾種基本操作 491
17.2 棧的存儲和實現 492
17.2.1 順序棧 492
17.2.2 鏈棧 494
17.3 隊列的定義和基本操作 497
17.3.1 隊列的定義 497
17.3.2 隊列常見的幾種基本操作 497
17.4 隊列的存儲及運算 497
17.4.1 順序隊列 497
17.4.2 鏈隊列 500
17.4.3 循環隊列 501
17.5 照貓畫虎——基本功訓練 501
17.5.1 基本功訓練1——應用棧實現進制
轉換 501
17.5.2 基本功訓練2——括號匹配檢測 504
17.5.3 基本功訓練3——利用棧實現遞歸計算
多項式 507
17.5.4 基本功訓練4——循環隊列的基本
操作 508
17.6 情景應用——拓展與實踐 511
17.6.1 情景應用1——漢諾塔問題 511
17.6.2 情景應用2——機票預售系統 513
17.6.3 情景應用3——鏈隊列的使用 515
17.7 自我測試 519
17.8 行動指南 520
17.9 成功可以復制——軟件業的華人
教父王嘉廉 521
第18堂課 C語言中的位運算 523
視頻講解:62分鐘
18.1 位與字節 524
18.2 位運算操作符 524
18.2.1 與運算符 524
18.2.2 或運算符 525
18.2.3 取反運算符 527
18.2.4 異或運算符 528
18.2.5 左移運算符 529
18.2.6 右移運算符 530
18.3 循環移位 532
18.4 位段 533
18.4.1 位段的概念與定義 533
18.4.2 位段相關說明 534
18.5 照貓畫虎——基本功訓練 535
18.5.1 基本功訓練1——輸入兩個整數實現按
位與和按位或 535
18.5.2 基本功訓練2——使二進制數特定位
翻轉 536
18.5.3 基本功訓練3——整數與0異或 537
18.5.4 基本功訓練4——將輸入的數左移兩位
并輸出 538
18.5.5 基本功訓練5——編程實現循環右移 538
18.6 情景應用——拓展與實踐 539
18.6.1 情景應用1——交換兩個值不用臨時
變量 539
18.6.2 情景應用2——取一個整數的后4位 540
18.6.3 情景應用3——編寫循環移位函數 541
18.6.4 情景應用4——取出給定16位二進制數的
奇數位 541
18.6.5 情景應用5——求一個數的補碼 542
18.7 自我測試 543
18.8 行動指南 544
18.9 成功可以復制——創造互聯網搜索
時代謝爾蓋·布林 545
第19堂課 文件操作技術 547
視頻講解:87分鐘
19.1 文件概述 548
19.2 文件基本操作 548
19.2.1 文件指針 548
19.2.2 文件的打開 549
19.2.3 文件的關閉 549
19.3 文件的讀寫 550
19.3.1 fputc函數 550
19.3.2 fgetc函數 551
19.3.3 fputs函數 551
19.3.4 fgets函數 552
19.3.5 fprintf函數 553
19.3.6 fscanf函數 554
19.3.7 fread函數和fwrite函數 555
19.4 文件的定位 557
19.4.1 fseek函數 557
19.4.2 rewind函數 558
19.4.3 ftell函數 559
19.5 照貓畫虎——基本功訓練 561
19.5.1 基本功訓練1——關閉打開的所有
文件 561
19.5.2 基本功訓練2——讀取指定文件的內容 563
19.5.3 基本功訓練3——同時顯示兩個文件的
內容 564
19.5.4 基本功訓練4——隨機讀寫文件 565
19.5.5 基本功訓練5——文件的錯誤處理 567
19.6 情景應用——拓展與實踐 569
19.6.1 情景應用1——創建文件 569
19.6.2 情景應用2——文件的復制 570
19.6.3 情景應用3——刪除文件 572
19.6.4 情景應用4——重命名文件 573
19.6.5 情景應用5——文件加密 575
19.7 自我測試 577
19.8 行動指南 579
19.9 成功可以復制——IT風云人物
鮑岳橋 579
第20堂課 圖形圖像處理 581
視頻講解:129分鐘
20.1 字符屏幕 582
20.1.1 定義文本窗口 582
20.1.2 顏色設置 582
20.1.3 文本的輸入和輸出 583
20.1.4 屏幕操作函數 584
20.2 圖形顯示 586
20.2.1 圖形模式初始化 586
20.2.2 屏幕顏色設置 588
20.2.3 基本圖形函數 590
20.2.4 封閉圖形的填充 597
20.3 圖形屏幕 599
20.4 圖形模式下文本輸出 600
20.4.1 文本輸出函數 600
20.4.2 文本屬性設置 601
20.5 照貓畫虎——基本功訓練 603
20.5.1 基本功訓練1——閃爍的文字 603
20.5.2 基本功訓練2——實現背景顏色切換 604
20.5.3 基本功訓練3——繪制圓形 605
20.5.4 基本功訓練4——在屏幕中繪制兩個
相同的小球 605
20.5.5 基本功訓練5——繪制五角星 607
20.6 情景應用——拓展與實踐 609
20.6.1 情景應用1——繪制折線圖 609
20.6.2 情景應用2——輸出餅狀圖 611
20.6.3 情景應用3——畫條形圖 612
20.6.4 情景應用4——畫玫瑰花 615
20.6.5 情景應用5——菜單界面設計 619
20.7 自我測試 625
20.8 行動指南 627
20.9 成功可以復制——IT大王王志東 627
第4部分 實戰篇
第21堂課 猜數字游戲 631
視頻講解:23分鐘
21.1 概述 632
21.2 需求分析 632
21.3 系統設計 632
21.3.1 設計目標 632
21.3.2 開發及運行環境 632
21.4 程序預覽 632
21.5 設計思路 634
21.6 文件引用 634
21.7 主要功能實現 634
21.7.1 主函數 634
21.7.2 猜數字 635
21.7.3 光標定位 637
第22堂課 五子棋游戲 639
視頻講解:27分鐘
22.1 概述 640
22.2 需求分析 640
22.3 系統設計 640
22.3.1 設計目標 640
22.3.2 開發及運行環境 640
22.4 程序預覽 640
22.5 graphics.h文件 641
22.6 設計思路 644
22.7 預處理 644
22.7.1 文件引用 644
22.7.2 宏定義 645
22.8 聲明變量 645
22.9 函數聲明 645
22.10 主要功能實現 645
22.10.1 主函數 645
22.10.2 開始游戲 647
22.10.3 繪制棋盤 647
22.10.4 繪制棋子 648
22.10.5 清除棋子 648
22.10.6 游戲過程 648
22.10.7 判斷勝負 653
第23堂課 學生成績管理系統 657
視頻講解:40分鐘
23.1 需求分析 658
23.2 系統設計 658
23.3 功能設計 658
23.3.1 功能選擇界面 659
23.3.2 錄入學生成績信息 660
23.3.3 查詢學生成績信息 662
23.3.4 刪除學生成績信息 663
23.3.5 修改學生成績信息 664
23.3.6 插入學生成績信息 666
23.3.7 統計學生人數 668
第24堂課 圖書管理系統(MySQL) 669
視頻講解:32分鐘
24.1 概述 670
24.1.1 需求分析 670
24.1.2 開發工具選擇 670
24.2 系統設計 670
24.2.1 系統目標 670
24.2.2 系統功能結構 670
24.2.3 系統預覽 670
24.2.4 開發及運行環境 672
24.3 數據庫設計 673
24.3.1 安裝MySQL數據庫 673
24.3.2 啟動MySQL數據庫 676
24.3.3 創建數據庫 677
24.3.4 數據表結構 678
24.4 C語言開發數據庫程序的流程 678
24.5 C語言操作MySQL數據庫 680
24.5.1 MySQL常用數據庫操作函數 680
24.5.2 連接MySQL數據 682
24.5.3 查詢圖書表記錄 683
24.5.4 插入圖書表記錄 685
24.5.5 修改圖書表記錄 686
24.5.6 刪除圖書表記錄 687
24.6 文件引用 687
24.7 變量和函數定義 688
24.8 主要功能模塊設計 688
24.8.1 顯示主菜單信息 688
24.8.2 顯示所有圖書信息 690
24.8.3 添加圖書信息 692
24.8.4 修改圖書信息 698
24.8.5 刪除圖書信息 704
24.8.6 查詢圖書信息 710
24.9 程序調試及錯誤處理 712
24.9.1 解決創建數據表為一個文件的
問題 712
24.9.2 在創建數據表時,最后一句結尾沒有
標點 713
24.9.3 無法啟動MySQL服務 714