C語言開發手冊:基礎·案例·應用
內容描述
《C語言開發手冊:基礎·案例·應用》是“計算機科學與技術手冊系列”圖書之一,該系列圖書內容全面,
以理論聯繫實際、能學到並做到為宗旨,以技術為核心,以案例為輔助,引#領讀者全面學習基礎技術、代碼編寫方法和具體應用項目,
旨在為想要進入相應領域的技術人員提供新而全的技術性內容及案例。
本書是一本側重編程基礎+實踐的C語言圖書,從基礎、案例、
應用三個層次循序漸進地介紹了C語言從入門到實戰所需知識,使讀者在打好基礎的同時快速提昇實踐能力。
本書內容充實,給讀者提供了較為豐富全面的技術支持和案例強化,通過各種示例將學習與應用相結合,
打造輕鬆學習、零壓力學習的環境,通過案例對所學知識進行綜合應用,
通過開發實際項目將C語言的各個知識點應用到實際工作中,幫助讀者實現學以致用,快速掌握C語言開發的各項技能。
本書提供豐富的資源,包含120個實例、12個案例、2個項目,
力求為讀者打造一本基礎+案例+應用一體化的、精彩的C語言圖書。
本書不僅適合初學者、零基礎的編程自學者,也可供計算機相關專業師生、程序開發人員等閱讀參考。
目錄大綱
基礎篇
1章 走進C語言的世界
1.1 計算機語言與C語言 3
1.1.1 計算機語言 3
1.1.2 C語言 3
1.2 C語言的特點 4
1.3 C語言的應用 5
1.3.1 單片機系統 5
1.3.2 應用軟件 5
1.3.3 數據處理 5
1.3.4 嵌入式系統 5
1.3.5 遊戲方面 5
1.4 本書約定 6
1.4.1 選擇作系統 6
1.4.2 選擇開發環境 6
2章 一個C程序
2.1 安裝C語言開發環境 8
2.1.1 下載Visual Studio 2019 8
2.1.2 安裝Visual Studio 2019 9
2.2 熟悉C語言開發環境 11
2.2.1 編寫一個C程序 11
2.2.2 熟悉開發環境 14
2.3 一個C程序 16
2.3.1 #include指令 16
2.3.2 main()函數 17
2.3.3 函數體 18
2.3.4 執行語句 18
2.3.5 return語句 18
2.3.6 註釋 18
2.4 實戰練習 20
3章 C語言知識
3.1 關鍵字與標識符 22
3.1.1 關鍵字 22
3.1.2 標識符 23
3.2 常量和變量 24
3.2.1 常量 24
3.2.2 變量 24
3.3 算術運算符與算術表達式 25
3.3.1 算術運算符 25
3.3.2 算術表達式 26
3.3.3 自增、自減運算符 26
3.4 賦值運算符與賦值表達式 27
3.4.1 賦值運算符 27
3.4.2 賦值表達式 27
3.5 基本數據類型概述 27
3.6 整型 28
3.6.1 聲明整型 28
3.6.2 初始化整型 28
3.6.3 其他整型 29
3.6.4 輸出其他整型數據 29
【實例3.1】輸出不同整型數據 30
3.6.5 整型常量 30
3.7 浮點型 30
3.7.1 聲明浮點型 31
3.7.2 初始化浮點型 32
3.7.3 輸出浮點型數據 32
3.7.4 浮點型常量 33
3.8 字符型 33
3.8.1 聲明字符型 33
3.8.2 初始化字符型 34
3.8.3 輸出字符型數據 34
3.8.4 字符型常量 35
3.8.5 轉義字符 39
3.9 類型轉換 39
3.9.1 自動類型轉換 40
3.9.2 強制類型轉換 40
【實例3.2】換季買鞋 40
3.10 格式化字符輸出、輸入函數 41
3.10.1 格式化輸出函數:printf() 41
【實例3.3】printf()按照格式輸出不同類型數據 42
【實例3.4】printf()附加格式輸出數據 42
3.10.2 格式化輸入函數:scanf() 43
【實例3.5】計算圓的周長和球的體積 43
3.11 綜合案例——計算無人機往返A、B兩地的次數 45
3.12 實戰練習 45
4章 位運算符
4.1 位與字節 48
4.2 位運算作符 48
4.2.1 “與”運算符 48
【實例4.1】編寫程序,把兩個人的年齡做一個“與”運算 49
4.2.2 “或”運算符 49
【實例4.2】將數字0EFCA與本身進行“或”運算 50
4.2.3 “取反”運算符 51
【實例4.3】自己年齡的取反輸出 51
4.2.4 “異或”運算符 51
【實例4.4】計算a^b的值 52
4.2.5 “左移”運算符 53
【實例4.5】將15進行“左移”運算 53
4.2.6 “右移”運算符 54
【實例4.6】將15進行“右移”運算 55
4.3 循環移位 56
【實例4.7】編程實現循環左移 56
【實例4.8】編程實現循環右移 57
4.4 綜合案例——密碼二次加密 58
4.5 實戰練習 58
5章 條件判斷語句
5.1 if相關語句 60
5.1.1 單個if語句 60
5.1.2 關係運算符與邏輯運算符 61
5.1.3 if…else語句 62
5.1.4 else if語句 63
5.2 if語句的嵌套 65
【實例5.1】日程安排 65
5.3 條件運算符 66
【實例5.2】模擬美團送餐 67
5.4 switch語 句 67
5.4.1 switch語句的基本形式 67
5.4.2 多路開關模式的switch語句 69
【實例5.3】每個月有多少天 70
5.5 綜合案例——模擬高考填報誌願 70
5.6 實戰練習 72
6章 循環控制語句
6.1 什麼是循環 74
6.2 while語句 74
6.3 do…while語句 75
【實例6.1】用do…while語句計算1~20之和 76
【實例6.2】用while語句計算1~20之和 77
6.4 for語 句 77
6.4.1 for語句使用 77
【實例6.3】用for語句計算1~20之和 78
6.4.2 for語句的變體 79
6.4.3 for語句中的逗號應用 80
6.5 循環嵌套 80
【實例6.4】輸出金字塔形狀 81
6.6 轉移語句 82
6.6.1 break語句 82
【實例6.5】從0開始查數,遇到5就停止 84
6.6.2 continue語句 84
【實例6.6】從0開始查數,遇到5停頓 85
6.6.3 goto語句 86
【實例6.7】從1開始查數,遇到5輸出字母a 86
6.7 綜合案例——請小心!凍結賬戶 87
6.8 實戰練習 88
7章 數組
7.1 一維數組 90
7.1.1 一維數組的定義 90
7.1.2 一維數組初始化 91
7.1.3 一維數組的引用 92
【實例7.1】輸出成績 92
7.2 二維數組 93
7.2.1 二維數組的定義 93
7.2.2 二維數組初始化 93
7.2.3 二維數組的引用 95
【實例7.2】計算各科的平均成績 95
7.3 字符數組 96
7.3.1 字符數組的定義和引用 96
7.3.2 字符數組初始化 97
【實例7.3】輸出字符串“Park” 97
【實例7.4】輸出一個鑽石形狀 98
7.3.3 字符數組的結束標誌 98
7.3.4 字符數組的輸入和輸出 99
【實例7.5】輸出“MingRi KeJi” 99
7.3.5 字符數組的應用 100
【實例7.6】統計字符串中單詞的個數 100
7.4 多維數組 101
7.5 綜合案例——十二生肖 101
7.6 實戰練習 102
8章 字a符串處理函數
8.1 字符串複製 104
【實例8.1】更新招牌 104
8.2 字符串連接 105
【實例8.2】製作課程表 105
8.3 字符串比較 106
【實例8.3】模擬登錄明日學院的賬號 106
8.4 字符串大小寫轉換 107
【實例8.4】驗證碼大小寫轉換 107
8.5 獲得字符串長度 108
【實例8.5】模擬註冊明日學院賬號 108
8.6 綜合案例——誰被@啦 109
8.7 實戰練習 110
9章 函數
9.1 函數概述 112
9.2 函數的定義 112
9.2.1 函數定義的形式 112
9.2.2 定義與聲明 113
9.3 返回語句 113
9.3.1 有返回值函數 114
9.3.2 無返回值函數 114
9.4 函數參數 115
9.4.1 形參與實參 115
9.4.2 數組作為函數參數 116
【實例9.1】求素數 116
9.4.3 main()函數的參數 117
9.5 函數的調用 117
9.5.1 函數的調用方式 117
【實例9.2】《論語》一則 118
【實例9.3】用歐姆定律求電阻值 118
【實例9.4】判斷體溫是否正常 119
9.5.2 嵌套調用 119
【實例9.5】CEO安排工作任務 120
9.5.3 遞歸調用 121
【實例9.6】遞歸求年齡 122
9.6 內部函數和外部函數 122
9.6.1 內部函數 122
【實例9.7】輸出“Hello MingRi!” 123
9.6.2 外部函數 123
9.7 局部變量和全局變量 124
9.7.1 局部變量 124
9.7.2 全局變量 124
9.8 其他函數庫 125
9.9 綜合案例——隨機抽獎 127
9.10 實戰練習 127
10章 指針
10.1 指針相關概念 130
10.1.1 地址與指針 130
10.1.2 變量的指針 131
10.1.3 指針變量 131
【實例10.1】輸出變量地址 132
【實例10.2】利用指針編寫程序實現兩個數互換 133
【實例10.3】輸出i、j、c的地址 134
【實例10.4】*&的使用 134
10.1.4 指針的運算 135
【實例10.5】指針自增,地址變化了 135
10.2 數組與指針 137
10.2.1 一維數組與指針 137
【實例10.6】輸出數組中的元素 137
10.2.2 二維數組與指針 139
【實例10.7】將輸入的數以二維數組的形式顯示 140
【實例10.8】輸出3行元素 141
【實例10.9】輸出2行的停車號 142
10.2.3 字符串與指針 142
【實例10.10】輸出“hello mingri” 142
【實例10.11】利用指針實現字符串複製 143
10.2.4 指針數組 144
【實例10.12】輸出英文的12個月 144
10.3 指向指針的指針 145
10.3.1 定義指向指針的指針 145
10.3.2 引用指向指針的指針 145
10.3.3 應用指向指針的指針 146
【實例10.13】輸出化學週期表中前20個元素中的金屬元素 146
10.4 指針與函數 146
10.4.1 指針變量作函數參數 146
【實例10.14】交換兩個變量值 147
10.4.2 指針變量作函數參數的嵌套 148
【實例10.15】將輸入的數從大到小輸出 148
10.4.3 指針作函數參數與一維數組 149
【實例10.16】使用指針實現冒泡排序 149
10.4.4 指針作函數參數與二維數組 151
【實例10.17】找出二維數組每行中大的數並求和 151
10.4.5 字符指針作函數參數 152
【實例10.18】按字母順序排序 152
10.4.6 返回指針的函數 153
【實例10.19】輸入長和寬,求長方形的周長 153
10.4.7 函數指針 154
10.5 帶參數的main()函數 155
【實例10.20】輸出main()函數的參數內容 156
10.6 綜合案例——誰的成績不及格? 157
10.7 實戰練習 158
11章 結構體和鍊錶
11.1 結構體 160
11.1.1 結構體類型的概念 160
11.1.2 結構體變量的定義 160
11.1.3 結構體類型的初始化 162
11.1.4 結構體變量的引用 162
【實例11.1】輸出vivo NEX(手機型號)的基本信息 162
11.2 結構體數組 163
11.2.1 定義結構體數組 163
11.2.2 初始化結構體數組 164
11.3 結構體指針 165
11.3.1 指向結構體變量的指針 165
11.3.2 指向結構體數組的指針 166
11.3.3 結構體作為函數參數 166
11.4 包含結構體的結構體 167
【實例11.2】顯示學生的個人信息(包含生日) 167
11.5 鍊錶 168
11.5.1 鍊錶概述 168
11.5.2 創建動態鍊錶 168
11.5.3 輸出鍊錶 170
11.6 鍊錶相關作 171
11.6.1 鍊錶的插入作 171
11.6.2 鍊錶的刪除作 172
11.7 綜合案例——查找手機通訊錄 173
11.8 實戰練習 175
12章 共用體和枚舉類型
12.1 共用體 177
12.1.1 聲明共用體 177
12.1.2 定義共用體變量 177
12.1.3 共用體變量成員的引用 178
【實例12.1】設計一個玻璃罐頭,一次只能裝一種水果 179
【實例12.2】輸出“現在是夏季” 180
12.1.4 共用體類型的數據特點 180
12.2 枚舉類型 181
12.2.1 枚舉類型的聲明 181
12.2.2 枚舉類型變量的定義 181
12.2.3 枚舉類型變量的賦值和使用 182
【實例12.3】選擇自己喜歡的顏色 182
12.3 綜合案例——改答案放大招 183
12.4 實戰練習 184
13章 文件作
13.1 文件概述 186
13.2 文件的基本作 186
13.2.1 文件指針 186
13.2.2 文件的打開 187
13.2.3 文件的關閉 187
13.3 文件的讀寫 188
13.3.1 fputc()函數 188
【實例13.1】向文件中寫入內容 188
13.3.2 fgetc()函數 189
【實例13.2】在屏幕中顯示出文件內容 189
13.3.3 fputs()函數 189
【實例13.3】向文件中寫入“gone with the wind” 190
13.3.4 fgets()函數 190
【實例13.4】讀取任意磁盤文件中的內容 190
13.3.5 fprintf()函數 191
【實例13.5】將數字88以字符的形式寫到磁盤文件中 191
13.3.6 fscanf()函數 192
【實例13.6】輸出標準答案 192
13.3.7 fread()和fwrite()函數 193
【實例13.7】將所錄入的信息全部顯示出來 193
13.4 文件的定位 194
13.4.1 fseek()函數 194
【實例13.8】快遞員送快遞 195
13.4.2 rewind()函數 196
【實例13.9】老闆,來一屜包子 196
13.4.3 ftell()函數 197
【實例13.10】保存手機號 197
13.5 綜合案例——文件加密 198
13.6 實戰練習 199
14章 內存管理
14.1 內存組織方式 202
14.1.1 內存的組織方式 202
14.1.2 堆與棧 202
【實例14.1】利用malloc()函數分配內存空間 202
14.2 動態管理 203
14.2.1 malloc()函數 203
【實例14.2】衣服進貨啦! 203
14.2.2 calloc()函數 204
【實例14.3】輸出“Mingrisoft” 204
14.2.3 realloc()函數 205
【實例14.4】重新分配內存 205
14.2.4 free()函數 206
【實例14.5】釋放內存空間 206
14.3 內存丟失 206
14.4 綜合案例——用棧及遞歸計算多項式 207
14.5 實戰練習 208
案例篇
15章 讓音樂響起來(C+媒體播放函數)
15.1 案例效果預覽 210
15.2 案例準備 211
15.3 業務流程圖 211
15.4 實現過程 211
15.4.1 創建新項目 211
15.4.2 下載mp3文件 213
15.4.3 引用函數庫 213
15.4.4 導入媒體靜態庫 213
15.4.5 使用媒體播放 213
15.5 關鍵技術 214
16章 搶紅包(數組+隨機函數)
16.1 案例效果預覽 217
16.2 案例準備 218
16.3 業務流程圖 218
16.4 實現過程 218
16.4.1 創建新項目 218
16.4.2 引用函數庫 219
16.4.3 存儲紅包不同金額 219
16.4.4 隨機生成紅包金額 219
16.4.5 輸出隨機紅包金額 220
16.5 關鍵技術 220
17章 漢諾塔遊戲(C+遞歸思想)
17.1 案例效果預覽 224
17.2 案例準備 224
17.3 業務流程圖 225
17.4 實現過程 225
17.4.1 分析移動漢諾塔過程 225
17.4.2 創建新項目 227
17.4.3 引用函數庫 228
17.4.4 定義移動過程函數 228
17.4.5 main()函數 228
17.5 關鍵技術 228
18章 單詞背記遊戲(文件作+數組)
18.1 案例效果預覽 232
18.2 案例準備 232
18.3 業務流程圖 233
18.4 實現過程 233
18.4.1 存儲練習的單詞 233
18.4.2 創建新項目 233
18.4.3 導入函數庫 234
18.4.4 定義宏 234
18.4.5 定義全局變量 235
18.4.6 顯示選項 235
18.4.7 生成選項並返回正確下標 235
18.4.8 讀取單詞 235
18.4.9 判斷選擇情況以及得分情況 236
18.4.10 main()函數 237
18.5 關鍵技術 237
19章 情商測試(條件控制+輸入函數)
19.1 案例效果預覽 239
19.2 案例準備 239
19.3 業務流程圖 239
19.4 實現過程 240
19.4.1 創建新項目 240
19.4.2 導入函數庫 241
19.4.3 函數聲明及全局變量 241
19.4.4 定義10道測試題 242
19.4.5 計算題目得分及分析情商 248
19.4.6 main()函數 249
19.5 關鍵技術 249
20章 頭像挂件(IMAGE+圖像處理函數)
20.1 案例效果預覽 251
20.2 案例準備 252
20.3 業務流程圖 252
20.4 實現過程 252
20.4.1 下載並安裝EasyX圖形庫插件 252
20.4.2 創建新項目 254
20.4.3 導入函數庫 255
20.4.4 初始化窗口 256
20.4.5 打印頭像加挂件 256
20.4.6 凍結屏幕以及關閉繪製窗口 257
20.5 關鍵技術 257
21章 猜拳遊戲(Windows API+隨機數+文件作)
21.1 案例效果預覽 260
21.2 案例準備 261
21.3 業務流程圖 261
21.4 實現過程 261
21.4.1 創建新項目 261
21.4.2 預處理模塊設計 262
21.4.3 遊戲歡迎界面設計 263
21.4.4 遊戲說明界面設計 264
21.4.5 遊戲邏輯設計 266
21.4.6 顯示遊戲結束界面設計 267
21.5 關鍵技術 271
22章 抖音表白小程序(MessageBo+判斷語句)
22.1 案例效果預覽 273
22.2 案例準備 273
22.3 業務流程圖 274
22.4 實現過程 274
22.4.1 創建新項目 274
22.4.2 導入函數庫 275
22.4.3 設置表白對話框 275
22.4.4 按鈕“是”對話框 275
22.4.5 按鈕“否”對話框 275
22.5 關鍵技術 276
23章 彈幕來嘍(文件+windows.h函數庫+自定義函數)
23.1 案例效果預覽 278
23.2 案例準備 279
23.3 業務流程圖 279
23.4 實現過程 279
23.4.1 創建新項目 279
23.4.2 創建彈幕內容 280
23.4.3 導入函數庫 280
23.4.4 將指定內容拷貝到剪貼板上 281
23.4.5 實現發彈幕 281
23.4.6 main()函數 282
23.5 關鍵技術 282
24章 控制紅綠燈(條件判斷+圖像處理+Sleep()函數)
24.1 案例效果預覽 286
24.2 案例準備 287
24.3 業務流程圖 287
24.4 實現過程 287
24.4.1 創建新項目 287
24.4.2 導入函數庫 288
24.4.3 定義變量及初始化窗口 289
24.4.4 顯示紅綠燈初始狀態 289
24.4.5 根據輸入顯示紅綠燈狀態 289
24.4.6 凍結屏幕以及關閉繪製窗口 290
24.5 關鍵技術 290
25章 a箭機器人(條件判斷+自定義函數)
25.1 案例效果預覽 293
25.2 案例準備 293
25.3 業務流程圖 293
25.4 實現過程 293
25.4.1 創建新項目 293
25.4.2 導入函數庫 294
25.4.3 中靶等級劃分 295
25.4.4 輸入中環數 295
26章 倒計時軟件(循環嵌套+windows.h)
26.1 案例效果預覽 296
26.2 案例準備 296
26.3 業務流程圖 297
26.4 實現過程 297
26.4.1 創建新項目 297
26.4.2 導入函數庫 298
26.4.3 自定義顏色函數 298
26.4.4 輸入倒計時開始時間 298
26.4.5 實現倒計時功能 299
26.5 關鍵技術 299
應用篇
27章 智能共享汽車管理系統
27.1 系統需求分析 304
27.1.1 系統概述 304
27.1.2 系統可行性分析 304
27.1.3 功能性需求分析 304
27.2 系統功能設計 304
27.2.1 系統功能結構 304
27.2.2 系統業務流程 304
27.2.3 系統預覽 305
27.3 系統開發 306
27.3.1 系統開發環境 306
27.3.2 項目文件組織結構 306
27.4 技術準備 306
27.4.1 連接數據庫準備工作 306
27.4.2 非ODBC方式作數據庫 308
27.5 數據庫設計 313
27.6 顯示主菜單模塊設計 313
27.6.1 模塊概述 313
27.6.2 實現顯示主菜單模塊 314
27.7 認證租車模塊設計 314
27.7.1 模塊概述 314
27.7.2 實現認證租車模塊 315
27.8 信息查詢模塊設計 318
27.8.1 模塊概述 318
27.8.2 實現信息查詢模塊 319
27.9 一鍵轉讓模塊設計 320
27.9.1 模塊概述 320
27.9.2 實現一鍵轉讓模塊 321
27.10 確認還車模塊設計 322
27.10.1 模塊概述 322
27.10.2 實現確認還車模塊 323
27.11 連接與關閉數據庫 324
28章 GSM短信控製家庭防盜報警系統
28.1 系統需求分析 327
28.1.1 系統概述 327
28.1.2 系統可行性分析 327
28.1.3 功能性需求分析 327
28.2 系統功能設計 327
28.2.1 系統功能結構 327
28.2.2 系統業務流程 327
28.2.3 系統預覽 328
28.3 系統開發 328
28.3.1 系統開發工具 328
28.3.2 電路圖 328
28.3.3 元件列表 329
28.4 LED聲光報警設計 329
28.4.1 LED燈報警設計 329
28.4.2 蜂鳴器報警設計 332
28.4.3 LED聲光報警設計實物圖 334
28.5 手機短信報警設計 334
28.5.1 液晶屏顯示狀態 334
28.5.2 GSM模塊接收短信 339
28.5.3 手機短信報警設計實物圖 342
28.6 按鍵設計 342
28.6.1 按鍵概述 342
28.6.2 按鍵的使用 342
28.7 其他關鍵代碼 344
附錄
附錄1:運算符優先級和結合性 352
附錄2:ASCII碼表 352