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