C語言程序設計 — 以機器博弈為例 (微課版)

邱虹坤、王亞傑、孫玉霞、劉成、王曉岩、郭建新、楊煦

  • 出版商: 清華大學
  • 出版日期: 2023-09-01
  • 售價: $390
  • 貴賓價: 9.5$371
  • 語言: 簡體中文
  • 頁數: 296
  • 裝訂: 平裝
  • ISBN: 7302641714
  • ISBN-13: 9787302641711
  • 相關分類: C 程式語言
  • 立即出貨 (庫存=1)

  • C語言程序設計 — 以機器博弈為例 (微課版)-preview-1
  • C語言程序設計 — 以機器博弈為例 (微課版)-preview-2
  • C語言程序設計 — 以機器博弈為例 (微課版)-preview-3
C語言程序設計 — 以機器博弈為例 (微課版)-preview-1

買這商品的人也買了...

商品描述

本書以機器博弈為例,系統地介紹了C語言程序設計。本書共13章,主要包括C語言概述、算法基礎、數據類型與表達式,選擇結構、循環結構、數組、函數、預處理與位運算、指針、結構體和鏈表、文件、面向對象編程基礎等內容,並在每章後附加人工智能(機器博弈)相關知識的擴展閱讀。 本書可作為高等院校程序設計課程的教材或教輔資料,也可作為機器博弈競賽的入門教材及機器博弈愛好者的參考書。

目錄大綱

目錄

 

 

第1章C語言概述/1

1.1電腦語言/1

1.1.1低級語言和高級語言/1

1.1.2面向過程和麵向對象/2

1.2C語言概述/3

1.2.1C語言的發展/3

1.2.2C語言的特點/3

1.3C語言程序示例/4

1.4C語言程序的開發過程/8

1.5小結/13

1.6習題/13

1.7擴展閱讀——初識人工智能/14

第2章算法基礎/16

2.1算法的概念/16

2.2算法的描述方法/17

2.3機器博弈的概念/19

2.4博弈算法/21

2.4.1搜索算法的分類與特點/21

2.4.2典型博弈算法介紹/21

2.5機器博弈項目規則/23

2.5.1井字棋規則/23

2.5.2亞馬遜棋規則/23

2.5.3五子棋規則/24

2.5.4愛恩斯坦棋規則/24

2.6小結/252.7習題/25

2.8擴展閱讀——機器博弈的發展歷程/25

第3章數據類型與表達式/28

3.1棋局要素/29

3.2常量與變量/30

3.2.1常量/30

3.2.2變量/33

3.2.3變量的定義與聲明/34

3.2.4變量初始化/35

3.3數據類型轉換/36

3.3.1隱式類型轉換/36

3.3.2顯式類型轉換/37

3.4運算符和表達式/38

3.4.1算術運算符及其表達式/38

3.4.2賦值運算符及其表達式/39

3.4.3機器博弈中的局面評估函數/40

3.5輸入與輸出/40

3.5.1字符輸入/輸出函數/40

3.5.2棋局信息輸出/41

3.5.3棋局信息輸入/43

3.6小結/45

3.7習題/45

3.8擴展閱讀——機器博弈競賽/46

第4章選擇結構/48

4.1引例/48

4.2關系運算與邏輯運算/49

4.2.1關系運算符及其表達式/49

4.2.2邏輯運算符及其表達式/50

4.2.3井字棋落子坐標合法性判斷/51

4.3if語句/52

4.3.1簡單邏輯判斷/52

4.3.2復雜邏輯判斷/56

4.3.3井字棋步數和落子顏色判斷/57

4.4switch語句/58

4.4.1switch語句的基本應用/59

4.4.2愛恩斯坦棋著法選擇/60

4.5小結/60

4.6習題/60

4.7擴展閱讀——機器博弈系統組成/61

第5章循環結構/63

5.1引例/63

5.23種循環語句/64

5.2.1while語句/64

5.2.2do…while語句/64

5.2.3for語句/66

5.3計數循環/67

5.3.1計數循環的基本應用/67

5.3.2蒙特卡洛方法求π的近似值/69

5.3.3井字棋隨機落子/70

5.4條件循環/71

5.4.1條件循環的基本應用/71

5.4.2井字棋落子坐標控制/73

5.5循環嵌套/73

5.5.1循環嵌套的基本應用/73

5.5.2繪制五子棋棋盤/75

5.6控制轉移語句/75

5.7綜合程序舉例——五子棋棋盤坐標及落子/77

5.8小結/80

5.9習題/80

5.10擴展閱讀——博弈樹/82

第6章數組/84

6.1一維數組/84

6.1.1引例/84

6.1.2一維數組的基本操作/85

6.1.3一維數組實現井字棋棋盤數字化/93

6.2二維數組/94

6.2.1二維數組的基本操作/94

6.2.2二維數組實現井字棋人人對弈/98

6.3字符數組/101

6.3.1字符數組的定義和引用/1016.3.2字符數組的輸入/輸出/103

6.3.3常用字符串處理函數/105

6.4綜合程序舉例——五子棋人人對弈程序/110

6.5小結/116

6.6習題/116

6.7擴展閱讀——機器博弈中的蒙特卡洛方法/117

第7章函數/119

7.1概述/119

7.1.1基本概念與引例/119

7.1.2井字棋博弈程序的函數/122

7.2函數的定義/123

7.2.1函數定義的基本格式/124

7.2.2函數的參數/124

7.2.3return語句/128

7.2.4函數原型的聲明/129

7.2.5實現博弈程序的一般過程和方法/130

7.3函數的調用/132

7.3.1函數調用的形式/132

7.3.2函數調用的過程/133

7.4遞歸函數的設計與調用/134

7.4.1簡單遞歸函數的設計與調用/134

7.4.2井字棋博弈程序中的遞歸函數/136

7.5變量的作用域和生存期/137

7.5.1變量的作用域/138

7.5.2變量的生存期/139

7.5.3井字棋博弈程序中的全局變量/140

7.6綜合程序舉例/142

7.7小結/149

7.8習題/149

7.9擴展閱讀——Minimax算法原理及其實現/150

第8章預處理與位運算/152

8.1預處理命令/152

8.1.1機器博弈中常量值的處理/152

8.1.2文件包含——機器博弈中多文件操作/156

8.1.3條件編譯——防止機器博弈中重復包含/159

8.2位運算/161

8.3機器博弈中的Zobrist哈希技術/166

8.4小結/168

8.5習題/168

8.6擴展閱讀——AlphaBeta剪枝/169

第9章指針/171

9.1指針的基本概念/171

9.1.1指針在博弈程序中的作用/171

9.1.2變量的地址/172

9.1.3指針變量的概念/174

9.2指針變量的定義與引用/174

9.2.1指針變量的定義與賦值/174

9.2.2指針變量的引用/176

9.2.3指針變量作為函數參數/177

9.3指針與數組/178

9.3.1通過指針訪問數組元素/178

9.3.2指針變量所支持的運算/179

9.3.3數組名作函數參數/180

9.3.4指向數組的指針/182

9.4指針與字符串/184

9.5指向函數的指針/186

9.6指針型函數/187

9.7指針數組和多級指針/188

9.7.1指針數組的概念/188

9.7.2多級指針/190

9.7.3main函數的參數/190

9.8指針在博弈程序中的應用/191

9.8.1用命令行參數設置博弈程序的先後手/192

9.8.2構建大小可變的棋盤/193

9.9綜合程序舉例/194

9.10小結/198

9.11習題/199

9.12擴展閱讀——遺傳算法/201

第10章結構體和鏈表/203

10.1結構體的基本操作——記錄競賽相關信息/203

10.1.1記錄五子棋棋譜數據/203

10.1.2結構體的聲明和定義/204

10.1.3結構體的初始化和引用/207

10.1.4類型定義符typedef/211

10.2結構體指針——記錄競賽得分信息/211

10.2.1指向結構體變量的指針/211

10.2.2指向結構體數組的指針/213

10.3單向鏈表——記錄賽隊成績/213

10.3.1概念/214

10.3.2動態存儲分配/216

10.3.3鏈表的基本操作/218

10.4綜合程序舉例——比賽積分數據維護/225

10.5小結/227

10.6習題/227

10.7擴展閱讀——人工神經網絡/228

第11章文件/230

11.1文件的概述/230

11.2文件的打開和關閉/232

11.2.1文件指針/232

11.2.2打開或關閉文件——棋譜文件的打開或關閉/233

11.3文件的讀寫函數/236

11.3.1字符讀寫函數——存取五子棋棋盤/236

11.3.2字符串讀寫函數——讀取名言警句/240

11.3.3格式化讀寫函數——保存落子信息/241

11.3.4塊讀寫函數——保存賽隊信息/244

11.4文件的定位函數/245

11.5綜合程序舉例——五子棋棋譜的讀寫/246

11.6小結/250

11.7習題/250

11.8擴展閱讀——機器學習/251

第12章淺談面向對象/253

12.1面向對象概念/253

12.2面向對象設計/254

12.2.1類的基本概念/254

12.2.2類的實例化/256

12.3Windows窗體設計/258

12.4綜合程序舉例/265

12.5小結/268

12.6習題/269

12.7擴展閱讀——深度學習/269

第13章項目實戰/271

13.1猜數游戲挑戰賽/271

13.1.1功能與要求/271

13.1.2程序的構成/271

13.1.3程序運行截圖/272

13.2簡易五子棋/273

13.2.1關鍵數據結構設計/273

13.2.2系統設計/274

13.2.3函數功能及說明/280

13.2.4數據結構和搜索算法的優化/281

13.3綜合程序舉例——五子棋的棋盤設計(C#)/283

13.4小結/291

13.5擴展閱讀——AlphaGo/292

附錄AC語言運算符優先級和結合性表/295

參考文獻/297