本書面向程序設(shè)計零基礎(chǔ)的讀者,集理論知識、上機(jī)練習(xí)、在線學(xué)習(xí)于一體,并以C語言為載體,帶領(lǐng)讀者走進(jìn)程序設(shè)計的大門。C語言是具有低級語言特點的高級程序設(shè)計語言,它既可以用于編寫底層驅(qū)動程序及系統(tǒng)軟件,又可以用于編寫上層應(yīng)用軟件。目前流行的程序設(shè)計語言都不同程度地帶有C語言的烙印,因此,學(xué)好C語言再去學(xué)習(xí)其他程序設(shè)計語言,會收到事半功倍的效果。
編者編寫本書的目的不是介紹C語言的語法細(xì)節(jié),而是以C語言為載體來介紹程序設(shè)計的基本思想和方法,引導(dǎo)讀者從程序設(shè)計的角度去理解軟件和硬件是如何協(xié)同工作的,并幫助讀者在實踐中掌握構(gòu)建軟件的方法。本書前11章具體介紹程序設(shè)計的基礎(chǔ)理論知識,且都有相應(yīng)的慕課來輔助讀者學(xué)習(xí);第12章通過一個實際的C語言程序設(shè)計項目,幫助讀者實現(xiàn)對全書基礎(chǔ)理論知識的融會貫通。
本書可作為高等院校軟件工程、計算機(jī)科學(xué)與技術(shù)等專業(yè)的入門教材,也可作為有志進(jìn)入軟件開發(fā)領(lǐng)域的社會人士的自學(xué)參考書。
1. 理論與實踐相結(jié)合
面向新工科人才培養(yǎng),編者不僅對程序設(shè)計的理論知識體系進(jìn)行了合理化布局,使理論知識能夠循序漸進(jìn)地呈現(xiàn)在讀者面前,而且在講解理論知識的過程中融入了通俗易懂的案例,以幫助讀者更好地理解并掌握理論知識。此外,本書在最后通過程序設(shè)計項目實踐將全書的理論知識融會貫通,以幫助讀者實現(xiàn)學(xué)練結(jié)合,系統(tǒng)提升綜合能力。
2. 配套編程指導(dǎo)平臺、程序設(shè)計機(jī)考系統(tǒng)以及作業(yè)平臺
為了更好地指導(dǎo)讀者開展編程練習(xí),本書編者開發(fā)了編程指導(dǎo)平臺供讀者使用;此外,還搭建了用于服務(wù)教師的程序設(shè)計機(jī)考系統(tǒng),以及面向師生的作業(yè)平臺。讀者可以通過掃描下方二維碼來了解相關(guān)平臺 系統(tǒng)的具體使用方法。
3. 支持線上線下混合式教學(xué)
編者錄制了程序設(shè)計基礎(chǔ)慕課。讀者可以通過學(xué)堂在線官網(wǎng)搜索本書主編吳勁二字,以找到對應(yīng)的慕課進(jìn)行觀看學(xué)習(xí)。
4. 精心打造立體化教輔資源
為了全方位服務(wù)一線教師開展教學(xué)工作,編者在完成本書編寫工作的同時,精心打造了與本書相配套的多類教輔資源,如文本類(PPT、教學(xué)大綱、源代碼、課后習(xí)題答案等)、視頻類、平臺類等,助力高校培養(yǎng)更多優(yōu)秀人才。
吳勁:
博士,電子科技大學(xué)信息與軟件工程學(xué)院副教授,曾作為訪問學(xué)者先后到英國南安普頓大學(xué)與美國加州大學(xué)交流學(xué)習(xí)。執(zhí)教20多年,長期擔(dān)任程序設(shè)計相關(guān)課程群的負(fù)責(zé)人與任課教師,具備豐富的教學(xué)與科研工作經(jīng)驗,負(fù)責(zé)的程序設(shè)計基礎(chǔ)慕課于2019年獲省級精品在線開放課程,負(fù)責(zé)的程序設(shè)計與算法基礎(chǔ)課程于2021年獲第二批省級線上線下混合式一流本科課程。
【章名目錄】
第 1章 程序設(shè)計引論
第 2章 C語言入門
第3章 數(shù)據(jù)類型
第4章 運(yùn)算符與表達(dá)式
第5章 選擇
第6章 循環(huán)
第7章 數(shù)組
第8章 指針
第9章 函數(shù)
第 10章 字符串
第 11章 結(jié)構(gòu)、聯(lián)合和枚舉
第 12章 程序設(shè)計項目實踐
附錄 ASCII字符集 210
參考文獻(xiàn) 214
【詳細(xì)目錄】
第 1章 程序設(shè)計引論
1.1 對計算機(jī)系統(tǒng)的感性認(rèn)識 1
1.1.1 主存儲器 3
1.1.2 中央處理器 4
1.1.3 尋址方式 5
1.1.4 系統(tǒng)總線 7
1.1.5 輸入輸出設(shè)備 7
1.2 對程序的感性認(rèn)識 9
1.3 程序的編譯和執(zhí)行過程 11
1.4 系統(tǒng)的抽象 12
1.4.1 進(jìn)程 13
1.4.2 虛擬內(nèi)存 13
1.4.3 文件 15
1.5 集成開發(fā)環(huán)境 15
習(xí)題1 16
第 2章 C語言入門
2.1 C語言的起源 17
2.2 C語言的特點 19
2.3 C程序的基本結(jié)構(gòu) 20
2.4 C程序的輸出函數(shù)printf 21
2.4.1 輸入、計算、輸出 21
2.4.2 格式化輸出 22
2.5 標(biāo)識符 25
2.6 C程序的輸入函數(shù)scanf 26
2.6.1 程序的輸入 26
2.6.2 格式化輸入 27
2.6.3 格式化輸入中的普通字符 28
2.7 結(jié)構(gòu)化程序設(shè)計初探 29
2.8 程序調(diào)試初探 31
習(xí)題2 36
第3章 數(shù)據(jù)類型
3.1 C語言數(shù)據(jù)存儲初探 37
3.2 常量 38
3.2.1 直接常量 38
3.2.2 宏常量 38
3.2.3 const關(guān)鍵字 40
3.3 變量 40
3.3.1 變量的聲明 40
3.3.2 變量的空間維度和時間維度 41
3.3.3 全局變量 41
3.3.4 局部變量 42
3.3.5 static關(guān)鍵字 42
3.4 整型 44
3.4.1 整型變量 44
3.4.2 整型常量 46
3.4.3 整數(shù)溢出 48
3.4.4 讀寫整數(shù) 48
3.5 浮點型 50
3.5.1 浮點型的表示 50
3.5.2 浮點變量 51
3.5.3 浮點常量 51
3.5.4 讀寫浮點數(shù) 52
3.6 字符型 52
3.6.1 字符型的表示 52
3.6.2 字符常量 53
3.6.3 字符變量 54
3.6.4 字符處理函數(shù) 54
3.7 布爾型 57
3.8 類型定義typedef 57
3.9 枚舉型 58
3.10 sizeof運(yùn)算符 60
習(xí)題3 61
第4章 運(yùn)算符與表達(dá)式
4.1 算術(shù)表達(dá)式 63
4.1.1 一元算術(shù)運(yùn)算符 63
4.1.2 二元算術(shù)運(yùn)算符 63
4.2 賦值表達(dá)式 66
4.2.1 簡單賦值 67
4.2.2 串聯(lián)賦值 68
4.2.3 復(fù)合賦值 69
4.3 邏輯表達(dá)式 71
4.3.1 關(guān)系運(yùn)算符 72
4.3.2 邏輯運(yùn)算符 73
4.3.3 判等運(yùn)算符 74
4.4 自增 自減運(yùn)算符 75
4.4.1 前綴自增 自減運(yùn)算符 75
4.4.2 后綴自增 自減運(yùn)算符 76
4.5 條件運(yùn)算符 78
4.6 逗號表達(dá)式 79
4.7 優(yōu)先級與結(jié)合性 80
4.8 類型轉(zhuǎn)換 82
4.8.1 自動類型轉(zhuǎn)換 82
4.8.2 強(qiáng)制類型轉(zhuǎn)換 84
習(xí)題4 86
第5章 選擇
5.1 if語句 89
5.1.1 簡單if語句 89
5.1.2 if-else語句 91
5.1.3 嵌套的if語句 92
5.1.4 級聯(lián)式if語句 93
5.1.5 懸空else問題 95
5.2 switch語句 95
習(xí)題5 97
第6章 循環(huán)
6.1 計數(shù)循環(huán)和不確定循環(huán) 100
6.2 while語句 100
6.2.1 while語句簡介 100
6.2.2 while語句示例 103
6.3 do-while語句 105
6.4 for語句 106
6.4.1 for語句慣用法 108
6.4.2 for語句中省略表達(dá)式的用法 108
6.4.3 for語句中逗號表達(dá)式的用法 109
6.4.4 C99中for語句的用法 109
6.5 循環(huán)嵌套 110
6.6 改變循環(huán)執(zhí)行狀態(tài) 110
6.6.1 break語句 111
6.6.2 continue語句 113
6.6.3 goto語句與標(biāo)號 114
6.7 循環(huán)中的空語句 115
習(xí)題6 116
第7章 數(shù)組
7.1 一維數(shù)組 120
7.1.1 數(shù)組的聲明 120
7.1.2 數(shù)組的初始化 122
7.1.3 對數(shù)組使用sizeof運(yùn)算符 123
7.1.4 冒泡排序 124
7.2 多維數(shù)組 126
7.2.1 多維數(shù)組的聲明與使用 126
7.2.2 多維數(shù)組的初始化 127
習(xí)題7 130
第8章 指針
8.1 內(nèi)存 132
8.2 指針變量及其應(yīng)用 133
8.2.1 指針變量 133
8.2.2 取地址和間接尋址運(yùn)算 134
8.2.3 NULL指針 135
8.3 指針和數(shù)組 135
8.3.1 指針的算術(shù)運(yùn)算 135
8.3.2 指針的比較 138
8.3.3 數(shù)組名作為指針 138
8.3.4 指針作為數(shù)組名 139
8.4 指針和二維數(shù)組 139
8.4.1 操作二維數(shù)組的元素 139
8.4.2 操作二維數(shù)組的行 140
8.4.3 指針數(shù)組和指向數(shù)組的指針 140
8.4.4 操作二維數(shù)組的列 142
習(xí)題8 142
第9章 函數(shù)
9.1 函數(shù)的定義和聲明 144
9.1.1 函數(shù)的定義 144
9.1.2 函數(shù)的聲明 145
9.2 函數(shù)的參數(shù) 146
9.2.1 函數(shù)的傳值 146
9.2.2 指針型參數(shù) 147
9.2.3 數(shù)組型參數(shù) 148
9.3 函數(shù)的調(diào)用 150
9.3.1 函數(shù)的嵌套調(diào)用 150
9.3.2 函數(shù)的遞歸調(diào)用 150
9.3.3 選擇排序 152
9.4 全局變量的應(yīng)用 153
9.5 變量的存儲類型 155
9.5.1 register變量 155
9.5.2 extern變量 156
習(xí)題9 156
第 10章 字符串
10.1 字符串常量 158
10.2 字符串變量 159
10.2.1 字符數(shù)組與字符串 159
10.2.2 字符數(shù)組在內(nèi)存中的存儲形式 160
10.2.3 字符指針 161
10.3 字符串的寫和讀 162
10.3.1 使用printf和putchar函數(shù) 162
10.3.2 使用scanf和getchar函數(shù) 164
10.4 字符的算術(shù)運(yùn)算 168
10.5 字符串處理函數(shù) 169
10.5.1 strcpy函數(shù) 170
10.5.2 strlen函數(shù) 171
10.5.3 strcat函數(shù) 172
10.5.4 strcmp函數(shù) 173
10.6 字符串的慣用法 175
10.6.1 搜索字符串末尾 175
10.6.2 字符串的復(fù)制 176
10.7 字符串?dāng)?shù)組 178
習(xí)題10 179
第 11章 結(jié)構(gòu)、聯(lián)合和枚舉
11.1 結(jié)構(gòu) 182
11.1.1 聲明結(jié)構(gòu)變量 182
11.1.2 初始化結(jié)構(gòu)變量 183
11.1.3 對結(jié)構(gòu)的操作 184
11.2 結(jié)構(gòu)類型 185
11.2.1 聲明結(jié)構(gòu)標(biāo)記 186
11.2.2 定義結(jié)構(gòu)類型 187
11.2.3 在函數(shù)中使用結(jié)構(gòu) 187
11.2.4 復(fù)合字面量 188
11.3 數(shù)組和結(jié)構(gòu)的嵌套 189
11.3.1 結(jié)構(gòu)的嵌套 189
11.3.2 結(jié)構(gòu)數(shù)組 189
11.4 聯(lián)合 190
11.4.1 聯(lián)合的應(yīng)用 192
11.4.2 聯(lián)合的標(biāo)記字段 193
11.5 枚舉 194
11.5.1 定義枚舉型 195
11.5.2 用枚舉聲明標(biāo)記字段 195
習(xí)題11 195
第 12章 程序設(shè)計項目實踐
12.1 文件及鏈表操作 198
12.1.1 fopen函數(shù) 198
12.1.2 feof函數(shù) 198
12.1.3 fscanf函數(shù) 199
12.1.4 fprintf函數(shù) 200
12.1.5 malloc函數(shù) 200
12.1.6 free函數(shù) 200
12.1.7 鏈表的操作 200
12.2 實驗 201
12.2.1 實驗?zāi)康暮鸵?201
12.2.2 實驗內(nèi)容 201
12.2.3 實驗步驟 204
附錄 ASCII字符集 210
參考文獻(xiàn) 214