本書面向程序設(shè)計零基礎(chǔ)的讀者,集理論知識、上機練習、在線學習于一體,并以C語言為載體,帶領(lǐng)讀者走進程序設(shè)計的大門。C語言是具有低級語言特點的高級程序設(shè)計語言,它既可以用于編寫底層驅(qū)動程序及系統(tǒng)軟件,又可以用于編寫上層應(yīng)用軟件。目前流行的程序設(shè)計語言都不同程度地帶有C語言的烙印,因此,學好C語言再去學習其他程序設(shè)計語言,會收到事半功倍的效果。
編者編寫本書的目的不是介紹C語言的語法細節(jié),而是以C語言為載體來介紹程序設(shè)計的基本思想和方法,引導讀者從程序設(shè)計的角度去理解軟件和硬件是如何協(xié)同工作的,并幫助讀者在實踐中掌握構(gòu)建軟件的方法。本書前11章具體介紹程序設(shè)計的基礎(chǔ)理論知識,且都有相應(yīng)的慕課來輔助讀者學習;第12章通過一個實際的C語言程序設(shè)計項目,幫助讀者實現(xiàn)對全書基礎(chǔ)理論知識的融會貫通。
本書可作為高等院校軟件工程、計算機科學與技術(shù)等專業(yè)的入門教材,也可作為有志進入軟件開發(fā)領(lǐng)域的社會人士的自學參考書。
1. 理論與實踐相結(jié)合
面向新工科人才培養(yǎng),編者不僅對程序設(shè)計的理論知識體系進行了合理化布局,使理論知識能夠循序漸進地呈現(xiàn)在讀者面前,而且在講解理論知識的過程中融入了通俗易懂的案例,以幫助讀者更好地理解并掌握理論知識。此外,本書在最后通過程序設(shè)計項目實踐將全書的理論知識融會貫通,以幫助讀者實現(xiàn)學練結(jié)合,系統(tǒng)提升綜合能力。
2. 配套編程指導平臺、程序設(shè)計機考系統(tǒng)以及作業(yè)平臺
為了更好地指導讀者開展編程練習,本書編者開發(fā)了編程指導平臺供讀者使用;此外,還搭建了用于服務(wù)教師的程序設(shè)計機考系統(tǒng),以及面向師生的作業(yè)平臺。讀者可以通過掃描下方二維碼來了解相關(guān)平臺 系統(tǒng)的具體使用方法。
3. 支持線上線下混合式教學
編者錄制了程序設(shè)計基礎(chǔ)慕課。讀者可以通過學堂在線官網(wǎng)搜索本書主編吳勁二字,以找到對應(yīng)的慕課進行觀看學習。
4. 精心打造立體化教輔資源
為了全方位服務(wù)一線教師開展教學工作,編者在完成本書編寫工作的同時,精心打造了與本書相配套的多類教輔資源,如文本類(PPT、教學大綱、源代碼、課后習題答案等)、視頻類、平臺類等,助力高校培養(yǎng)更多優(yōu)秀人才。
吳勁:
博士,電子科技大學信息與軟件工程學院副教授,曾作為訪問學者先后到英國南安普頓大學與美國加州大學交流學習。執(zhí)教20多年,長期擔任程序設(shè)計相關(guān)課程群的負責人與任課教師,具備豐富的教學與科研工作經(jīng)驗,負責的程序設(shè)計基礎(chǔ)慕課于2019年獲省級精品在線開放課程,負責的程序設(shè)計與算法基礎(chǔ)課程于2021年獲第二批省級線上線下混合式一流本科課程。
【章名目錄】
第 1章 程序設(shè)計引論
第 2章 C語言入門
第3章 數(shù)據(jù)類型
第4章 運算符與表達式
第5章 選擇
第6章 循環(huán)
第7章 數(shù)組
第8章 指針
第9章 函數(shù)
第 10章 字符串
第 11章 結(jié)構(gòu)、聯(lián)合和枚舉
第 12章 程序設(shè)計項目實踐
附錄 ASCII字符集 210
參考文獻 214
【詳細目錄】
第 1章 程序設(shè)計引論
1.1 對計算機系統(tǒng)的感性認識 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 對程序的感性認識 9
1.3 程序的編譯和執(zhí)行過程 11
1.4 系統(tǒng)的抽象 12
1.4.1 進程 13
1.4.2 虛擬內(nèi)存 13
1.4.3 文件 15
1.5 集成開發(fā)環(huán)境 15
習題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 標識符 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
習題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運算符 60
習題3 61
第4章 運算符與表達式
4.1 算術(shù)表達式 63
4.1.1 一元算術(shù)運算符 63
4.1.2 二元算術(shù)運算符 63
4.2 賦值表達式 66
4.2.1 簡單賦值 67
4.2.2 串聯(lián)賦值 68
4.2.3 復(fù)合賦值 69
4.3 邏輯表達式 71
4.3.1 關(guān)系運算符 72
4.3.2 邏輯運算符 73
4.3.3 判等運算符 74
4.4 自增 自減運算符 75
4.4.1 前綴自增 自減運算符 75
4.4.2 后綴自增 自減運算符 76
4.5 條件運算符 78
4.6 逗號表達式 79
4.7 優(yōu)先級與結(jié)合性 80
4.8 類型轉(zhuǎn)換 82
4.8.1 自動類型轉(zhuǎn)換 82
4.8.2 強制類型轉(zhuǎn)換 84
習題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
習題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語句中省略表達式的用法 108
6.4.3 for語句中逗號表達式的用法 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語句與標號 114
6.7 循環(huán)中的空語句 115
習題6 116
第7章 數(shù)組
7.1 一維數(shù)組 120
7.1.1 數(shù)組的聲明 120
7.1.2 數(shù)組的初始化 122
7.1.3 對數(shù)組使用sizeof運算符 123
7.1.4 冒泡排序 124
7.2 多維數(shù)組 126
7.2.1 多維數(shù)組的聲明與使用 126
7.2.2 多維數(shù)組的初始化 127
習題7 130
第8章 指針
8.1 內(nèi)存 132
8.2 指針變量及其應(yīng)用 133
8.2.1 指針變量 133
8.2.2 取地址和間接尋址運算 134
8.2.3 NULL指針 135
8.3 指針和數(shù)組 135
8.3.1 指針的算術(shù)運算 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
習題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
習題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ù)運算 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 字符串數(shù)組 178
習題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)標記 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)合的標記字段 193
11.5 枚舉 194
11.5.1 定義枚舉型 195
11.5.2 用枚舉聲明標記字段 195
習題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
參考文獻 214