本書系統(tǒng)全面的介紹了有關(guān)C語言程序設(shè)計開發(fā)所涉及的各類知識。全書共分18章,內(nèi)容包括C語言概述、算法、數(shù)據(jù)類型、運算符與表達式、常用的數(shù)據(jù)輸入/輸出函數(shù)、選擇結(jié)構(gòu)程序設(shè)計、循環(huán)控制、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體和共用體、位運算、預(yù)處理、文件、存儲管理、網(wǎng)絡(luò)套接字編程、綜合開發(fā)實例——趣味俄羅斯方塊、課程設(shè)計——學(xué)生信息管理系統(tǒng)。
《C語言程序設(shè)計(慕課版 第2版)》是一本C語言程序設(shè)計互聯(lián)網(wǎng)教材,買書送名師,明日科技資深講師面對面授課。本課程依托人民郵電出版社自主開發(fā)的在線教育慕課平臺——人郵學(xué)院(www.rymooc.com),該平臺具有完備的在線“教、學(xué)、測”功能。人郵學(xué)院提供體系完整的100學(xué)時慕課教學(xué)視頻同步講解,即學(xué)即練的在線測試。書中附有188個微課視頻,掃一掃書中二維碼,便可隨時隨地學(xué)習(xí)。附贈300余道習(xí)題和自測題, PPT 課件、案例源代碼、自測試卷、拓展案例等豐富的配套資源。
作者多年在高校從事c語言的教學(xué)工作,具有豐富的教學(xué)經(jīng)驗,同時承擔(dān)了多項課題,參與了很多企業(yè)的程序開發(fā)工作,具有很強的程序開發(fā)能力,是雙師型教師。在我社出版的第一版教材獲得了較高的社會認可。
第1章 C語言概述 1
1.1 C語言的發(fā)展史 2
1.1.1 程序語言簡述 2
1.1.2 C語言的歷史2
1.2 C語言的特點 3
1.3 一個簡單的C程序
3 1.4 一個完整的C程序 5
1.5 C語言程序的格式 8
1.6 開發(fā)環(huán)境 9
1.6.1 Dev C++ 9
1.6.2 Visual C++ 6.0 12
1.6.3 Visual Studio 2019 14
小結(jié) 16
上機指導(dǎo) 16
習(xí)題 17
第2章 算法 18
2.1 算法的基本概念 19
2.1.1 算法的特性 19
2.1.2 算法的優(yōu)劣 19
2.2 算法的描述 20
2.2.1 自然語言 20
2.2.2 流程圖 21
2.2.3 N-S流程圖 24
小結(jié) 25
上機指導(dǎo) 26
習(xí)題 26
第3章 數(shù)據(jù)類型 27
3.1 編程規(guī)范 28
3.2 關(guān)鍵字 28
3.3 標(biāo)識符 29
3.4 數(shù)據(jù)類型 30
3.5 常量 31
3.5.1 整型常量 31
3.5.2 實型常量 32
3.5.3 字符型常量 33
3.5.4 轉(zhuǎn)義字符 36
3.5.5 符號常量 36
3.6 變量 37
3.6.1 整型變量 37
3.6.2 實型變量 39
3.6.3 字符型變量 41
3.7 變量的存儲類別 42
3.7.1 auto變量 42
3.7.2 static變量 43
3.7.3 register變量 44
3.7.4 extern變量 44
3.8 混合運算 45
小結(jié) 46
上機指導(dǎo) 47
習(xí)題 47
第4章 運算符與表達式 48
4.1 表達式 49
4.2 賦值運算符與賦值表達式 50
4.2.1 變量賦初值 50
4.2.2 自動類型轉(zhuǎn)換 52
4.2.3 強制類型轉(zhuǎn)換 52
4.3 算術(shù)運算符與算術(shù)表達式 53
4.3.1 算術(shù)運算符 54
3.3.2 算術(shù)表達式 54
4.3.3 優(yōu)先級與結(jié)合性 55
4.3.4 自增、自減運算符 56
4.4 關(guān)系運算符與關(guān)系表達式 57
4.4.1 關(guān)系運算符 58
4.4.2 關(guān)系表達式 58
4.4.3 優(yōu)先級與結(jié)合性 59
4.5 邏輯運算符與邏輯表達式 60
4.5.1 邏輯運算符 60
4.5.2 邏輯表達式 60
4.5.3 優(yōu)先級與結(jié)合性 60
4.6 位邏輯運算符與位邏輯表達式 61
4.6.1 位邏輯運算符 61
4.6.2 位邏輯表達式 62
4.7 逗號運算符與逗號表達式 62
4.8 復(fù)合賦值運算符 63
小結(jié) 64
上機指導(dǎo) 65
習(xí)題 66
第5章 常用的數(shù)據(jù)輸入/輸出函數(shù) 67
5.1 語句 68 5.2 字符數(shù)據(jù)輸入/輸出 68
5.2.1 字符數(shù)據(jù)輸出 68
5.2.2 字符數(shù)據(jù)輸入 69
5.3 字符串輸入/輸出 71
5.3.1 字符串輸出函數(shù) 71
5.3.2 字符串輸入函數(shù) 72 5.4 格式輸出函數(shù) 73
5.5 格式輸入函數(shù) 76 5.6 順序程序設(shè)計應(yīng)用 79
小結(jié) 81
上機指導(dǎo) 81
習(xí)題 81
第6章 選擇結(jié)構(gòu)程序設(shè)計 82
6.1 if語句 83
6.2 if語句的基本形式 83
6.2.1 if語句形式 83
6.2.2 if...else語句形式 85
6.2.3 else if語句形式 88
6.3 if的嵌套形式 91
6.4 條件運算符 93
6.5 switch語句 95
6.5.1 switch語句的基本形式 95
6.5.2 多路開關(guān)模式的switch語句 98
6.6 if...else語句和switch語句的區(qū)別 100
6.7 選擇結(jié)構(gòu)程序應(yīng)用 101
小結(jié) 103
上機指導(dǎo) 103
習(xí)題 104
第7章 循環(huán)控制 105
7.1 循環(huán)語句 106
7.2 while語句 106
7.3 do...while語句 107
7.4 for語句 109
7.4.1 for語句使用 109
7.4.2 for循環(huán)的變體 111
7.4.3 for語句中的逗號應(yīng)用 112
7.5 3種循環(huán)語句的比較 113
7.6 循環(huán)嵌套 114
7.6.1 循環(huán)嵌套的結(jié)構(gòu) 114
7.6.2 循環(huán)嵌套實例 115
7.7 轉(zhuǎn)移語句 116
7.7.1 goto語句 116
7.7.2 break語句 118
7.7.3 continue語句 119
小結(jié) 120
上機指導(dǎo) 120
習(xí)題 120
第8章 數(shù)組 121
8.1 一維數(shù)組 122
8.1.1 一維數(shù)組的定義和引用 122
8.1.2 一維數(shù)組初始化 123
8.1.3 一維數(shù)組應(yīng)用 125
8.2 二維數(shù)組 126
8.2.1 二維數(shù)組的定義和引用 126
8.2.2 二維數(shù)組初始化 127
8.2.3 二維數(shù)組應(yīng)用 130
8.3 字符數(shù)組 131
8.3.1 字符數(shù)組的定義和引用 131
8.3.2 字符數(shù)組初始化 132
8.3.3 字符數(shù)組的結(jié)束標(biāo)志 133
8.3.4 字符數(shù)組的輸入和輸出 134
8.3.5 字符數(shù)組應(yīng)用 135 8.4 多維數(shù)組 136
8.5 數(shù)組的排序算法 136
8.5.1 選擇法排序 136
8.5.2 冒泡法排序 138
8.5.3 交換法排序 139
8.5.4 插入法排序 141
8.5.5 折半法排序 143
8.5.6 排序算法的比較 145
8.6 字符串處理函數(shù) 145
8.6.1 字符串復(fù)制 145
8.6.2 字符串連接 146
8.6.3 字符串比較 147
8.6.4 字符串大小寫轉(zhuǎn)換 148
8.6.5 獲得字符串長度 149
8.7 數(shù)組應(yīng)用 150
8.7.1 反轉(zhuǎn)輸出字符串 150
8.7.2 輸出系統(tǒng)日期和時間 151
8.7.3 字符串的加密和解密 153
小結(jié) 155
上機指導(dǎo) 155
習(xí)題 155
第9章 函數(shù) 156
9.1 函數(shù)概述 157
9.2 函數(shù)的定義 158
9.2.1 函數(shù)定義的形式 159
9.2.2 聲明與定義 160
9.3 返回語句 163
9.3.1 從函數(shù)返回 163
9.3.2 返回值 163
9.4 函數(shù)參數(shù) 165
9.4.1 形式參數(shù)與實際參數(shù) 165
9.4.2 數(shù)組作函數(shù)參數(shù) 166
9.4.3 main函數(shù)的參數(shù) 171
9.5 函數(shù)的調(diào)用 172
9.5.1 函數(shù)的調(diào)用方式 172
9.5.2 嵌套調(diào)用 175
9.5.3 遞歸調(diào)用 178
9.6 內(nèi)部函數(shù)和外部函數(shù) 179
9.6.1 內(nèi)部函數(shù) 180
9.6.2 外部函數(shù) 181
9.7 局部變量和全局變量 182
9.7.1 局部變量 182
9.7.2 全局變量 184
9.8 函數(shù)應(yīng)用 186
小結(jié) 190
上機指導(dǎo) 191
習(xí)題 191
第10章 指針 192
10.1 指針相關(guān)概念 193
10.1.1 地址與指針 193
10.1.2 變量與指針 193 10.1.3 指針變量 194
10.1.4 指針自加自減運算 197
10.2 數(shù)組與指針 198
10.2.1 一維數(shù)組與指針 198
10.2.2 二維數(shù)組與指針 201
10.2.3 字符串與指針 204
10.2.4 字符串?dāng)?shù)組 205 10.3 指向指針的指針 207
10.4 指針變量作函數(shù)參數(shù) 209
10.5 返回指針值的函數(shù) 216
10.6 指針數(shù)組作main函數(shù)的參數(shù) 217
小結(jié) 219
上機指導(dǎo) 219
習(xí)題 219
第11章 結(jié)構(gòu)體和共用體 220
11.1 結(jié)構(gòu)體 221
11.1.1 結(jié)構(gòu)體類型的概念 221
11.1.2 結(jié)構(gòu)體變量的定義 222
11.1.3 結(jié)構(gòu)體變量的引用 223
11.1.4 結(jié)構(gòu)體類型變量的初始化 225
11.2 結(jié)構(gòu)體數(shù)組 226
11.2.1 定義結(jié)構(gòu)體數(shù)組 226
11.2.2 結(jié)構(gòu)體數(shù)組的初始化 227
11.3 結(jié)構(gòu)體指針 229
11.3.1 指向結(jié)構(gòu)體變量的指針 229
11.3.2 指向結(jié)構(gòu)體數(shù)組的指針 231
11.3.3 結(jié)構(gòu)體作為函數(shù)參數(shù) 233
11.4 包含結(jié)構(gòu)的結(jié)構(gòu) 235
11.5 鏈表 236
11.5.1 鏈表概述 236
11.5.2 創(chuàng)建動態(tài)鏈表 237
11.5.3 輸出鏈表 239
11.6 鏈表相關(guān)操作 242
11.6.1 鏈表的插入操作 242
11.6.2 鏈表的刪除操作 243
11.7 共用體 246
11.7.1 共用體的概念 246
11.7.2 共用體變量的引用 246
11.7.3 共用體變量的初始化 247
11.7.4 共用體類型的數(shù)據(jù)特點 248
11.8 枚舉類型 248
小結(jié) 249
上機指導(dǎo) 250
習(xí)題 250
第12章 位運算 251
12.1 位與字節(jié) 252
12.2 位運算操作符 252
12.2.1 “與”運算符 252
12.2.2 “或”運算符 253
12.2.3 “取反”運算符 254
12.2.4 “異或”運算符 255
12.2.5 “左移”運算符 257
12.2.6 “右移”運算符 258
12.3 循環(huán)移位 260
12.4 位段 261
12.4.1 位段的概念與定義 261
12.4.2 位段相關(guān)說明 262
小結(jié) 264
上機指導(dǎo) 264
習(xí)題 264
第13章 預(yù)處理 265
13.1 宏定義 266
13.1.1 不帶參數(shù)的宏定義 266
13.1.2 帶參數(shù)的宏定義 267
13.2 #include命令 268
13.3 條件編譯 269
13.3.1 #if命令 269
13.3.2 #ifdef及#ifndef命令 271
13.3.3 #undef命令 273
13.3.4 #line命令 273
13.3.5 #pragma命令 273
小結(jié) 274
上機指導(dǎo) 274
習(xí)題 275
第14章 文件 276
14.1 文件概述 277
14.2 文件基本操作 277
14.2.1 文件類型指針 277
14.2.2 文件的打開 278
14.2.3 文件的關(guān)閉 278
14.3 文件的讀寫 279
14.3.1 fputc函數(shù) 279
14.3.2 fgetc函數(shù) 279
14.3.3 fputs函數(shù) 280
14.3.4 fgets函數(shù) 281
14.3.5 fprintf函數(shù) 282
14.3.6 fscanf函數(shù) 283
14.3.7 fread和fwrite函數(shù) 284
14.4 文件的定位 286
14.4.1 fseek函數(shù) 286
14.4.2 rewind函數(shù) 287
14.4.3 ftell函數(shù) 288
小結(jié) 289 上機指導(dǎo) 289
習(xí)題 290
第15章 存儲管理 291
15.1 內(nèi)存組織方式 292
15.1.1 內(nèi)存的組織方式 292
15.1.2 堆與!292
15.2 動態(tài)管理 294
15.2.1 malloc函數(shù) 294
15.2.2 calloc函數(shù) 295
15.2.3 realloc函數(shù) 296
15.2.4 free函數(shù) 296
15.3 內(nèi)存丟失 297
小結(jié) 298
上機指導(dǎo) 298
習(xí)題 298
第16章 網(wǎng)絡(luò)套接字編程 299 16.1 內(nèi)存組織方式 300 16.1.1 IP地址 300 16.1.2 OSI七層參考模型 300 16.1.3 地址解析 301 16.1.4 域名系統(tǒng) 301 16.1.5 TCP/IP 302 16.1.6 端口 303 16.1.7 套接字的引入 303 16.1.8 網(wǎng)絡(luò)字節(jié)順序 304 16.2 套接字概述 304 16.2.1 套接字概述 304 16.2.2 TCP的套接字的socket編程 304 16.2.3 UDP的套接字的socket編程 305 16.3 套接字函數(shù) 30516.3.1 套接字函數(shù)介紹 306 16.3.2 基于TCP的網(wǎng)絡(luò)聊天程序 310
小結(jié) 315
上機指導(dǎo) 315 習(xí)題 315
第17章 綜合開發(fā)實例 ——趣味俄羅斯方塊 316
17.1 開發(fā)背景 317
17.2 系統(tǒng)功能設(shè)計 317
17.2.1 系統(tǒng)功能結(jié)構(gòu) 317
17.2.2 業(yè)務(wù)流程圖 317
17.3 使用Dev C++項目創(chuàng)建 318
17.3.1 開發(fā)環(huán)境需求 318
17.3.2 創(chuàng)建項目 318
17.4 預(yù)處理模塊設(shè)計 321
17.4.1 文件引用 321
17.4.2 宏定義 321
17.4.3 定義全局變量 321
17.4.4 函數(shù)聲明 322
17.5 游戲歡迎界面設(shè)計 322
17.5.1 游戲歡迎界面概述 322
17.5.2 設(shè)置文字顏色 323
17.5.3 設(shè)置文字顯示位置 324
17.5.4 設(shè)計標(biāo)題部分 324
17.5.5 設(shè)計字符花裝飾界面 326
17.5.6 設(shè)計菜單選項的邊框 327
17.5.7 設(shè)計菜單選項的文字 328
17.6 游戲主窗體設(shè)計 329
17.6.1 游戲主窗體設(shè)計概述 329
17.6.2 打印輸出游戲界面 329
17.6.3 繪制俄羅斯方塊 331 17.6.4 打印俄羅斯方塊 335
17.7 游戲邏輯設(shè)計 336
17.7.1 游戲邏輯概述 336
17.7.2 判斷俄羅斯方塊是否 可移動 336
17.7.3 清除俄羅斯方塊下落的 痕跡 337
17.7.4 判斷方塊是否滿行 338
17.7.5 隨機產(chǎn)生俄羅斯方塊 類型的序號 339
17.8 開始游戲 340
17.8.1 開始游戲模塊概述 340
17.8.2 顯示俄羅斯方塊 341
17.8.3 實現(xiàn)各種按鍵操作 342
17.8.4 游戲結(jié)束界面 346
17.8.5 重新開始游戲 347
17.9 游戲按鍵說明模塊 348
17.9.1 游戲按鍵說明簡介 348
17.9.2 按鍵說明界面的實現(xiàn) 348
17.10 游戲規(guī)則介紹模塊 349
17.10.1 游戲規(guī)則介紹 349
17.10.2 游戲規(guī)則介紹的實現(xiàn) 350
17.11 退出游戲 351
小結(jié) 352
第18章 綜合實例 —學(xué)生信息管理系統(tǒng) 353
18.1 開發(fā)背景 354
18.2 開發(fā)環(huán)境需求 354
18.3 系統(tǒng)功能設(shè)計 354
18.4 預(yù)處理模塊設(shè)計 354
18.5 主函數(shù)設(shè)計 355
18.5.1 功能概述 355
18.5.2 實現(xiàn)主函數(shù) 356
18.5.3 顯示主菜單 357
18.6 錄入學(xué)生信息 358
18.6.1 模塊概述 358
18.6.2 實現(xiàn)文件的打開和 關(guān)閉功能 358
18.6.3 實現(xiàn)錄入學(xué)生信息 359
18.7 查詢學(xué)生信息 361
18.7.1 模塊概述 361
18.7.2 查詢沒有記錄的文件 362
18.7.3 查找并打印學(xué)生信息 362
18.8 刪除學(xué)生信息 363 18.8.1 模塊概述 363
18.8.2 實現(xiàn)刪除學(xué)生信息 363
18.9 修改學(xué)生信息 364
18.9.1 模塊概述 364
18.9.2 實現(xiàn)修改學(xué)生信息 365
18.10 插入學(xué)生信息 366
18.10.1 模塊概述 36618.10.2 實現(xiàn)插入學(xué)生信息 367
18.11 學(xué)生成績排名 368
18.11.1 模塊概述 368 18.11.2 使用交換排序法實現(xiàn) 排序功能 369
18.11.3 實現(xiàn)學(xué)生成績排名 369
18.12 統(tǒng)計學(xué)生總數(shù) 370
18.12.1 模塊概述 370
18.12.2 實現(xiàn)統(tǒng)計學(xué)生總數(shù) 371
18.13 顯示所有學(xué)生信息 371 18.13.1 模塊概述 371
18.13.2 讀取并顯示所有學(xué)生 信息 372
小結(jié) 372
附錄
上機實驗 373
實驗1:Visual C++6.0的下載和安裝 373
實驗2:計算某日是該年的第幾天 376
實驗3:老師分糖果問題 377
實驗4:求一元二次方程的根 378
實驗5:求學(xué)生總成績和平均成績 379
實驗6:模擬ATM機界面程序 379
實驗7:猜數(shù)字游戲 382
實驗8:使用數(shù)組統(tǒng)計學(xué)生成績 385
實驗9:設(shè)計函數(shù)計算學(xué)生平均身高 386
實驗10:使用指針交換兩個數(shù)組中的 最大值 386
實驗11:設(shè)計通信錄 388
實驗12:取出給定16位二進制數(shù)的 奇數(shù)位 389
實驗13:編寫頭文件包含圓面積的 計算公式 390
實驗14:復(fù)制文件內(nèi)容到另一文件 391
實驗15:商品信息的動態(tài)存放 392
實驗16:利用UDP實現(xiàn)廣播通信 393