本書為適應新工科復合型人才對計算思維和問題求解能力的要求而編寫。全書共12章,主要內(nèi)容包括:計算思維與問題求解,數(shù)據(jù)類型、運算符和表達式,簡單的C程序設(shè)計,選擇結(jié)構(gòu)程序設(shè)計,循環(huán)結(jié)構(gòu)程序設(shè)計,函數(shù),數(shù)組,常用算法,指針,結(jié)構(gòu)體,文件系統(tǒng)和人工智能經(jīng)典算法。本教材兼顧計算思維與程序設(shè)計基礎(chǔ)知識,注重問題抽象,通過問題案例分析,逐步給出問題求解算法與程序?qū)崿F(xiàn),引導讀者的算法思維和程序設(shè)計思維。通過“常用算法”和“人工智能經(jīng)典算法”兩章,進一步拓展讀者問題求解思維,提高讀者解決復雜專業(yè)領(lǐng)域問題的能力。
本書適合作為計算機專業(yè)和非計算機專業(yè)的計算思維課程、程序設(shè)計課程的教材,也適合作為高年級本科生、從事人工智能等相關(guān)行業(yè)的技術(shù)人員及廣大程序設(shè)計愛好者的參考書籍。
所有的程序均在計算機上調(diào)試通過。
文字嚴謹、流暢,例題豐富,文檔規(guī)范,注重程序設(shè)計技能訓練。
本書適合作為計算機專業(yè)和非計算機專業(yè)的計算思維課程、程序設(shè)計課程的教材,也適合作為高年級本科生、從事人工智能等相關(guān)行業(yè)的技術(shù)人員及廣大程序設(shè)計愛好者的參考書籍。
劉杰,現(xiàn)任計算機與信息科學系主任、計算機軟件教學團隊主任、黑龍江省計算機學會計算機教育與培訓專委會委員、中國計算機學會會員等。主持或參與各類科研項目40余項,獲省部級科技進步獎七項,發(fā)表論文近四十篇,著作三部。在教學研究方面,獲省級教學成果一等獎一項、二等獎一項。作為項目負責人主持研發(fā)的“高校實驗室綜合管理系統(tǒng)”,通過省教委主持的鑒定,在多所高校推廣應用,并申報國家級教學成果獎。
目 錄
第 1章 計算思維與問題求解 1
1.1 計算思維與程序設(shè)計 1
1.2 計算機問題求解的靈魂——算法 2
1.2.1 算法及其特性 2
1.2.2 算法表示方法 3
1.3 程序設(shè)計中的數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu) 6
1.4 計算機問題求解的步驟 7
1.4.1 求解問題的一般步驟 7
1.4.2 C語言程序開發(fā)步驟 9
1.5 C語言程序結(jié)構(gòu)及實例 11
1.5.1 C程序構(gòu)成 11
1.5.2 C編程風格 12
第 2章 數(shù)據(jù)類型、運算符和表達式 13
2.1 程序舉例 13
2.2 常量與變量 14
2.2.1 常量 14
2.2.2 變量 15
2.3 數(shù)據(jù)類型的一般概念 15
2.4 整型數(shù)據(jù) 16
2.4.1 整型變量 16
2.4.2 整型常量 19
2.5 實型數(shù)據(jù) 19
2.5.1 實型變量 20
2.5.2 實型常量 20
2.6 字符型數(shù)據(jù) 21
2.6.1 字符型常量 21
2.6.2 字符型變量 22
2.6.3 字符串常量 23
2.7 變量賦初值 24
2.8 不同數(shù)據(jù)類型數(shù)據(jù)間的混合運算 24
2.8.1 自動轉(zhuǎn)換 24
2.8.2 強制轉(zhuǎn)換 25
2.9 運算符和表達式 26
2.9.1 概述 26
2.9.2 算術(shù)運算符和算術(shù)表達式 26
2.9.3 自增、自減運算符 27
2.9.4 賦值運算符和賦值表達式 28
2.9.5 逗號運算符和逗號表達式 29
2.10 習題 30
第3章 簡單的C程序設(shè)計 32
3.1 賦值語句 32
3.2 數(shù)據(jù)的輸入輸出 33
3.2.1 字符數(shù)據(jù)的輸入輸出 34
3.2.2 格式輸入與格式輸出 36
3.3 綜合應用實例 46
3.4 智能算法能力拓展 48
3.5 習題 51
第4章 選擇結(jié)構(gòu)程序設(shè)計 52
4.1 if語句的基本形式 52
4.1.1 if單分支結(jié)構(gòu) 52
4.1.2 if雙分支結(jié)構(gòu) 53
4.2 if語句的表達式 55
4.2.1 關(guān)系運算符和關(guān)系表達式 55
4.2.2 邏輯運算符和邏輯表達式 56
4.2.3 關(guān)于if語句條件判斷 60
4.3 多分支選擇結(jié)構(gòu) 61
4.3.1 if多分支結(jié)構(gòu) 61
4.3.2 switch語句 64
4.4 if語句的嵌套結(jié)構(gòu)及條件表達式概念 68
4.4.1 if嵌套結(jié)構(gòu) 68
4.4.2 條件表達式 71
4.5 綜合應用實例 73
4.6 智能算法能力拓展 77
4.7 習題 78
第5章 循環(huán)結(jié)構(gòu)程序設(shè)計 79
5.1 while循環(huán) 79
5.1.1 while循環(huán)結(jié)構(gòu) 79
5.1.2 while循環(huán)實例解析 79
5.2 for循環(huán) 80
5.2.1 for循環(huán)結(jié)構(gòu) 80
5.2.2 for循環(huán)實例解析 81
5.3 do-while循環(huán) 82
5.3.1 do-while循環(huán)結(jié)構(gòu) 82
5.3.2 do-while循環(huán)實例解析 82
5.4 循環(huán)的嵌套 83
5.5 循環(huán)結(jié)構(gòu)的討論 84
5.5.1 while循環(huán)、for循環(huán)和do-while循環(huán)的比較 84
5.5.2 提前終止循環(huán)break語句 85
5.5.3 提前結(jié)束本次循環(huán)continue語句 85
5.6 綜合應用實例 86
5.7 習題 89
第6章 數(shù)組 92
6.1 成組數(shù)據(jù)處理問題實例及解決方法 92
6.2 一維數(shù)組的定義與引用 93
6.2.1 一維數(shù)組的定義 93
6.2.2 一維數(shù)組元素的引用 93
6.2.3 一維數(shù)組的初始化 93
6.3 二維數(shù)組的定義與引用 94
6.3.1 二維數(shù)組的定義 94
6.3.2 二維數(shù)組元素的引用 95
6.3.3 二維數(shù)組的初始化 95
6.4 字符數(shù)組的定義與引用 97
6.4.1 字符數(shù)組的初始化 97
6.4.2 字符串和字符串結(jié)束標志 97
6.4.3 字符數(shù)組的輸入輸出 98
6.4.4 字符串處理函數(shù) 98
6.5 綜合應用實例 100
6.6 智能算法能力拓展 106
6.7 習題 109
第7章 函數(shù) 113
7.1 模塊化程序設(shè)計與C函數(shù) 113
7.2 函數(shù)定義和函數(shù)說明 114
7.2.1 函數(shù)的定義 114
7.2.2 函數(shù)的說明 116
7.3 函數(shù)的參數(shù)和返回值 117
7.3.1 形式參數(shù)和實際參數(shù) 117
7.3.2 函數(shù)的返回值 119
7.4 函數(shù)調(diào)用 120
7.4.1 函數(shù)調(diào)用的一般形式 120
7.4.2 函數(shù)的嵌套調(diào)用 122
7.4.3 函數(shù)的遞歸調(diào)用 122
7.5 數(shù)組作為函數(shù)參數(shù) 125
7.5.1 數(shù)組元素做函數(shù)實參 125
7.5.2 數(shù)組名作為函數(shù)參數(shù) 126
7.6 變量的作用域 128
7.6.1 局部變量 128
7.6.2 全局變量 129
7.7 變量的存儲類別 130
7.7.1 自動變量 131
7.7.2 寄存器變量 132
7.7.3 外部變量 132
7.7.4 靜態(tài)變量 133
7.8 內(nèi)部函數(shù)和外部函數(shù) 134
7.8.1 內(nèi)部函數(shù) 134
7.8.2 外部函數(shù) 134
7.9 綜合應用實例 134
7.10 智能算法能力拓展 138
7.11 習題 140
第8章 常用算法 142
8.1 窮舉法 142
8.2 分治法 144
8.3 遞推法 145
8.4 遞歸法 147
8.5 迭代法 148
8.6 貪心算法 149
8.7 回溯法 151
8.8 動態(tài)規(guī)劃算法 153
8.9 智能算法能力拓展 154
第9章 指針 156
9.1 指針的引入 156
9.2 內(nèi)存數(shù)據(jù)的訪問方式 158
9.3 指針變量的定義及其基本使用 160
9.3.1 指針變量的定義 160
9.3.2 指針變量的基本使用方法 161
9.4 指針作函數(shù)的參數(shù) 163
9.5 指針變量的各種應用 166
9.5.1 指針與數(shù)組 166
9.5.2 指針與字符串 169
9.6 使用指針的算法分析和設(shè)計 173
9.6.1 使用指針處理數(shù)組 173
9.6.2 使用指針處理字符串 177
9.6.3 使用指針作參數(shù)傳遞一組數(shù)據(jù) 180
9.7 綜合應用實例 185
9.8 習題 191
第 10章 結(jié)構(gòu)體 193
10.1 定義結(jié)構(gòu)體類型 193
10.2 定義結(jié)構(gòu)體類型變量 194
10.3 結(jié)構(gòu)體變量的引用 195
10.4 結(jié)構(gòu)體變量的初始化 196
10.5 結(jié)構(gòu)體數(shù)組 197
10.5.1 結(jié)構(gòu)體數(shù)組的定義 197
10.5.2 結(jié)構(gòu)體數(shù)組的引用 198
10.6 結(jié)構(gòu)體類型的變量作為函數(shù)參數(shù) 199
10.6.1 結(jié)構(gòu)體成員做函數(shù)參數(shù) 199
10.6.2 結(jié)構(gòu)體變量做函數(shù)參數(shù) 200
10.7 結(jié)構(gòu)體指針變量 201
10.8 用指針處理鏈表 202
10.9 綜合應用實例 205
10.10 智能算法能力拓展 208
10.11 習題 210
第 11章 文件系統(tǒng) 211
11.1 文件概述 211
11.2 文件的打開與關(guān)閉 213
11.2.1 文件的打開 213
11.2.2 文件的關(guān)閉 214
11.3 文件的讀寫 214
11.3.1 文件尾測試函數(shù) 214
11.3.2 文件的字符讀/寫函數(shù) 214
11.3.3 文件的字符串讀/寫函數(shù) 216
11.3.4 文件的數(shù)據(jù)塊讀寫函數(shù) 216
11.3.5 文件的格式讀寫函數(shù) 217
11.4 文件定位 217
11.4.1 文件頭定位函數(shù)rewind( ) 217
11.4.2 改變文件位置指針函數(shù)fseek( ) 218
11.5 綜合應用實例 218
11.6 智能算法能力拓展 220
11.7 習題 221
第 12章 人工智能經(jīng)典算法 223
12.1 概述 223
12.2 K-Means聚類算法 224
12.2.1 問題背景與知識簡介 224
12.2.2 數(shù)學原理與算法 225
12.2.3 應用領(lǐng)域與拓展學習 229
12.3 K最近鄰算法 230
12.3.1 問題背景與知識簡介 230
12.3.2 數(shù)學原理與算法 230
12.3.3 應用領(lǐng)域與拓展學習 234
12.4 樸素貝葉斯分類算法 235
12.4.1 問題背景與知識簡介 235
12.4.2 數(shù)學原理與算法 236
12.4.3 應用領(lǐng)域與拓展學習 239
參考文獻 243