本書以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.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 成功可以復制——射擊游戲之父
第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——求數組元素中的






