本書通過項目實例,重點講解C語言結構化程序設計的基本思想、方法和解決實際問題的技巧,培養學習者設計、分析應用程序的能力和良好的編程習慣。全書共分10個模塊,主要內容有C語言基礎、順序結構程序設計及輸入/輸出語句、選擇結構程序設計、循環結構程序設計、數組的應用、函數的應用、結構體與共用體的應用、指針、文件等,最后提供了兩個有趣的游戲類綜合設計項目供學習者學習參考。本書的編寫理念是面向問題的學習。先提出問題,然后導入相關程序設計知識和語法知識,采用流程圖描述算法,思路清晰,邏輯明了,直觀易懂;程序代碼完整,所有的程序均在VisualC++6.0環境下調試通過,便于學習;對問題進行擴展分析,拓寬了讀者的學習視野;項目的技能訓練舉一反三,便于讀者鞏固、提高。本書適合作為普通高等院校、高等職業技術院校計算機及相關專業學習程序設計的教材,也可作為培訓班或程序開發人員的學習用書。
本書的一版是“十一五”國家級規劃教材,2011年被評為北京高等教育精品教材,2009年榮獲計算機類專業優秀教材稱號。作為高職高專教材,本書的一、二版在全國各地受到歡迎。但由于前一版書有些內容陳舊,需要更新內容,尤其需要補充介紹新版本環境。
.1輸出Hello World! Hello C!——C語言的結構1
1.1.1計算機程序及其設計語言1
1.1.2第一個C語言程序2
1.1.3第一個C語言程序的說明2
1.1.4C語言程序結構3
任務1.2熟悉編寫C語言程序的環境4
1.2.1C語言程序編輯實例4
1.2.2C語言程序的設計步驟7
1.2.3C語言程序的執行過程與上機調試步驟8
任務1.3猜牌游戲的體驗——C語言的綜合運用一9
任務1.4打字游戲的體驗——C語言的綜合運用二9
歸納與總結10
習題110
模塊2順序結構程序設計及輸入/輸出語句/12
任務2.1計算三角形的周長和面積——數值計算12
2.1.1數據的分類13
2.1.2常量和變量13
2.1.3數據類型18
2.1.4數據的輸入和輸出21
2.1.5C語言算術表達式與數學公式25
2.1.6程序語句序列的表示25
2.1.7程序代碼26
任務2.2密碼的破解——字符運算26
2.2.1運算符與表達式26
2.2.2數據類型轉換34
2.2.3對稱加密技術的引入35
2.2.4運行程序36〖2〗〖3〗〖4〗任務2.3求解一元二次方程——數學函數和復雜公式37
2.3.1常用數學函數37
2.3.2一元二次方程組的求解39
任務2.4猜牌游戲的界面——輸入/輸出語句40
任務2.5編程語句的規范化41
2.5.1標識符命名規則42
2.5.2程序版式43
2.5.3注釋規范44
2.5.4編碼原則46
歸納與總結46
習題247
模塊3選擇結構程序設計/50
任務3.1求數字的絕對值——if分支判斷50
3.1.1if語句形式(1)——if形式51
3.1.2if語句形式(2)——ifelse形式51
3.1.3if語句形式(3)——ifelseif形式51
3.1.4C語言的語句52
3.1.5程序語句序列的表示53
3.1.6程序代碼53
任務3.2完善三角形面積計算——ifelse分支判斷54
3.2.1關系運算符與關系表達式54
3.2.2邏輯運算符與邏輯表達式55
3.2.3if條件判斷語句55
3.2.4程序代碼56
3.2.5程序說明56
3.2.6小技巧57
任務3.3學生學習成績評定——多條件分支57
3.3.1結構化程序設計59
3.3.2隨機函數59
3.3.3多分支選擇59
3.3.4程序代碼62
3.3.5程序說明63
3.3.6補充代碼63
任務3.4猜牌游戲拓展——猜牌分支思考64
歸納與總結65
習題366
模塊4循環結構程序設計/69
任務4.1打印抽獎號碼——while循環69
4.1.1while循環語句70
4.1.2死循環70
4.1.3程序設計流程圖71
4.1.4程序代碼71
4.1.5程序說明71
4.1.6應用拓展71
任務4.2模擬抽獎——dowhile循環72
4.2.1dowhile循環語句73
4.2.2while和dowhile的區別73
4.2.3程序代碼75
4.2.4程序說明75
4.2.5應用拓展76
任務4.3韓信點兵——for循環77
4.3.1窮舉法78
4.3.2for循環語句78
4.3.3break語句78
4.3.4continue語句79
4.3.5break語句與continue語句的區別79
4.3.6goto語句79
4.3.7程序代碼80
4.3.8程序說明80
4.3.9應用拓展81
任務4.4打印吉祥圖案——循環嵌套81
4.4.1循環嵌套81
4.4.2for語句的一些特殊用法82
4.4.3算法分析83
4.4.4程序代碼84
4.4.5程序說明85
任務4.5VC++6.0程序的跟蹤調試入門86
4.5.1程序斷點設置86
4.5.2觀看值Watch87
4.5.3進程控制88
4.5.4實例操作88
任務4.6猜牌游戲拓展——顯示所選的牌90
4.6.1程序代碼90
4.6.2程序說明90
歸納與總結90
習題491
模塊5數組的應用/96
任務5.1一名參賽選手的評分程序——一維數組96
5.1.1一維數組的定義97
5.1.2一維數組元素的引用97
5.1.3一維數組的存儲結構98
5.1.4一維數組的初始化98
5.1.5程序設計思路99
5.1.6程序代碼100
5.1.7程序說明100
任務5.2多名參賽選手的評分程序——二維數組101
5.2.1二維數組的定義101
5.2.2二維數組元素的使用102
5.2.3程序設計思路103
5.2.4程序代碼103
任務5.3參賽選手的成績排名——冒泡排序和選擇排序104
5.3.1冒泡排序105
5.3.2選擇排序106
5.3.3冒泡排序和選擇排序的比較107
5.3.4程序設計思路107
5.3.5程序代碼107
任務5.4輸入英文句子統計單詞數——字符數組與字符串108
5.4.1字符型數組109
5.4.2字符串和字符串結束標志109
5.4.3字符串輸入/輸出110
5.4.4字符串處理函數110
5.4.5程序設計思路113
5.4.6程序代碼114
5.4.7程序說明115
任務5.5猜牌游戲拓展——數組的應用115
歸納與總結117
習題5118
模塊6函數的應用/121
任務6.1打印字符圖形——函數的定義與調用121
6.1.1函數的概念及分類122
6.1.2函數定義122
6.1.3函數的調用123
6.1.4形式參數和實際參數124
6.1.5程序設計流程124
6.1.6程序代碼124
6.1.7程序說明125
任務6.2小學生加減法算術測試競賽程序——有參函數126
6.2.1模塊化程序設計126
6.2.2函數的分類126
6.2.3函數的返回值127
6.2.4函數調用中參數的傳遞方法127
6.2.5程序設計流程128
6.2.6程序代碼129
6.2.7程序說明130
任務6.3排序——函數的調用及地址傳遞130
6.3.1地址傳遞130
6.3.2函數原型說明131
6.3.3全局變量、局部變量與變量的作用域132
6.3.4程序設計流程132
6.3.5程序代碼133
任務6.4遞歸算法——函數的嵌套調用與遞歸調用134
6.4.1函數的嵌套調用134
6.4.2函數的遞歸調用135
6.4.3程序代碼136
6.4.4遞歸函數的執行過程136
歸納與總結137
習題6138
模塊7結構體與共用體的應用/141
任務7.1熟悉結構體141
7.1.1結構體數據類型的定義142
7.1.2結構體類型變量的說明143
7.1.3結構體變量成員的引用144
7.1.4結構體變量的賦值與初始化144
7.1.5結構體數組的說明與初始化145
任務7.2撲克牌人機游戲——結構體應用145
7.2.1程序設計流程145
7.2.2程序代碼146
7.3共用體類型149
7.3.1共用體數據類型的定義149
7.3.2共用體數據類型的應用150
歸納與總結151
習題7152
模塊8指針/154
任務8.1使用指針計算圓的面積——指針的定義154
8.1.1指針與指針變量155
8.1.2指針變量的定義156
8.1.3指針變量的初始化156
8.1.4程序代碼157
任務8.2猜數游戲——指針指向一維數組的應用158
8.2.1指針指向數組159
8.2.2指針的移動160
8.2.3通過指針引用數組元素160
8.2.4指針變量作為函數的參數161
8.2.5程序代碼162
任務8.3字符串糾正程序——指針指向字符串164
8.3.1字符串的表示形式164
8.3.2字符指針在字符串處理函數中的使用165
8.3.3空格和大寫字母的判斷166
8.3.4程序代碼166
任務8.4猜牌游戲——指針的簡單綜合應用167
8.4.1類型定義關鍵字typedef167
8.4.2指向結構體變量的指針168
8.4.3結構體指針變量作為函數參數169
歸納與總結170
習題8170
模塊9文件/173
任務9.1將字符寫入文件——文件的定義及簡單應用173
9.1.1文件的概念174
9.1.2文件的存儲174
9.1.3文件指針的定義174
9.1.4文件的處理174
9.1.5打開文件175
9.1.6文本文件的讀/寫176
9.1.7關閉文件176
任務9.2簡單的考試出題與評分系統——文件格式化讀/寫178
9.2.1打開多個文件178
9.2.2格式化讀/寫函數fscanf()和fprintf()178
任務9.3簡單的人事信息管理系統——文件數據塊的讀/寫181
9.3.1數據塊讀/寫函數fread()和fwrite()181
9.3.2文件隨機定位函數182
任務9.4猜牌游戲拓展——將用戶名及選牌寫入文件保存184
歸納與總結185
習題9185
模塊10綜合項目實踐/187
任務10.1打字小游戲187
10.1.1功能描述187
10.1.2系統設計187
10.1.3關鍵技術189
10.1.4程序實現190
10.1.5運行結果196
任務10.2人機互動猜牌游戲197
10.2.1功能描述197
10.2.2系統設計197
10.2.3關鍵技術197
10.2.4程序實現199
10.2.5運行結果203
附錄/205
附錄A常用的C語言庫函數205
附錄BC語言常見錯誤分析210
附錄CASCII碼表218
附錄D習題參考解答219
參考文獻/238