C語言程序設計:從計算思維到項目驅動(微課視頻版)
溫荷、王會、劉兆宏、王澤、胡元波、程鵬、林晨、張雪松、文汝傑
相關主題
商品描述
目錄大綱
目 錄
第1章C語言概述1
1.1計算機編程語言與國家信息化戰略1
1.2旅行到計算邊緣: 從高級語言到晶體管2
1.3計算機編程語言概述3
1.3.1多視角解析: 什麼是編程3
1.3.2創世紀: 機器指令與機器語言5
1.3.3第一次符號化: 匯編語言5
1.3.4面向用戶: 更加友好的高級語言6
1.3.5變成機器碼的兩種方式: 編譯與解釋7
1.4C語言的過去、現在和未來8
1.4.1C語言的產生背景8
1.4.2C語言的發展8
1.4.3C語言的應用場景9
1.5C語言的特點與語法構成9
1.5.1C語言的特點9
1.5.2語法的構成要素10
1.5.3C語言的結構11
1.5.4走進一個完整的C語言程序11
1.6C語言的學習方法12
1.6.1語法學習: 規則的重要性13
1.6.2算法學習13
1.6.3代碼的跟蹤與調試14
1.7編程規範: 高顏值C語言程序15
1.8IDE的使用16
1.9本章小結18
1.10課後習題19
1.10.1單選題19
1.10.2填空題19
1.10.3簡答題19
1.10.4論述題19第2章程序設計基礎知識21
2.1標識符與關鍵字21
2.1.1追根溯源: 變量在計算機內部到底是什麼22
2.1.2取一個好名字: 標識符命名與華夏姓氏22
2.1.3關鍵字23
2.2變量與常量23
2.2.1變量24
2.2.2常量25
2.2.3註釋26
2.2.4數據類型和存儲方式27
2.2.5類型轉換31
2.3運算符與表達式34
2.3.1一切都是運算34
2.3.2算術運算符34
2.3.3賦值運算符35
2.3.4關系運算符36
2.3.5邏輯運算符38
2.3.6位運算符41
2.3.7復合運算符43
2.3.8運算符的優先級44
2.4輸入與輸出46
2.4.1printf()函數46
2.4.2scanf()函數50
2.5編程規範: 優秀程序員眼中的命名法51
2.6本章小結53
2.7課後習題54
2.7.1單選題54
2.7.2程序填空題55
2.7.3編程題56
第3章控制流程58
3.1選擇大於努力58
3.2案例: 猜數遊戲59
3.3算法與流程59
3.3.1算法的概念60
3.3.2算法的描述60
3.3.3程序結構與流程圖60
3.4選擇結構62
3.4.1if語句62
3.4.2ifelse語句63
3.4.3ifelse嵌套64
3.4.4else與if匹配問題66
3.4.5switch語句68
3.4.6選擇結構實例71
3.5循環結構73
3.5.1while語句74
3.5.2dowhile語句77
3.5.3for語句77
3.5.4跳轉語句79
3.5.5嵌套循環85
3.5.6循環結構實例88
3.6常見錯誤與排錯90
3.6.1C程序常見錯誤90
3.6.2C程序常用的排錯方法92
3.7本章小結96
3.8課後習題96
3.8.1單選題96
3.8.2程序填空題99
3.8.3編程題101
第4章函數102
4.1分而治之(復用)102
4.2案例: 用函數優化猜數遊戲104
4.3函數的聲明和定義107
4.3.1函數的聲明108
4.3.2函數的定義108
4.4函數的參數和返回值109
4.4.1形式參數和實際參數110
4.4.2函數的返回值113
4.5函數的調用116
4.5.1函數調用的基本概念119
4.5.2函數調用的類型119
4.5.3函數的遞歸調用120
4.6變量作用域123
4.6.1局部變量和全局變量123
4.6.2動態存儲與靜態存儲126
4.6.3用extern聲明外部變量128
4.7本章小結130
4.8課後習題130
4.8.1單選題130
4.8.2程序填空題131
4.8.3編程題133
第5章數組134
5.1數組產生的背景134
5.2人以群分、物以類聚134
5.3一維數組 136
5.3.1一維數組的聲明與初始化136
5.3.2數組的元素訪問與修改139
5.3.3一維數組的常見操作141
5.4二維數組 143
5.4.1二維數組的聲明與初始化143
5.4.2二維數組的元素訪問與修改144
5.4.3二維數組的常見操作145
5.5多維數組145
5.5.1多維數組的聲明與初始化145
5.5.2多維數組的元素訪問與修改147
5.5.3多維數組的常見操作149
5.6數組與函數149
5.6.1數組作為函數調用參數149
5.6.2數組作為函數返回值150
5.7一維數組的應用舉例 151
5.7.1數組在排序算法中的應用151
5.7.2數組在搜索算法中的應用152
5.7.3數組在統計分析中的應用153
5.7.4數組在加密/解密中的應用154
5.8多維數組的應用155
5.8.1多維數組在圖像處理中的應用155
5.8.2多維數組在矩陣運算中的應用156
5.8.3多維數組在遊戲開發中的應用157
5.9數組的擴展知識158
5.9.1數組的局部性原理與緩存優化158
5.9.2數組的相關數據結構159
5.9.3數組的性能分析與優化技巧159
5.10課程思政參考案例159
5.11本章小結160
5.12課後習題161
5.12.1單選題161
5.12.2程序填空題162
5.12.3編程題165
第6章指針166
6.1指針與國家信息安全: 程序員的責任與使命166
6.2案例引入: 快速排序167
6.3指針的概念167
6.3.1地址、變量和指針168
6.3.2指針變量的定義和引用168
6.4指針與數組170
6.4.1指針與一維數組170
6.4.2指針與二維數組173
6.4.3指針數組177
6.5指向指針的指針179
6.6指針與函數180
6.6.1指針變量作為函數參數180
6.6.2函數的返回值為指針182
6.6.3指向函數的指針183
6.7內存管理184
6.7.1C語言內存區域劃分184
6.7.2動態內存分配函數185
6.8案例實現: 快速排序187
6.9本章小結188
6.10課後習題189
6.10.1單選題189
6.10.2程序填空題190
6.10.3編程題192
第7章字符串193
7.1千裏之堤,毀於蟻穴193
7.2案例: 愷撒密碼194
7.3走進字符串196
7.3.1字符與字符串196
7.3.2用數組實現的字符串197
7.3.3字符串指針198
7.3.4字符串的輸入/輸出201
7.4字符串處理函數204
7.4.1計算字符串長度函數strlen()204
7.4.2字符串連接函數strcat()205
7.4.3字符串比較函數strcmp()205
7.4.4字符串復制函數strcpy()206
7.5向函數傳遞字符串206
7.5.1字符串指針作為函數參數206
7.5.2字符數組作為函數參數207
7.6本章小結208
7.7課後習題208
7.7.1單選題208
7.7.2程序填空題210
7.7.3編程題212
第8章結構體與共用體213
8.1課程思政: “共用體”與“人類命運共同體”的聯系和區別213
8.2結構體的基礎213
8.2.1結構體類型的概念213
8.2.2結構體變量的定義214
8.2.3結構體變量的引用216
8.2.4結構體變量的初始化218
8.3結構體數組218
8.3.1結構體數組的定義218
8.3.2初始化結構體數組218
8.4結構體指針219
8.4.1指向結構體變量的指針219
8.4.2指向結構體數組的指針219
8.4.3結構體作為函數參數220
8.5結構體的嵌套221
8.6共用體222
8.6.1共用體的概念222
8.6.2共用體變量的引用222
8.6.3共用體變量的初始化222
8.6.4共用體類型的數據特點223
8.7線性表的鏈式存儲結構223
8.7.1線性表鏈式存儲結構定義223
8.7.2線性表鏈式存儲結構的代碼描述224
8.7.3單鏈表的讀取224
8.8綜合項目: 學生成績管理225
8.9本章小結 227
8.10課後習題227
8.10.1單選題227
8.10.2程序填空題229
8.10.3編程題231
第9章文件236
9.1文件與隱私保護236
9.2文件的概念與分類237
9.2.1文本文件與二進制文件237
9.2.2文件的存儲結構239
9.3文件指針與文件操作函數239
9.3.1文件指針的定義239
9.3.2文件操作函數介紹240
9.4文件的打開與關閉241
9.4.1fopen()函數241
9.4.2fclose()函數242
9.4.3打開文件的錯誤異常處理242
9.5讀取文本文件243
9.5.1按字符讀取函數fgetc()243
9.5.2按字符串讀取函數fgets()244
9.5.3按格式讀取函數fscanf()245
9.6寫入文本文件247
9.6.1按字符寫入函數fputc()247
9.6.2按字符串寫入函數fputs()248
9.6.3按格式化方式寫入函數fprintf()249
9.7文本文件操作案例251
9.7.1文本文件復制251
9.7.2文本文件統計253
9.8寫入二進制文件255
9.8.1fwrite()函數255
9.8.2二進制文件的順序寫入255
9.8.3二進制文件的隨機寫入256
9.9讀取二進制文件257
9.9.1fread()函數257
9.9.2二進制文件的順序讀取258
9.9.3二進制文件的隨機讀取259
9.10二進制文件操作案例260
9.10.1二進制文件加密算法260
9.10.2結構體數據存取圖片文件的復制263
9.11文件操作函數小結264
9.12綜合應用項目264
9.12.1日誌文件信息工具264
9.12.2學生信息管理系統267
9.13本章小結272
9.14課後習題273
9.14.1單選題273
9.14.2程序填空題274
9.14.3編程題276
第10章預處理278
10.1推動創新與變革的驅動力278
10.2案例引入: 通用日誌庫279
10.3宏定義279
10.3.1不帶參數的宏定義279
10.3.2帶參數的宏定義281
10.4#include指令283
10.5條件編譯285
10.5.1#if命令285
10.5.2#ifdef及ifndef命令286
10.5.3#undef命令287
10.5.4#line命令288
10.5.5#pragma命令289
10.6案例實現: 通用日誌庫289
10.7本章小結291
10.8課後習題291
10.8.1單選題291
10.8.2填空題294
10.8.3編程題295
第11章火車訂票系統296
11.1設計目的296
11.2需求分析296
11.3總體設計297
11.4詳細設計與實現298
11.4.1系統架構298
11.4.2預處理和數據結構299
11.4.3主函數300
11.4.4框架模塊300
11.4.5添加模塊303
11.4.6查找模塊304
11.4.7顯示模塊306
11.4.8修改模塊307
11.4.9訂票模塊308
11.4.10退票模塊310
11.4.11保存模塊312
11.5本章小結314
11.6課後習題315
第12章貪吃蛇遊戲開發316
12.1遊戲開發背景知識316
12.2需求分析317
12.3設計思路318
12.4數據結構319
12.5代碼結構與函數分工319
12.6主函數320
12.7圖形渲染320
12.7.1光標位置控制320
12.7.2遊戲地圖320
12.7.3蛇的初始化321
12.8蛇的移動算法323
12.9碰撞檢測324
12.10隨機數的產生與食物325
12.11本章小結326
12.12課後習題327
12.12.1簡答題327
12.12.2論述題327