本書從介紹C語言的基礎(chǔ)語法開始,循序漸進地介紹了程序設(shè)計的3種程序控制結(jié)構(gòu):順序、選擇和循環(huán),以及函數(shù)、數(shù)組、指針、結(jié)構(gòu)和文件等內(nèi)容。本書理論聯(lián)系實際,注重培養(yǎng)讀者解決問題的能力,始終強調(diào)養(yǎng)成良好編程習(xí)慣的重要性。本書講解深入全面,精心設(shè)置大量例題并搭配習(xí)題,通過對解題思路的分析和代碼的講解,幫助讀者鞏固所學(xué)知識點、拓寬視野、學(xué)會自主思考、能夠獨立分析和解決問題。本書例題代碼簡潔,語言描述通俗易懂。讀者通過學(xué)習(xí)本書內(nèi)容可以逐步掌握C語言程序設(shè)計的基本語法、程序控制結(jié)構(gòu)和復(fù)雜數(shù)據(jù)類型,還可以掌握結(jié)構(gòu)化程序設(shè)計的思想和方法。本書既適合作為高等院校與高職高專院校計算機專業(yè)學(xué)生的教材,又適合作為程序員的指導(dǎo)用書。
林生佑,浙江傳媒學(xué)院數(shù)字媒體技術(shù)專業(yè)(國家一流專業(yè))教師,副教授,浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué)兼職教師。主要從事計算機視覺、圖像處理研究,主要教授學(xué)校程序設(shè)計基礎(chǔ)課程,主講C/C++/Java/Python/數(shù)據(jù)結(jié)構(gòu)/安卓應(yīng)用開發(fā)等課程近20年。主持或參與多項國家級省部級科研課題,發(fā)表論文二十多篇,獲國家專利四項。2022年出版《鴻蒙應(yīng)用開發(fā)教程》。
第1章 C語言概述 1
1.1 計算機中的信息表示 1
1.1.1 二進制數(shù)及其他進制 1
1.1.2 信息存儲單位 2
1.2 進制轉(zhuǎn)換 2
1.2.1 將十進制數(shù)轉(zhuǎn)換為二進制數(shù)、八進制數(shù)和十六進制數(shù) 2
1.2.2 將二進制數(shù)、八進制數(shù)和十六進制數(shù)轉(zhuǎn)換為十進制數(shù) 3
1.2.3 二進制數(shù)和八進制數(shù)、十六進制數(shù)之間的轉(zhuǎn)換 4
1.2.4 整數(shù)的二進制表示 4
1.3 程序設(shè)計的基本概念 5
1.3.1 程序 5
1.3.2 程序設(shè)計語言 5
1.3.3 程序設(shè)計 5
1.4 程序設(shè)計語言的發(fā)展概況 6
1.4.1 低級語言 6
1.4.2 高級語言 7
1.5 C語言的發(fā)展歷史與特點 8
1.6 簡單的C語言程序 9
1.7 運行C語言程序 12
1.8 程序設(shè)計風(fēng)格 13
1.8.1 注釋 14
1.8.2 命名習(xí)慣 14
1.8.3 程序編排 15
1.9 上機環(huán)境介紹 16
1.9.1 在CodeBlocks下編寫C語言程序 16
1.9.2 使用OJ系統(tǒng) 19
1.10 本章小結(jié) 21
習(xí)題1 21
第2章 C語言基礎(chǔ) 24
2.1 標(biāo)識符與關(guān)鍵字 24
2.2 基本數(shù)據(jù)類型 25
2.2.1 整型 26
2.2.2 浮點型 27
2.2.3 字符型 28
2.3 常量 28
2.3.1 直接常量 28
2.3.2 符號常量 31
2.4 變量 31
2.5 運算符與表達式 32
2.5.1 算術(shù)運算符和算術(shù)表達式 32
2.5.2 賦值運算符和賦值表達式 33
2.5.3 長度運算符 35
2.5.4 類型轉(zhuǎn)換及其運算符 35
2.5.5 位運算符 37
2.6 本章小結(jié) 39
習(xí)題2 39
第3章 順序結(jié)構(gòu) 43
3.1 程序控制結(jié)構(gòu) 43
3.2 語句 45
3.2.1 簡單語句 45
3.2.2 控制語句 45
3.2.3 復(fù)合語句 45
3.3 標(biāo)準(zhǔn)輸入/輸出函數(shù) 46
3.3.1 格式化輸出函數(shù) 46
3.3.2 格式化輸入函數(shù) 49
3.3.3 字符輸入/輸出函數(shù) 53
3.4 常用數(shù)學(xué)庫函數(shù) 54
3.5 常用字符處理函數(shù) 55
3.6 本章小結(jié) 56
習(xí)題3 56
第4章 選擇結(jié)構(gòu) 60
4.1 關(guān)系運算符及其表達式 60
4.2 邏輯運算符及其表達式 61
4.3 if語句 62
4.4 條件運算符及其表達式 67
4.5 switch語句 68
4.6 選擇的嵌套 71
4.7 本章小結(jié) 75
習(xí)題4 75
第5章 循環(huán)結(jié)構(gòu) 83
5.1 自增/自減運算符及其表達式 83
5.2 逗號運算符及其表達式 85
5.3 while語句 85
5.4 do...while語句 87
5.5 for語句 88
5.6 break語句、continue語句和goto語句 91
5.7 嵌套循環(huán) 95
5.8 循環(huán)例題解析 96
5.8.1 數(shù)列求和 96
5.8.2 找數(shù) 98
5.8.3 輸出圖形 101
5.8.4 找組合 103
5.8.5 字符串處理 104
5.9 本章小結(jié) 105
習(xí)題5 106
第6章 函數(shù) 114
6.1 函數(shù)的定義 114
6.2 函數(shù)的調(diào)用 117
6.3 結(jié)構(gòu)化程序設(shè)計 120
6.4 變量的作用域 122
6.4.1 局部變量 122
6.4.2 全局變量 122
6.5 變量的存儲類型和生存周期 124
6.5.1 存儲類型 124
6.5.2 變量的生存周期 125
6.5.3 程序內(nèi)存 125
6.6 預(yù)處理命令 126
6.6.1 宏定義 127
6.6.2 文件包含 128
6.6.3 條件編譯 129
6.7 遞歸函數(shù) 131
6.8 終止程序 136
6.9 使用隨機函數(shù) 137
6.10 本章小結(jié) 139
習(xí)題6 140
第7章 數(shù)組 145
7.1 一維數(shù)組的定義和使用 145
7.1.1 一維數(shù)組的定義 145
7.1.2 一維數(shù)組的初始化 146
7.1.3 一維數(shù)組元素的引用 147
7.1.4 一維數(shù)組的賦值 147
7.1.5 使用一維數(shù)組編寫程序 148
7.2 二維數(shù)組的定義和使用 151
7.2.1 二維數(shù)組的定義和引用 151
7.2.2 二維數(shù)組的初始化 151
7.2.3 常量數(shù)組 152
7.2.4 使用二維數(shù)組編寫程序 153
7.3 字符數(shù)組和字符串 154
7.3.1 字符數(shù)組的定義和引用 155
7.3.2 字符數(shù)組的初始化 155
7.3.3 字符數(shù)組的賦值 156
7.3.4 使用字符數(shù)組編寫程序 156
7.4 數(shù)組和函數(shù) 158
7.4.1 數(shù)組元素作為函數(shù)參數(shù) 158
7.4.2 數(shù)組作為函數(shù)參數(shù) 159
7.5 排序和查找 161
7.6 字符串格式化輸入/輸出函數(shù) 166
7.7 可變長數(shù)組 167
7.8 本章小結(jié) 167
習(xí)題7 168
第8章 指針 174
8.1 地址和指針 174
8.2 指針變量的定義和初始化 175
8.3 指針基本運算 176
8.3.1 取地址運算和間接運算 176
8.3.2 賦值運算 177
8.3.3 比較運算 177
8.3.4 算術(shù)運算 178
8.4 通用指針 178
8.5 使用const修飾指針 179
8.5.1 const在指針聲明符*的左邊 179
8.5.2 const在指針聲明符*的右邊 179
8.5.3 const同時出現(xiàn)在指針聲明符*的左/右兩邊 180
8.6 指針作為函數(shù)參數(shù) 180
8.7 指針、數(shù)組和地址 182
8.7.1 指針、地址與一維數(shù)組 182
8.7.2 指針、地址與二維數(shù)組 182
8.8 字符串常量和字符指針 183
8.9 指針數(shù)組、數(shù)組指針和二級指針 185
8.9.1 指針數(shù)組 185
8.9.2 數(shù)組指針 187
8.9.3 二級指針 187
8.10 指針函數(shù)和函數(shù)指針 188
8.11 復(fù)雜類型分析與構(gòu)造 189
8.11.1 分析復(fù)雜類型 190
8.11.2 構(gòu)造復(fù)雜類型 191
8.12 常用字符串處理函數(shù) 192
8.12.1 字符串輸入/輸出函數(shù) 192
8.12.2 字符串的復(fù)制、連接、比較及字符串長度 194
8.13 動態(tài)內(nèi)存分配 196
8.14 本章小結(jié) 198
習(xí)題8 199
第9章 結(jié)構(gòu) 206
9.1 結(jié)構(gòu)類型的定義和大小 206
9.1.1 結(jié)構(gòu)類型的定義 206
9.1.2 結(jié)構(gòu)類型的大小 207
9.2 結(jié)構(gòu)變量的定義和初始化 208
9.2.1 單獨定義 208
9.2.2 混合定義 208
9.2.3 無類型名定義 209
9.2.4 初始化 209
9.3 結(jié)構(gòu)變量的使用 210
9.3.1 結(jié)構(gòu)變量成員的引用 210
9.3.2 結(jié)構(gòu)變量的整體賦值 210
9.3.3 結(jié)構(gòu)變量作為函數(shù)參數(shù) 210
9.3.4 結(jié)構(gòu)變量的輸入/輸出 211
9.4 結(jié)構(gòu)數(shù)組 212
9.5 結(jié)構(gòu)指針 213
9.6 聯(lián)合和枚舉 214
9.6.1 聯(lián)合 214
9.6.2 枚舉 216
9.6.3 用戶自定義類型 217
9.7 鏈表 218
9.7.1 鏈表的概念 218
9.7.2 單向鏈表常用操作 219
9.8 本章小結(jié) 222
習(xí)題9 223
第10章 文件 231
10.1 文件的概念 231
10.2 文件結(jié)構(gòu)和文件指針 232
10.3 文件的常用操作 233
10.3.1 打開文件 233
10.3.2 關(guān)閉文件 234
10.3.3 刪除文件 234
10.3.4 重命名文件 234
10.4 文件的讀/寫操作 235
10.4.1 字符讀/寫函數(shù):fgetc()和fputc() 235
10.4.2 字符串讀/寫函數(shù):fgets()和fputs() 236
10.4.3 文件格式化讀/寫函數(shù):fscanf()和fprintf() 236
10.4.4 文件數(shù)據(jù)塊讀/寫函數(shù):fread()和fwrite() 237
10.5 其他文件函數(shù) 238
10.5.1 文件定位函數(shù):rewind()和fseek() 238
10.5.2 文件位置函數(shù):ftell() 238
10.5.3 文件結(jié)束檢測函數(shù):feof() 239
10.5.4 文件重定向函數(shù):freopen() 240
10.6 本章小結(jié) 242
習(xí)題10 242
附錄A ASCII碼表 248
附錄B 運算符優(yōu)先級及結(jié)合性表 249
附錄C 程序調(diào)試 251