C語言程序設計:從計算思維到項目驅動(微課視頻版)

溫荷、王會、劉兆宏、王澤、胡元波、程鵬、林晨、張雪松、文汝傑

  • 出版商: 清華大學
  • 出版日期: 2025-05-01
  • 售價: $419
  • 語言: 簡體中文
  • ISBN: 7302688788
  • ISBN-13: 9787302688785
  • 相關分類: C 程式語言
  • 下單後立即進貨 (約4週~6週)

  • C語言程序設計:從計算思維到項目驅動(微課視頻版)-preview-1
  • C語言程序設計:從計算思維到項目驅動(微課視頻版)-preview-2
  • C語言程序設計:從計算思維到項目驅動(微課視頻版)-preview-3
C語言程序設計:從計算思維到項目驅動(微課視頻版)-preview-1

相關主題

商品描述

"本書不僅全面覆蓋C語言的核心語法、數據結構、算法設計等基礎知識,還著重培養計算思維能力,並通過一系列精心設計的項目實踐,將理論知識生動轉化為解決實際問題的能力,使學習過程既有趣又富有成效,旨在培養既具備紮實專業技能又擁有良好道德情操和社會責任感的復合型人才。 全書共分為12章: 第1~3章為C語言基礎,這部分內容首先介紹了計算思維的概念,強調了邏輯思維和問題解決的重要性。隨後,逐步講解了C語言的基本語法,包括變量、數據類型、運算符、控制結構等,為後續的學習打下堅實的基礎。第4~10章為進階編程與算法設計,深入探討了函數、數組、指針、結構體等高級主題,以及如何利用這些概念來設計和實現算法。通過具體的編程實例,引導讀者理解如何將抽象的算法思想轉化為具體的代碼實現。第11、12章為項目實戰與綜合應用,通過火車訂票系統、貪吃蛇遊戲兩個經典案例,幫助讀者將所學知識應用於實踐中。每個項目都配有源代碼和微課視頻教程,以便讀者能夠循序漸進地完成項目,並在過程中不斷鞏固和深化對C語言的理解。全書提供了大量應用實例,每章後均附有習題。 本書適合計算機科學及相關專業的本科生、研究生,以及希望通過自學掌握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.2ifelse語句63

3.4.3ifelse嵌套64

3.4.4else與if匹配問題66

3.4.5switch語句68

3.4.6選擇結構實例71

3.5循環結構73

3.5.1while語句74

3.5.2dowhile語句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