C語言程序設計(慕課版 第2版)
內容描述
本書系統全面的介紹了有關C語言程序設計開發所涉及的各類知識。全書共分18章,內容包括C語言概述、算法、數據類型、運算符與表達式、常用的數據輸入/輸出函數、選擇結構程序設計、循環控制、數組、函數、指針、結構體和共享體、位運算、預處理、文件、存儲管理、網絡套接字編程、綜合開發實例——趣味俄羅斯方塊、課程設計——學生信息管理系統。
目錄大綱
第1章C語言概述1
1.1 C語言的發展史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開發環境9
1.6.1 Dev C++ 9
1.6.2 Visual C++ 6.0 12
1.6. 3 Visual Studio 2019 14
小結16
上機指導16
習題17
第2章算法18
2.1算法的基本概念19
2.1.1算法的特性19
2.1.2算法的優劣19
2.2算法的描述20
2.2.1自然語言20
2.2.2流程圖21
2.2.3 NS流程圖24
小結25
上機指導26
習題26
第3章數據類型27
3.1編程規範28
3.2關鍵字28
3.3標識符29
3.4數據類型30
3.5常量31
3.5.1整型常量31
3.5.2實型常量32
3.5.3字符型常量33
3.5.4轉義字符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
小結46
上機指導47
習題47
第4章運算符與表達式48
4.1表達式49
4.2賦值運算符與賦值表達式50
4.2.1變量賦初值50
4. 2.2自動類型轉換52
4.2.3強制類型轉換52
4.3算術運算符與算術表達式53
4.3.1算術運算符54
3.3.2算術表達式54
4.3.3優先級與結合性55
4.3.4自增、自減運算符56
4.4關係運算符與關係表達式57
4.4.1關係運算符58
4.4.2關係表達式58
4. 4.3優先級與結合性59
4.5邏輯運算符與邏輯表達式60
4.5.1邏輯運算符60
4.5.2邏輯表達式60
4.5.3優先級與結合性60
4.6位邏輯運算符與位邏輯表達式61
4.6.1位邏輯運算符61
4.6.2位邏輯表達式62
4.7逗號運算符與逗號表達式62
4.8複合賦值運算符63
小結64
上機指導65
習題66
第5章常用的數據輸入/輸出函數67
5.1語句68 5.2字符數據輸入/輸出68
5.2.1字符數據輸出68
5.2.2字符數據輸入69
5.3字符串輸入/輸出71
5.3.1字符串輸出函數71
5.3.2字符串輸入函數72 5.4格式輸出函數73
5.5格式輸入函數76 5.6順序程序設計應用79
小結81
上機指導81
習題81
第6章選擇結構程序設計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多路開關模式的switch語句98
6.6 if...else語句和switch語句的區別100
6.7選擇結構程序應用101
小結103
上機指導103
習題104
第7章循環控制105
7.1循環語句106
7.2 while語句106
7.3 do...while語句107
7.4 for語句109
7.4.1 for語句使用109
7.4.2 for循環的變體111
7.4.3 for語句中的逗號應用112
7.5 3種循環語句的比較113
7.6循環嵌套114
7.6.1循環嵌套的結構114
7.6.2循環嵌套實例115
7.7轉移語句116
7.7.1 goto語句116
7.7.2 break語句118
7.7.3 continue語句119
小結120
上機指導120
習題120
第8章數組121
8.1一維數組122
8.1.1一維數組的定義和引用122
8.1.2一維數組初始化123
8.1.3一維數組應用125
8.2二維數組126
8.2.1二維數組的定義和引用126
8.2.2二維數組初始化127
8.2.3二維數組應用130
8.3字符數組131
8.3.1字符數組的定義和引用131
8.3.2字符數組初始化132
8.3.3字符數組的結束標誌133
8. 3.4字符數組的輸入和輸出134
8.3.5字符數組應用135 8.4多維數組136
8.5數組的排序算法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字符串處理函數145
8.6 .1字符串複製145
8.6.2字符串連接146
8.6.3字符串比較147
8.6.4字符串大小寫轉換148
8.6.5獲得字符串長度149
8.7數組應用150
8.7.1反轉輸出字符串150
8.7.2輸出系統日期和時間151
8.7.3字符串的加密和解密153
小結155
上機指導155
習題155
第9章函數156
9.1函數概述157
9.2函數的定義158
9.2.1函數定義的形式159
9. 2.2聲明與定義160
9.3返回語句163
9.3.1從函數返回163
9.3.2返回值163
9.4函數參數165
9.4.1形式參數與實際參數165
9.4 .2數組作函數參數166
9.4.3 main函數的參數171
9.5函數的調用172
9.5.1函數的調用方式172
9.5.2嵌套調用175
9.5.3遞歸調用178
9.6內部函數和外部函數179
9.6.1內部函數180
9.6.2外部函數181
9.7局部變量和全局變量182
9.7.1局部變量182
9.7.2全局變量184
9.8函數應用186
小結190
上機指導191
習題191
第10章指針192
10.1指針相關概念193
10.1.1地址與指針193
10.1.2變量與指針193 10.1.3指針變量194
10.1.4指針自加自減運算197
10.2數組與指針198
10.2.1一維數組與指針198
10.2.2二維數組與指針201
10.2.3字符串與指針204
10.2.4字符串數組205 10.3指向指針的指針207
10.4指針變量作函數參數209
10.5返回指針值的函數216
10.6指針數組作main函數的參數217
小結219
上機指導219
習題219
第11章結構體和共用體220
11.1結構體221
11.1. 1結構體類型的概念221
11.1.2結構體變量的定義222
11.1.3結構體變量的引用223
11.1.4結構體類型變量的初始化225
11.2結構體數組226
11. 2.1定義結構體數組226
11.2.2結構體數組的初始化227
11.3結構體指針229
11.3.1指向結構體變量的指針229
11.3.2指向結構體數組的指針231
11.3.3結構體作為函數參數233
11.4包含結構的結構235
11.5鍊錶236
11.5.1鍊錶概述236
11.5.2創建動態鍊錶237
11.5.3輸出鍊錶239
11.6鍊錶相關操作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共用體類型的數據特點248
11.8枚舉類型248
小結249
上機指導250
習題250
第12章位運算251
12.1位與字節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循環移位260
12.4位段261
12.4.1位段的概念與定義261
12.4.2位段相關說明262
小結264
上機指導264
習題264
第13章預處理265
13.1宏定義266
13.1.1不帶參數的宏定義266
13.1.2帶參數的宏定義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
小結274
上機指導274
習題275
第14章文件276
14.1文件概述277
14.2文件基本操作277
14.2.1文件類型指針277
14.2.2文件的打開278
14.2.3文件的關閉278
14.3文件的讀寫279
14.3.1 fputc函數279
14.3.2 fgetc函數279
14.3.3 fputs函數280
14.3.4 fgets函數281
14.3.5 fprintf函數282
14 .3.6 fscanf函數283
14.3.7 fread和fwrite函數284
14.4文件的定位286
14.4.1 fseek函數286
14.4.2 rewind函數287
14.4.3 ftell函數288
小結289上機指導289
習題290
第15章存儲管理291
15.1內存組織方式292
15.1.1內存的組織方式292
15.1.2堆與棧292
15.2動態管理294
15.2.1 malloc函數294
15.2.2 calloc函數295
15.2.3 realloc函數296
15.2.4 free函數296
15.3內存丟失297
小結298
上機指導298
習題298
第16章網絡套接字編程299
16.1內存組織方式300
16.1.1 IP地址300
16.1 .2 OSI七層參考模型300
16.1.3地址解析301
16.1.4域名系統301
16.1.5 TCP/IP 302
16.1.6端口303
16.1.7套接字的引入303
16.1.8網絡字節順序304
16.2套接字概述304
16.2.1套接字概述304
16.2.2 TCP的套接字的socket編程304
16.2.3 UDP的套接字的socket編程305
16.3套接字函數305
16.3.1套接字函數介紹306
16.3.2基於TCP的網絡聊天程序310
小結315
上機指導315
習題315
第17章綜合開發實例——趣味俄羅斯方塊316
17.1開發背景317
17.2系統功能設計317
17.2.1系統功能結構317
17.2.2業務流程圖317
17.3使用Dev C++項目創建318
17.3.1開發環境需求318
17.3.2創建項目318
17.4預處理模塊設計321
17.4.1文件引用321
17.4.2宏定義321
17.4.3定義全局變量321
17.4.4函數聲明322
17.5遊戲歡迎界面設計322
17.5.1遊戲歡迎界面概述322
17.5.2設置文字顏色323
17.5.3設置文字顯示位置324
17.5.4設計標題部分324
17.5.5設計字符花裝飾界面326
17.5.6設計菜單選項的邊框327
17.5.7設計菜單選項的文字328
17.6遊戲主窗體設計329
17.6.1遊戲主窗體設計概述329
17.6.2打印輸出遊戲界面329
17.6.3繪製俄羅斯方塊331 17.6.4打印俄羅斯方塊335
17.7遊戲邏輯設計336
17.7.1遊戲邏輯概述336
17.7.2判斷俄羅斯方塊是否可移動336
17.7.3清除俄羅斯方塊下落的痕跡337
17.7.4判斷方塊是否滿行338
17.7.5隨機產生俄羅斯方塊類型的序號339
17.8開始遊戲340
17.8.1開始遊戲模塊概述340
17.8.2顯示俄羅斯方塊341
17.8.3實現各種按鍵操作342
17.8.4遊戲結束界面346
17.8.5重新開始遊戲347
17.9遊戲按鍵說明模塊348
17.9.1遊戲按鍵說明簡介348
17.9.2按鍵說明界面的實現348
17.10遊戲規則介紹模塊349
17. 10.1遊戲規則介紹349
17.10.2遊戲規則介紹的實現350
17.11退出遊戲351
小結352
第18章綜合實例—學生信息管理系統353
18.1開發背景354
18.2開發環境需求354
18.3系統功能設計354
18.4預處理模塊設計354
18.5主函數設計355
18.5.1功能概述355
18.5.2實現主函數356
18.5.3顯示主菜單357
18.6錄入學生信息358
18.6.1模塊概述358
18.6.2實現文件的打開和關閉功能358
18.6.3實現錄入學生信息359
18.7查詢學生信息361
18.7.1模塊概述361
18.7.2查詢沒有記錄的文件362
18.7.3查找並打印學生信息362
18.8刪除學生信息363 18.8.1模塊概述363
18.8.2實現刪除學生信息363
18.9修改學生信息364
18.9.1模塊概述364
18.9.2實現修改學生信息365
18.10插入學生信息366
18.10.1模塊概述36618.10.2實現插入學生信息367
18 .11學生成績排名368
18.11.1模塊概述368 18.11.2使用交換排序法實現排序功能369
18.11.3實現學生成績排名369
18.12統計學生總數370
18.12.1模塊概述370
18.12.2實現統計學生總數371
18.13顯示所有學生信息371 18.13.1模塊概述371
18.13.2讀取並顯示所有學生信息372
小結372
附錄
上機實驗373
實驗1:Visual C++6.0的下載和安裝373
實驗2:計算某日是該年的第幾天376
實驗3:老師分糖果問題377
實驗4:求一元二次方程的根378
實驗5 :求學生總成績和平均成績379
實驗6:模擬ATM機界面程序379
實驗7:猜數字遊戲382
實驗8:使用數組統計學生成績385
實驗9:設計函數計算學生平均身高386
實驗10:使用指針交換兩個數組中的最大值386
實驗11:設計通信錄388
實驗12:取出給定16位二進制數的奇數位389
實驗13:編寫頭文件包含圓面積的計算公式390
實驗14:複製文件內容到另一文件391
實驗15:商品信息的動態存放392
實驗16:利用UDP實現廣播通信393
作者介紹
作者多年在高校從事c語言的教學工作,具有豐富的教學經驗,同時承擔了多項課題,參與了很多企業的程序開發工作,具有很強的程序開發能力,是雙師型教師。
在我社出版的第一版教材獲得了較高的社會認可。