本書從介紹C語(yǔ)言的基礎(chǔ)語(yǔ)法開始,循序漸進(jìn)地介紹了程序設(shè)計(jì)的3種程序控制結(jié)構(gòu):順序、選擇和循環(huán),以及函數(shù)、數(shù)組、指針、結(jié)構(gòu)和文件等內(nèi)容。本書理論聯(lián)系實(shí)際,注重培養(yǎng)讀者解決問(wèn)題的能力,始終強(qiáng)調(diào)養(yǎng)成良好編程習(xí)慣的重要性。本書講解深入全面,精心設(shè)置大量例題并搭配習(xí)題,通過(guò)對(duì)解題思路的分析和代碼的講解,幫助讀者鞏固所學(xué)知識(shí)點(diǎn)、拓寬視野、學(xué)會(huì)自主思考、能夠獨(dú)立分析和解決問(wèn)題。本書例題代碼簡(jiǎn)潔,語(yǔ)言描述通俗易懂。讀者通過(guò)學(xué)習(xí)本書內(nèi)容可以逐步掌握C語(yǔ)言程序設(shè)計(jì)的基本語(yǔ)法、程序控制結(jié)構(gòu)和復(fù)雜數(shù)據(jù)類型,還可以掌握結(jié)構(gòu)化程序設(shè)計(jì)的思想和方法。本書既適合作為高等院校與高職高專院校計(jì)算機(jī)專業(yè)學(xué)生的教材,又適合作為程序員的指導(dǎo)用書。
林生佑,浙江傳媒學(xué)院數(shù)字媒體技術(shù)專業(yè)(國(guó)家一流專業(yè))教師,副教授,浙江廣廈建設(shè)職業(yè)技術(shù)大學(xué)兼職教師。主要從事計(jì)算機(jī)視覺(jué)、圖像處理研究,主要教授學(xué)校程序設(shè)計(jì)基礎(chǔ)課程,主講C/C++/Java/Python/數(shù)據(jù)結(jié)構(gòu)/安卓應(yīng)用開發(fā)等課程近20年。主持或參與多項(xiàng)國(guó)家級(jí)省部級(jí)科研課題,發(fā)表論文二十多篇,獲國(guó)家專利四項(xiàng)。2022年出版《鴻蒙應(yīng)用開發(fā)教程》。
第1章 C語(yǔ)言概述 1
1.1 計(jì)算機(jī)中的信息表示 1
1.1.1 二進(jìn)制數(shù)及其他進(jìn)制 1
1.1.2 信息存儲(chǔ)單位 2
1.2 進(jìn)制轉(zhuǎn)換 2
1.2.1 將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù) 2
1.2.2 將二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) 3
1.2.3 二進(jìn)制數(shù)和八進(jìn)制數(shù)、十六進(jìn)制數(shù)之間的轉(zhuǎn)換 4
1.2.4 整數(shù)的二進(jìn)制表示 4
1.3 程序設(shè)計(jì)的基本概念 5
1.3.1 程序 5
1.3.2 程序設(shè)計(jì)語(yǔ)言 5
1.3.3 程序設(shè)計(jì) 5
1.4 程序設(shè)計(jì)語(yǔ)言的發(fā)展概況 6
1.4.1 低級(jí)語(yǔ)言 6
1.4.2 高級(jí)語(yǔ)言 7
1.5 C語(yǔ)言的發(fā)展歷史與特點(diǎn) 8
1.6 簡(jiǎn)單的C語(yǔ)言程序 9
1.7 運(yùn)行C語(yǔ)言程序 12
1.8 程序設(shè)計(jì)風(fēng)格 13
1.8.1 注釋 14
1.8.2 命名習(xí)慣 14
1.8.3 程序編排 15
1.9 上機(jī)環(huán)境介紹 16
1.9.1 在CodeBlocks下編寫C語(yǔ)言程序 16
1.9.2 使用OJ系統(tǒng) 19
1.10 本章小結(jié) 21
習(xí)題1 21
第2章 C語(yǔ)言基礎(chǔ) 24
2.1 標(biāo)識(shí)符與關(guān)鍵字 24
2.2 基本數(shù)據(jù)類型 25
2.2.1 整型 26
2.2.2 浮點(diǎn)型 27
2.2.3 字符型 28
2.3 常量 28
2.3.1 直接常量 28
2.3.2 符號(hào)常量 31
2.4 變量 31
2.5 運(yùn)算符與表達(dá)式 32
2.5.1 算術(shù)運(yùn)算符和算術(shù)表達(dá)式 32
2.5.2 賦值運(yùn)算符和賦值表達(dá)式 33
2.5.3 長(zhǎng)度運(yùn)算符 35
2.5.4 類型轉(zhuǎn)換及其運(yùn)算符 35
2.5.5 位運(yùn)算符 37
2.6 本章小結(jié) 39
習(xí)題2 39
第3章 順序結(jié)構(gòu) 43
3.1 程序控制結(jié)構(gòu) 43
3.2 語(yǔ)句 45
3.2.1 簡(jiǎn)單語(yǔ)句 45
3.2.2 控制語(yǔ)句 45
3.2.3 復(fù)合語(yǔ)句 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é)庫(kù)函數(shù) 54
3.5 常用字符處理函數(shù) 55
3.6 本章小結(jié) 56
習(xí)題3 56
第4章 選擇結(jié)構(gòu) 60
4.1 關(guān)系運(yùn)算符及其表達(dá)式 60
4.2 邏輯運(yùn)算符及其表達(dá)式 61
4.3 if語(yǔ)句 62
4.4 條件運(yùn)算符及其表達(dá)式 67
4.5 switch語(yǔ)句 68
4.6 選擇的嵌套 71
4.7 本章小結(jié) 75
習(xí)題4 75
第5章 循環(huán)結(jié)構(gòu) 83
5.1 自增/自減運(yùn)算符及其表達(dá)式 83
5.2 逗號(hào)運(yùn)算符及其表達(dá)式 85
5.3 while語(yǔ)句 85
5.4 do...while語(yǔ)句 87
5.5 for語(yǔ)句 88
5.6 break語(yǔ)句、continue語(yǔ)句和goto語(yǔ)句 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è)計(jì) 120
6.4 變量的作用域 122
6.4.1 局部變量 122
6.4.2 全局變量 122
6.5 變量的存儲(chǔ)類型和生存周期 124
6.5.1 存儲(chǔ)類型 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 使用隨機(jī)函數(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 可變長(zhǎng)數(shù)組 167
7.8 本章小結(jié) 167
習(xí)題7 168
第8章 指針 174
8.1 地址和指針 174
8.2 指針變量的定義和初始化 175
8.3 指針基本運(yùn)算 176
8.3.1 取地址運(yùn)算和間接運(yùn)算 176
8.3.2 賦值運(yùn)算 177
8.3.3 比較運(yùn)算 177
8.3.4 算術(shù)運(yùn)算 178
8.4 通用指針 178
8.5 使用const修飾指針 179
8.5.1 const在指針聲明符*的左邊 179
8.5.2 const在指針聲明符*的右邊 179
8.5.3 const同時(shí)出現(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ù)組指針和二級(jí)指針 185
8.9.1 指針數(shù)組 185
8.9.2 數(shù)組指針 187
8.9.3 二級(jí)指針 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ù)制、連接、比較及字符串長(zhǎng)度 194
8.13 動(dòng)態(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 單獨(dú)定義 208
9.2.2 混合定義 208
9.2.3 無(wú)類型名定義 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é)束檢測(cè)函數(shù):feof() 239
10.5.4 文件重定向函數(shù):freopen() 240
10.6 本章小結(jié) 242
習(xí)題10 242
附錄A ASCII碼表 248
附錄B 運(yùn)算符優(yōu)先級(jí)及結(jié)合性表 249
附錄C 程序調(diào)試 251