本書根據國家示范建設課程改革成果及C語言程序設計課程教學要求進行編寫。全書內容分為12章,系統地講解編程與C語言基礎、基本數據類型、運算符與表達式、順序結構程序設計、選擇結構程序設計、循環結構程序設計、數組、函數、指針、結構體、聯合體與枚舉、編譯預處理、文件處理等知識。書中設有多個實例,同時在章節中穿插3個階段性綜合訓練,每經過一個階段的學習就完成一個綜合性的應用設計,在應用設計中強化理論知識,將理論和實踐緊密結合。在內容安排上由淺入深,注重例題的可操作性,融入微信掃碼實例的信息化手段,并通過讀一讀、練一練的形式幫助學生掌握C語言的程序設計方法和技巧,最后根據自測題和上機訓練題進行學習檢測和操作練習。 本書為高等職業本專科院校相應課程的教材,也可作為開放大學、成人教育、自學考試、中職學校和培訓班的教材,以及編程愛好者自學C語言的參考書。 本書提供免費的電子教學課件、習題參考答案、程序代碼,詳見前言。
高玉玲 副教授,畢業后在南京信息職業技術學院從事十余年的C語言編程技術等專業課程的教學與研究工作,曾到企業專職從事編程技術與培訓工作,具有豐富的教學與實踐經驗
第1章 編程與C語言基礎 1
教學導航 1
知識分布網絡 1
1.1 為什么需要編程 2
1.1.1 計算機的運行機制 2
1.1.2 編程語言 2
1.1.3 C語言特點 3
1.2 C語言程序的基本組成 4
1.2.1 表達式 4
1.2.2 語句 4
1.2.3 函數 5
1.3 C語言程序開發流程 8
1.4 Visual C++ 6.0集成開發環境 9
1.5 動手實戰 12
1.5.1 編寫你的第一個C語言源程序 12
1.5.2 上機調試你的第一個程序 14
1.5.3 C語言編譯時常見的錯誤提示和排除 15
自測題1 17
上機訓練題1 18
第2章 基本數據類型 20
教學導航 20
知識分布網絡 20
2.1 關鍵字與標識符 21
2.1.1 關鍵字 21
2.1.2 標識符 21
2.2 數據類型的分類 22
2.3 常量 22
2.3.1 直接常量 22
2.3.2 符號常量 24
2.4 變量 26
2.4.1 變量的定義 26
2.4.2 變量的初始化 26
2.4.3 整型變量 26
2.4.4 實型變量 27
2.4.5 字符變量 28
2.5 數據類型的轉換 29
2.5.1 自動轉換 29
2.5.2 強制轉換 30
2.6 基本數據類型常見錯誤及解決方法 30
自測題2 32
上機訓練題2 34
第3章 運算符與表達式 35
教學導航 35
知識分布網絡 35
3.1 運算符 36
3.2 算術運算符與表達式 36
3.2.1 基本算數運算符 37
3.2.2 自增、自減運算符 37
3.2.3 算數表達式 37
3.3 賦值運算符與表達式 38
3.3.1 賦值運算符 38
3.3.2 復合賦值運算符 39
3.3.3 賦值表達式 39
3.4 關系運算符與表達式 40
3.4.1 關系運算符 40
3.4.2 關系表達式 40
3.5 邏輯運算符與表達式 41
3.5.1 邏輯運算符 41
3.5.2 邏輯表達式 42
3.6 逗號運算符與表達式 43
3.6.1 逗號運算符 43
3.6.2 逗號表達式 43
3.7 條件運算符與表達式 44
3.8 運算符與表達式常見錯誤及解決方法 45
自測題3 47
上機訓練題3 49
第4章 順序結構程序設計 50
教學導航 50
知識分布網絡 50
4.1 結構化程序設計 51
4.1.1 算法 51
4.1.2 程序的三種基本結構 52
4.2 數據的輸入/輸出 52
4.2.1 格式輸出函數 52
4.2.2 格式輸入函數 54
4.2.3 字符輸出函數 56
4.2.4 字符輸入函數 56
4.3 順序結構 58
4.3.1 順序結構中的常用語句 59
4.3.2 順序結構程序組成要素 60
4.4 順序結構常見錯誤及解決方案 62
自測題4 64
上機訓練題4 66
第5章 選擇結構程序設計 67
教學導航 67
知識分布網絡 67
5.1 選擇結構的組成 68
5.1.1 選擇結構中常用語句和運算符 68
5.1.2 選擇條件的描述 68
5.2 if語句 69
5.2.1 單分支的if語句 69
5.2.2 雙分支的if語句 70
5.2.3 多分支的if語句 70
5.2.4 if語句的嵌套 71
5.3 條件運算符使用技巧 74
5.4 switch語句 75
5.4.1 switch語句的格式及執行過程 75
5.4.2 switch語句使用時的注意事項 76
5.5 選擇結構常見錯誤及解決方法 78
自測題5 79
上機訓練題5 82
第6章 循環結構程序設計 84
教學導航 84
知識分布網絡 84
6.1 循環結構的組成與常用語句 85
6.2 while語句 85
6.2.1 while語句的一般形式 85
6.2.2 while語句的執行過程 86
6.2.3 while語句使用時的注意事項 86
6.3 do while語句 88
6.3.1 do while語句的一般形式 88
6.3.2 do while語句的執行過程 89
6.3.3 do while語句使用時的注意事項 89
6.3.4 do while語句與while語句的區別 89
6.4 for語句 91
6.4.1 for語句的一般形式 91
6.4.2 for語句的執行過程 91
6.4.3 for語句的變化形式 92
6.4.4 for語句使用時的注意事項 93
6.5 跳轉語句 94
6.5.1 break語句 95
6.5.2 continue語句 95
6.5.3 goto語句 96
6.6 循環嵌套 98
6.7 循環結構常見錯誤及解決方法 101
自測題6 103
上機訓練題6 106
階段性綜合訓練1 打印ASCII碼表 107
第7章 數組 110
教學導航 110
知識分布網絡 110
7.1 數組的概念與分類 111
7.2 一維數組 111
7.2.1 一維數組的定義 112
7.2.2 一維數組的存儲 113
7.2.3 一維數組元素的引用 113
7.2.4 一維數組的初始化 113
7.3 二維數組 115
7.3.1 二維數組的定義 115
7.3.2 二維數組的存儲 116
7.3.3 二維數組元素的引用 116
7.3.4 二維數組的初始化 117
7.4 字符數組與字符串 118
7.4.1 字符數組的定義 118
7.4.2 字符數組的初始化 118
7.4.3 字符數組的引用 119
7.4.4 字符串和結束標志 120
7.4.5 字符串的輸入與輸出 120
7.4.6 常見的字符串處理函數 123
7.5 數組常見錯誤及解決方法 126
自測題7 128
上機訓練題7 132
第8章 函數 134
教學導航 134
知識分布網絡 134
8.1 模塊化程序設計與函數 135
8.1.1 模塊化程序設計的概念 135
8.1.2 函數分類 135
8.2 函數的定義和返回值 136
8.2.1 函數的定義 136
8.2.2 函數的返回值 137
8.3 函數的調用 138
8.3.1 函數調用的一般形式 139
8.3.2 函數調用的方式 139
8.3.3 被調函數的聲明 140
8.4 函數的參數傳遞 142
8.4.1 形式參數與實際參數 142
8.4.2 值傳遞 142
8.4.3 地址傳遞 143
8.5 函數的嵌套與遞歸 145
8.5.1 函數的嵌套調用 145
8.5.2 函數的遞歸調用 146
8.6 變量的作用域 149
8.6.1 局部變量 149
8.6.2 全局變量 150
8.7 變量的生存期 153
8.7.1 靜態存儲變量 153
8.7.2 動態存儲變量 153
8.8 函數的作用范圍 157
8.8.1 內部函數 157
8.8.2 外部函數 158
8.9 函數常見錯誤及解決方法 159
自測題8 161
上機訓練題8 164
階段性綜合訓練2 打印日歷 166
第9章 指針 171
教學導航 171
知識分布網絡 171
9.1 為什么使用指針 172
9.1.1 內存與變量 172
9.1.2 地址與指針 173
9.2 指針變量 173
9.2.1 指針變量的定義 173
9.2.2 指針變量的初始化 174
9.2.3 指針變量的賦值 175
9.2.4 指針變量的運算 175
9.2.5 指針變量的引用 176
9.3 指針與函數 179
9.3.1 指針作為函數參數 179
9.3.2 返回指針的函數 179
9.3.3 指向函數的指針 181
9.4 指針與數組 183
9.4.1 指針與一維數組 184
9.4.2 指針與二維數組 188
9.5 指針與字符串 194
9.5.1 指向字符串的指針 194
9.5.2 指針與字符數組的區別 195
9.6 指針數組 198
9.7 指針常見錯誤及解決方法 198
自測題9 200
上機訓練題9 203
第10章 結構體、聯合體與枚舉 205
教學導航 205
知識分布網絡 205
10.1 結構體 206
10.1.1 為什么使用結構體 206
10.1.2 結構體類型的定義 206
10.1.3 結構體變量的定義、初始化和引用 208
10.1.4 結構體數組 213
10.1.5 結構體指針 215
10.2 鏈表 218
10.2.1 鏈表的概念 218
10.2.2 鏈表的基本操作 220
10.3 聯合體 226
10.3.1 為什么使用聯合體 226
10.3.2 聯合體類型的定義 227
10.3.3 聯合體變量的定義 227
10.3.4 聯合體變量的引用 228
10.4 枚舉 231
10.5 結構體、聯合體常見錯誤及解決方法 233
自測題 10 235
上機訓練題10 238
第11章 編譯預處理 240
教學導航 240
知識分布網絡 240
11.1 文件包含命令 241
11.1.1 頭文件 241
11.1.2 文件包含的形式 241
11.2 宏定義命令 243
11.2.1 不帶參數的宏定義 243
11.2.2 帶參數的宏定義 245
11.3 條件編譯命令 248
11.4 編譯預處理常見錯誤及解決方法 250
自測題11 252
上機訓練題11 253
第12章 文件處理 255
教學導航 255
知識分布網絡 255
12.1 文件 256
12.1.1 什么是文件 256
12.1.2 文件的種類與存取方式 256
12.1.3 文件指針 257
12.2 文件的打開與關閉 258
12.2.1 文件的打開(fopen函數) 258
12.2.2 文件的關閉(fclose函數) 260
12.3 文件的讀寫 261
12.3.1 字符讀寫函數fgetc和fputc 261
12.3.2 字符串讀寫函數fgets和fputs 263
12.3.3 數據塊讀寫函數fread和fwrite 265
12.3.4 格式化讀寫函數fscanf和fprintf 266
12.4 文件的定位函數 269
12.5 文件的檢測函數 269
12.6 文件處理常見錯誤及解決方法 270
自測題12 271
上機訓練題12 274
階段性綜合訓練3 學生成績管理系統設計 276
附錄A 常用字符與ASCII碼對照表 290
附錄B C語言運算符與優先級匯總表 291
參考文獻 292