本書以強化理論、精選案例、增強實踐創(chuàng)新能力、注重理論聯(lián)系實際,并與人工智能部分知識點和應用相結(jié)合為原則,以社會和企業(yè)需求為導向,以C語言的發(fā)展為切入點,以基本語法、語句為基礎(chǔ),以結(jié)構(gòu)為主線,以程序案例驅(qū)動的編寫方式,深入淺出地闡述了C語言的程序設(shè)計思想和流程。本書注重對讀者設(shè)計開發(fā)能力的培養(yǎng),鍛煉讀者自我思考和解決問題的能力,培養(yǎng)讀者的計算思維、編程能力和創(chuàng)新意識,最終結(jié)合數(shù)據(jù)科學計算和人工智能實現(xiàn)讀者對常規(guī)問題進行自動化和專業(yè)化的數(shù)據(jù)信息處理的目標。
本書共13章,可分為4個部分。第1部分為基礎(chǔ)知識,包括第1章C語言簡介,第2章程序設(shè)計算法與人工智能,第3章數(shù)據(jù)類型與運算符;第2部分為程序設(shè)計基本結(jié)構(gòu),包括第4章順序結(jié)構(gòu)程序設(shè)計,第5章選擇結(jié)構(gòu)程序設(shè)計,第6章循環(huán)結(jié)構(gòu)程序設(shè)計;第3部分為程序高級設(shè)計與應用,包括第7章數(shù)組,第8章函數(shù),第9章預處理命令,第10章指針,第11章構(gòu)造數(shù)據(jù)類型與應用,第12章文件;第4部分為項目綜合應用,包括第13章項目綜合實訓。
書中設(shè)置了人工智能和課程思政案例,并通過二維碼提供新形態(tài)教學資源共享,提升教材的嚴謹性、代表性和數(shù)字化水平。本書內(nèi)容細致,實例豐富、通俗易懂,適合作為普通高等院校理工類本/?茖I(yè)的程序設(shè)計語言類教材,也可作為計算機應用工作者的參考書。
第1章 C語言簡介 001
1.1 計算機語言的發(fā)展 001
1.1.1 機器語言 001
1.1.2 匯編語言 001
1.1.3 高級語言 002
1.1.4 指令與程序 002
1.2 C語言的發(fā)展及其特點 002
1.2.1 C語言的發(fā)展 002
1.2.2 C語言的特點 003
1.3 C語言的程序格式和結(jié)構(gòu) 004
1.3.1 C語言程序舉例 004
1.3.2 C語言程序結(jié)構(gòu) 006
1.4 C語言程序的運行與調(diào)試 007
1.4.1 C語言程序的運行環(huán)境 007
1.4.2 C語言的程序概念 008
1.4.3 C語言程序的調(diào)試運行 008
1.5 C語言程序設(shè)計開發(fā)流程 011
小結(jié) 011
習題 011
第2章 程序設(shè)計算法與人工智能 013
2.1 程序設(shè)計 013
2.2 算法 013
2.2.1 簡單算法舉例 014
2.2.2 算法的性質(zhì) 014
2.2.3 結(jié)構(gòu)化算法的三種結(jié)構(gòu) 014
2.2.4 算法的表示方法 015
2.3 結(jié)構(gòu)化程序設(shè)計方法 019
2.4 程序設(shè)計、算法與人工智能的融合 020
小結(jié) 020
習題 021
第3章 數(shù)據(jù)類型與運算符 022
3.1 計算機數(shù)據(jù)的存儲與表示 022
3.1.1 整數(shù)的二進制表示 022
3.1.2 浮點型數(shù)據(jù)的二進制表示 022
3.2 數(shù)據(jù)類型與取值范圍 023
3.2.1 數(shù)據(jù)類型 023
3.2.2 不同數(shù)據(jù)類型的取值范圍 024
3.3 常量與變量 025
3.3.1 標識符 025
3.3.2 常量與符號常量 026
3.3.3 變量 030
3.3.4 變量類型的確定 031
3.4 C語言運算符 031
3.4.1 算術(shù)運算符 032
3.4.2 賦值運算符和復合賦值運算符 033
3.4.3 關(guān)系運算符 034
3.4.4 邏輯運算符 035
3.4.5 逗號運算符 037
3.4.6 條件運算符 037
3.4.7 位運算符 038
3.4.8 運算符順序 040
3.4.9 數(shù)據(jù)混合運算和類型轉(zhuǎn)換 041
小結(jié) 041
習題 042
第4章 順序結(jié)構(gòu)程序設(shè)計 047
4.1 順序結(jié)構(gòu)程序概述 047
4.2 C語句 047
4.2.1 C語句的分類 047
4.2.2 賦值語句 048
4.3 數(shù)據(jù)的格式輸入/輸出 049
4.3.1 printf格式輸出函數(shù) 049
4.3.2 scanf格式輸入函數(shù) 052
4.3.3 字符數(shù)據(jù)的輸入/輸出 055
4.4 綜合實例 056
小結(jié) 057
習題 057
第5章 選擇結(jié)構(gòu)程序設(shè)計 061
5.1 if語句 061
5.1.1 單分支if語句 061
5.1.2 雙分支if-else語句 062
5.1.3 多分支 063
5.2 選擇語句嵌套 064
5.3 switch語句 067
5.3.1 switch語句 067
5.3.2 break語句的作用 069
5.4 綜合實例 070
小結(jié) 073
習題 073
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計 079
6.1 for語句 079
6.2 while語句 083
6.3 do-while語句 085
6.4 循環(huán)嵌套與幾何圖案 088
6.4.1 循環(huán)嵌套 088
6.4.2 幾何圖案 088
6.5 轉(zhuǎn)移語句 091
6.5.1 goto語句 092
6.5.2 break語句 092
6.5.3 continue語句 093
6.6 綜合實例 094
小結(jié) 099
習題 099
第7章 數(shù)組 106
7.1 一維數(shù)組 106
7.1.1 一維數(shù)組的定義 106
7.1.2 一維數(shù)組的賦值 107
7.1.3 數(shù)組元素引用 108
7.1.4 一維數(shù)組應用 109
7.2 二維數(shù)組及多維數(shù)組 115
7.2.1 二維數(shù)組的定義 115
7.2.2 二維數(shù)組的存儲與表示 116
7.2.3 二維數(shù)組的初始化 117
7.2.4 二維數(shù)組的引用與實例 117
7.3 字符數(shù)組和字符串 120
7.3.1 字符數(shù)組 120
7.3.2 字符數(shù)組初始化 120
7.3.3 字符數(shù)組的引用 121
7.3.4 字符串的存儲 121
7.3.5 字符數(shù)組的輸入/輸出 122
7.4 常用字符串函數(shù) 123
7.4.1 字符串輸出函數(shù)puts 123
7.4.2 字符串輸入函數(shù)gets 124
7.4.3 字符串連接函數(shù)strcat 124
7.4.4 字符串復制函數(shù)strcpy和strncpy 125
7.4.5 字符串比較函數(shù)strcmp 125
7.4.6 字符串長度測試函數(shù)strlen 126
7.4.7 字符串其他函數(shù)應用 126
7.5 綜合實例 127
小結(jié) 130
習題 130
第8章 函數(shù) 135
8.1 函數(shù)的概述 135
8.2 函數(shù)的定義 136
8.2.1 函數(shù)的定義 136
8.2.2 return語句 137
8.3 函數(shù)的調(diào)用和聲明 138
8.3.1 函數(shù)的調(diào)用 138
8.3.2 函數(shù)的聲明 139
8.3.3 函數(shù)的嵌套調(diào)用 139
8.3.4 函數(shù)的遞歸調(diào)用 140
8.4 函數(shù)參數(shù)的傳遞 141
8.4.1 參數(shù)的值傳遞 141
8.4.2 參數(shù)的地址傳遞 143
8.5 變量的作用域和存儲類型 143
8.5.1 變量的作用域 143
8.5.2 變量的存儲類型 145
8.6 內(nèi)部函數(shù)和外部函數(shù) 147
8.6.1 內(nèi)部函數(shù) 147
8.6.2 外部函數(shù) 147
8.7 綜合實例 148
小結(jié) 150
習題 150
第9章 預處理命令 156
9.1 宏定義 156
9.1.1 不帶參數(shù)的宏定義 157
9.1.2 帶參數(shù)的宏定義 158
9.2 文件包含 159
9.3 條件編譯 160
9.3.1 #if的使用 160
9.3.2 #ifdef的使用 162
9.3.3 #ifndef的使用 162
小結(jié) 163
習題 163
第10章 指針 166
10.1 指針的概念 166
10.1.1 地址的概念 166
10.1.2 指針 167
10.2 變量的指針和指向變量的指針變量 167
10.2.1 指針變量 167
10.2.2 數(shù)據(jù)的訪問形式 168
10.2.3 指針變量作為函數(shù)參數(shù) 169
10.3 數(shù)組與指針 173
10.3.1 指向數(shù)組元素的指針 173
10.3.2 通過指針引用數(shù)組元素 174
10.3.3 用數(shù)組名作為函數(shù)參數(shù) 175
10.3.4 多維數(shù)組與指針 179
10.4 字符串與指針 182
10.4.1 字符串的表達形式 182
10.4.2 字符指針作為函數(shù)參數(shù) 183
10.5 指向函數(shù)的指針 185
10.5.1 用函數(shù)指針變量調(diào)用函數(shù) 185
10.5.2 用指向函數(shù)的指針作為函數(shù)參數(shù) 186
10.6 返回指針值的函數(shù)與指向指針的指針 186
10.6.1 返回指針值的函數(shù) 186
10.6.2 指向指針的指針 187
10.7 綜合實例 189
小結(jié) 192
習題 193
第11章 構(gòu)造數(shù)據(jù)類型與應用 197
11.1 結(jié)構(gòu)體 197
11.1.1 定義結(jié)構(gòu)體類型 197
11.1.2 定義結(jié)構(gòu)體類型變量 198
11.1.3 結(jié)構(gòu)體變量的初始化和引用 200
11.2 使用結(jié)構(gòu)體數(shù)組 201
11.2.1 定義結(jié)構(gòu)體數(shù)組 201
11.2.2 結(jié)構(gòu)體數(shù)組的應用 202
11.3 結(jié)構(gòu)體指針 203
11.3.1 指向結(jié)構(gòu)體變量的指針 203
11.3.2 指向結(jié)構(gòu)體數(shù)組的指針 204
11.3.3 用結(jié)構(gòu)體變量和結(jié)構(gòu)體變量的指針作為函數(shù)參數(shù) 206
11.4 用指針處理鏈表 207
11.4.1 鏈表的定義 207
11.4.2 建立靜態(tài)鏈表 208
11.4.3 建立動態(tài)鏈表 209
11.4.4 輸出鏈表 210
11.4.5 鏈表刪除操作 211
11.4.6 鏈表插入操作 212
11.4.7 鏈表綜合操作 213
11.5 共用體類型 214
11.5.1 共用體類型的定義 214
11.5.2 共用體變量的引用方式 215
11.6 使用枚舉類型 217
11.7 用typedef聲明新類型名 218
11.8 綜合實例 219
小結(jié) 224
習題 224
第12章 文件 228
12.1 C文件概述 228
12.2 文件類型指針 228
12.3 文件的打開與關(guān)閉 229
12.3.1 文件打開函數(shù)fopen 229
12.3.2 文件關(guān)閉函數(shù)fclose 230
12.4 文件的讀寫 231
12.4.1 字符讀寫函數(shù)fgetc和fputc 231
12.4.2 字符串讀寫函數(shù)fgets和fputs 234
12.4.3 數(shù)據(jù)塊讀寫函數(shù)fread和fwrite 235
12.4.4 格式化讀寫函數(shù)fscanf和fprintf 237
12.5 文件的定位和隨機讀寫 238
12.5.1 文件定位 238
12.5.2 文件的隨機讀寫 239
12.6 綜合實例 239
小結(jié) 241
習題 241
第13章 項目綜合實例 245
13.1 數(shù)值分析應用 245
13.1.1 數(shù)字計算與科學計算 245
13.1.2 結(jié)合庫或框架的高級數(shù)值計算 247
13.1.3 數(shù)據(jù)挖掘算法 249
13.1.4 人工智能應用 252
13.2 51單片機應用 254
附錄A C語言的關(guān)鍵字 260
附錄B ASCII碼字符表 262
附錄C 常用的C語言庫函數(shù) 265