內容簡介
本書以簡化語法、強化程式思維訓練、規範化編程為指導思想,介紹程式設計基礎、編程規範和 C 程式設計,主要內容包括基本數據類型與表達式、櫻仔厚選擇控制、循環控制、數組、函式、指針與地址、結構體、檔案等。全書配置了適量經典例題,可加深相應語法概念的理解。全書文字精練,例題代碼規範,易學易用。書後附有四個附錄可供查閱(DevCPP 軟體的安裝與使用、程式的編輯與調試、ASCII 碼錶、
運算符優先權與結合方向)。本書可配合魔燈平台使用。
圖書目錄
第1 章程式設計基礎與編程規範 1
11 程式設計與編程工具 1
111 程式與程式設計的概念 1
112 為什麼要學程式設計 1
113 為什麼要學習C 程式設計 2
12 程式的基本結構和要素 3
121 程式的基本結構 3
122 輸入輸出 3
13 程式設計一般方法 3
14 編程規範 3
141 為什麼要遵守編程規範 4
142 編程規範的基本要求 4
144 縮進 6
145 空行 7
146 一局束遙晚行只寫一條語句 7
147 if、for、while 語句體加括弧f g 7
148 每行只聲明同一類變數 8
149 函式要先聲明後定義 8
1410 注釋 8
1411 函式返回類型與return 語句不預設 9
1412 例1-1:雞兔同籠 9
15 程式設計方法學11
151 算法殃拜漏重11
152 算法的描述12
154 算法的評價13
16 提問的智慧13
161 三思而後問|| 提問之前13
162 提問的技巧14
IV
163 技術問題應全部公開14
164 問題解決後14
習題14
第2 章數據類型與表達式16
21 標識符與關鍵字16
211 標識符及其命名規則16
212 關鍵字17
22 數據類型17
23 變數17
231 變數的概念17
232 變數的聲明18
233 變數的賦值19
234 例2-1:變數賦初值示例19
235 變數的存儲類型20
236 const 類型變數20
24 常量21
241 直接常量(字面量)21
242 符號常量21
243 例2-2:常量示例|| 已知價格和數量,計算總價22
244 整型贈拘頸常量22
246 字元型常量23
247 字元串常量己悼尋23
248 轉義字元23
25 ASCII 表24
251 ASCII 編碼規則24
252 字元與ASCII 碼的運算25
26 運算符25
263 數據類型強制轉換27
266 自增自減運算符29
2610 sizeof 運算符31
V
2611 例2-3:sizeof 操作符使用示例|| 輸出常用數據類型位元組數31
2612 運算符的優先權和結合性32
27 表達式32
271 表達式的概念32
272 數據類型轉化33
28 語句34
281 賦值語句34
282 用逗號分隔開的聲明語句35
283 變數聲明時賦值35
習題35
第3 章基本輸入輸出37
31 標準輸民閥入輸出函式37
32 標準輸入函式scanf() 37
33 標準輸出函式printf()39
331 格式輸出中常用轉義字元41
34 輸入輸出函式的套用示例42
例3-1:scanf() 與printf() 套用|| 圓面積、周長42
習題43
第4 章選擇控制44
41 順序控制44
例4-1:交換兩變數的值44
42 if 選擇控制語句46
421 if 單分支語句46
422 例4-2:if 單分支語句|| 成績通過通知46
423 if ¢ ¢ ¢ else 雙分支語句47
424 例4-3:if 雙分支語句|| 成績是否通過判斷47
425 if ¢ ¢ ¢ else if ¢ ¢ ¢ else 多分支語句47
426 例4-4:if 多分支語句|| 成績等級轉換48
427 嵌套if 語句51
428 例4-5:嵌套if 語句|| 閏年判斷51
43 switch¢ ¢ ¢ case 語句53
431 switch 語句格式54
432 例4-6:switch 語句示例|| 成績等級轉換54
習題55
第5 章循環控制57
51 循環控制語句57
VI
52 for 語句57
521 for 語句的一般形式與使用說明57
522 for 循環注意事項59
523 例5-1:for 語句|| 計算1+2+3+¢ ¢ ¢ +10059
53 while 語句60
531 while 語句的一般形凶店料式60
532 例5-2:while 語句套用|| 計算1+2+3+¢ ¢ ¢+n 60
54 do¢ ¢ ¢ while 語句61
541 do¢ ¢ ¢ while 語句的一般形式61
542 do¢ ¢ ¢ while 循環的使用說明61
543 例5-3:do¢ ¢ ¢ while 語句套用|| 計算1+2+3+¢ ¢ ¢ +100 62
55 break 語句62
551 break 語句使用說明62
552 例5-4:break 語句套用|| 計算1+2+¢ ¢ ¢ +100 時從某項終止63
56 continue 語句63
561 continue 語句使用說明63
562 例5-5:continue 語句套用|| 求1+2+¢ ¢ ¢ +10 時跳過某項63
57 goto 語句64
571 goto 語句的使用格式64
572 例5-6:goto 語句套用|| 求1+2+¢ ¢ ¢+n 大於1000 的最小項n 64
58 選擇語句、循環語句綜合編程65
581 例5-7:直角三角形圖案輸出66
582 例5-8:等腰三角形圖案輸出69
583 例5-9:空心矩形圖案輸出70
584 例5-10:輸出水仙花數71
585 例5-11:素數判斷72
586 例5-12:計算ex = 1 + x + x2
2! + ¢ ¢ ¢ + xn
n! 74
587 例5-13:斐波那契數列76
習題79
第6 章數組81
61 一維數組81
611 數組的概念81
612 一維數組的聲明81
613 數組元素引用82
614 例6-1:數組元素逆序輸出82
615 一維數組的初始化83
616 例6-2:冒泡排序法84
VII
62 二維數組86
621 二維數組的聲明86
622 二維數組的初始化86
623 例6-3:矩陣轉置87
63 高維數組88
習題88
第7 章字元數組與字元串90
71 字元數組90
711 字元數組概念90
712 字元數組的聲明與賦值90
713 例7-1:字元數組元素輸出為ASCII 碼值92
714 例7-2:字元數組結束標識92
72 字元串93
73 字元串輸入輸出函式93
731 函式scanf() 和printf() 輸入輸出字元串93
732 例7-3:scanf() 和printf() 函式輸入輸出字元串94
733 函式gets() 和puts()95
734 例7-4:gets(),puts() 函式套用示例95
735 函式getchar()96
736 例7-5:getchar() 函式套用|| 將輸入的字元串逆序輸出96
74 常用字元串函式96
741 字元串長度函式strlen()97
742 例7-6:strlen() 函式示例|| 求字元串長度97
743 字元串連線函式strcat() 97
744 例7-7:strcat() 函式使用示例|| 連線字元串98
745 字元串複製函式strcpy() 98
746 例7-8:strcpy() 函式使用示例|| 字元串複製99
747 字元串比較函式strcmp()99
748 例7-9:strcmp() 函式套用|| 口令系統99
75 字元數組與字元串的區別 101
例7-10:字元數組與字元串區別示例 101
76 字元串數組 102
例7-11:字元串數組示例 102
習題 103
第8 章函式 105
81 函式概念 105
82 函式的定義 106
VIII
821 函式的定義格式 106
822 函式的聲明和調用 106
823 例8-1:簡單函式示例 106
824 函式嵌套調用 108
825 例8-2:函式的嵌套調用 108
83 函式參數的傳遞 109
831 形式參數和實際參數 109
832 變數作為函式參數 109
833 例8-3:函式參數傳遞 110
834 例8-4:函式的多參數傳遞 110
835 例8-5:函式的實參與形參同名 111
836 函式的返回值 112
837 例8-6:函式返回值|| 計算正方形面積 112
838 例8-7:輸出區間[2, 5000] 上的第n 個素數 114
839 例8-8:自定義判斷素數頭檔案primeh 116
8310 例8-9:使用自定義頭檔案|| 孿生素數 117
84 遞歸函式 118
841 例8-10:遞歸函式|| 求階乘n! 119
842 例8-11:遞歸函式|| 求1+2+3+¢ ¢ ¢+n 120
85 變數作用域 120
851 作用域概念 120
852 局部作用域 121
853 例8-12:局部變數示例 121
854 全局作用域 121
855 例8-13:全局變數示例|| 輸入半徑求圓直徑、周長、面積、體積 122
習題 123
第9 章指針 124
91 地址 124
911 地址的概念 124
912 變數與地址 124
913 例9-1:變數值與變數地址示例 125
914 數組與地址 126
915 例9-2:數組與地址示例 126
92 指針 128
921 指針的概念 128
922 例9-3:指針簡單操作示例 128
923 指針運算 129
924 指向數組的指針 130
IX
925 例9-4:指向數組的指針示例 131
926 指向字元串的指針 132
927 例9-5:指向字元串的指針|| 字元串小寫字母變大寫 132
928 指向函式的指針 133
929 例9-6:指向函式的指針|| 求兩數中的最大數 133
9210 雙層指針與多層指針的概念 134
9211 指向指針的指針 134
9212 例9-7:指向指針的指針示例 135
9213 指向二維數組的指針 136
9214 例9-8:指向二維數組的指針示例 136
9215 指向字元串數組的指針 137
9216 例9-9:指向字元串數組的指針|| 大寫字母變小寫 138
93 函式參數的地址傳遞 139
931 指針作為函式參數 139
932 例9-10:指針作為函式參數示例 140
933 數組作為函式參數 141
934 例9-11:數組作為函式參數|| 數組元素乘10 後輸出 141
94 變數引用作為函式參數 142
941 引用的概念 142
942 例9-12:變數引用示例 143
943 例9-13:變數引用作為函式參數 144
習題 145
第10 章結構體 146
101 結構體的概念 146
102 結構體定義格式 146
103 結構體成員訪問 147
例10-1:結構體套用|| 學生結構體 147
習題 148
第11 章檔案 149
111 檔案的概念 149
112 檔案讀寫函式 150
1121 檔案流 150
1122 檔案FILE 的數據結構 150
1123 檔案結構指針 150
1124 檔案的打開函式fopen() 151
1125 關閉檔案函式fclose() 151
1126 檔案的讀寫 152
X
1127 例11-1:以字元形式讀寫檔案操作示例 152
1128 例11-2:以字元串形式讀寫檔案操作示例 155
習題 156
附錄A DevCPP 的安裝與使用 157
A1 DevCPP 簡介 157
A2 DevCPP 軟體安裝 157
A3 創建桌面捷徑和系統列快速啟動方式 160
A4 DevCPP 的語言設定 160
A5 DevCPP 的工具條設定 161
A6 第一個程式 162
A7 DevCPP 常用快捷鍵 163
附錄B 程式的編輯與調試 165
B1 程式的編輯 165
B2 程式的編譯 166
B3 程式的運行 167
B4 程式的基本調試方法 167
B41 標準數據檢驗 167
B42 程式跟蹤 168
B43 例B2-1:插入輸出語句跟蹤程式||
冒泡排序法 168
B44 邊界檢驗 169
B45 簡化程式 169
B5 DevCPP 的跟蹤調試功能 170
B51 設定斷點 170
B52 調試 171
B53 例B-2:DevCPP 調試示例|| 循環中的變數 172
附錄C ASCII 表 175
參考文獻 178
25 ASCII 表24
251 ASCII 編碼規則24
252 字元與ASCII 碼的運算25
26 運算符25
263 數據類型強制轉換27
266 自增自減運算符29
2610 sizeof 運算符31
V
2611 例2-3:sizeof 操作符使用示例|| 輸出常用數據類型位元組數31
2612 運算符的優先權和結合性32
27 表達式32
271 表達式的概念32
272 數據類型轉化33
28 語句34
281 賦值語句34
282 用逗號分隔開的聲明語句35
283 變數聲明時賦值35
習題35
第3 章基本輸入輸出37
31 標準輸入輸出函式37
32 標準輸入函式scanf() 37
33 標準輸出函式printf()39
331 格式輸出中常用轉義字元41
34 輸入輸出函式的套用示例42
例3-1:scanf() 與printf() 套用|| 圓面積、周長42
習題43
第4 章選擇控制44
41 順序控制44
例4-1:交換兩變數的值44
42 if 選擇控制語句46
421 if 單分支語句46
422 例4-2:if 單分支語句|| 成績通過通知46
423 if ¢ ¢ ¢ else 雙分支語句47
424 例4-3:if 雙分支語句|| 成績是否通過判斷47
425 if ¢ ¢ ¢ else if ¢ ¢ ¢ else 多分支語句47
426 例4-4:if 多分支語句|| 成績等級轉換48
427 嵌套if 語句51
428 例4-5:嵌套if 語句|| 閏年判斷51
43 switch¢ ¢ ¢ case 語句53
431 switch 語句格式54
432 例4-6:switch 語句示例|| 成績等級轉換54
習題55
第5 章循環控制57
51 循環控制語句57
VI
52 for 語句57
521 for 語句的一般形式與使用說明57
522 for 循環注意事項59
523 例5-1:for 語句|| 計算1+2+3+¢ ¢ ¢ +10059
53 while 語句60
531 while 語句的一般形式60
532 例5-2:while 語句套用|| 計算1+2+3+¢ ¢ ¢+n 60
54 do¢ ¢ ¢ while 語句61
541 do¢ ¢ ¢ while 語句的一般形式61
542 do¢ ¢ ¢ while 循環的使用說明61
543 例5-3:do¢ ¢ ¢ while 語句套用|| 計算1+2+3+¢ ¢ ¢ +100 62
55 break 語句62
551 break 語句使用說明62
552 例5-4:break 語句套用|| 計算1+2+¢ ¢ ¢ +100 時從某項終止63
56 continue 語句63
561 continue 語句使用說明63
562 例5-5:continue 語句套用|| 求1+2+¢ ¢ ¢ +10 時跳過某項63
57 goto 語句64
571 goto 語句的使用格式64
572 例5-6:goto 語句套用|| 求1+2+¢ ¢ ¢+n 大於1000 的最小項n 64
58 選擇語句、循環語句綜合編程65
581 例5-7:直角三角形圖案輸出66
582 例5-8:等腰三角形圖案輸出69
583 例5-9:空心矩形圖案輸出70
584 例5-10:輸出水仙花數71
585 例5-11:素數判斷72
586 例5-12:計算ex = 1 + x + x2
2! + ¢ ¢ ¢ + xn
n! 74
587 例5-13:斐波那契數列76
習題79
第6 章數組81
61 一維數組81
611 數組的概念81
612 一維數組的聲明81
613 數組元素引用82
614 例6-1:數組元素逆序輸出82
615 一維數組的初始化83
616 例6-2:冒泡排序法84
VII
62 二維數組86
621 二維數組的聲明86
622 二維數組的初始化86
623 例6-3:矩陣轉置87
63 高維數組88
習題88
第7 章字元數組與字元串90
71 字元數組90
711 字元數組概念90
712 字元數組的聲明與賦值90
713 例7-1:字元數組元素輸出為ASCII 碼值92
714 例7-2:字元數組結束標識92
72 字元串93
73 字元串輸入輸出函式93
731 函式scanf() 和printf() 輸入輸出字元串93
732 例7-3:scanf() 和printf() 函式輸入輸出字元串94
733 函式gets() 和puts()95
734 例7-4:gets(),puts() 函式套用示例95
735 函式getchar()96
736 例7-5:getchar() 函式套用|| 將輸入的字元串逆序輸出96
74 常用字元串函式96
741 字元串長度函式strlen()97
742 例7-6:strlen() 函式示例|| 求字元串長度97
743 字元串連線函式strcat() 97
744 例7-7:strcat() 函式使用示例|| 連線字元串98
745 字元串複製函式strcpy() 98
746 例7-8:strcpy() 函式使用示例|| 字元串複製99
747 字元串比較函式strcmp()99
748 例7-9:strcmp() 函式套用|| 口令系統99
75 字元數組與字元串的區別 101
例7-10:字元數組與字元串區別示例 101
76 字元串數組 102
例7-11:字元串數組示例 102
習題 103
第8 章函式 105
81 函式概念 105
82 函式的定義 106
VIII
821 函式的定義格式 106
822 函式的聲明和調用 106
823 例8-1:簡單函式示例 106
824 函式嵌套調用 108
825 例8-2:函式的嵌套調用 108
83 函式參數的傳遞 109
831 形式參數和實際參數 109
832 變數作為函式參數 109
833 例8-3:函式參數傳遞 110
834 例8-4:函式的多參數傳遞 110
835 例8-5:函式的實參與形參同名 111
836 函式的返回值 112
837 例8-6:函式返回值|| 計算正方形面積 112
838 例8-7:輸出區間[2, 5000] 上的第n 個素數 114
839 例8-8:自定義判斷素數頭檔案primeh 116
8310 例8-9:使用自定義頭檔案|| 孿生素數 117
84 遞歸函式 118
841 例8-10:遞歸函式|| 求階乘n! 119
842 例8-11:遞歸函式|| 求1+2+3+¢ ¢ ¢+n 120
85 變數作用域 120
851 作用域概念 120
852 局部作用域 121
853 例8-12:局部變數示例 121
854 全局作用域 121
855 例8-13:全局變數示例|| 輸入半徑求圓直徑、周長、面積、體積 122
習題 123
第9 章指針 124
91 地址 124
911 地址的概念 124
912 變數與地址 124
913 例9-1:變數值與變數地址示例 125
914 數組與地址 126
915 例9-2:數組與地址示例 126
92 指針 128
921 指針的概念 128
922 例9-3:指針簡單操作示例 128
923 指針運算 129
924 指向數組的指針 130
IX
925 例9-4:指向數組的指針示例 131
926 指向字元串的指針 132
927 例9-5:指向字元串的指針|| 字元串小寫字母變大寫 132
928 指向函式的指針 133
929 例9-6:指向函式的指針|| 求兩數中的最大數 133
9210 雙層指針與多層指針的概念 134
9211 指向指針的指針 134
9212 例9-7:指向指針的指針示例 135
9213 指向二維數組的指針 136
9214 例9-8:指向二維數組的指針示例 136
9215 指向字元串數組的指針 137
9216 例9-9:指向字元串數組的指針|| 大寫字母變小寫 138
93 函式參數的地址傳遞 139
931 指針作為函式參數 139
932 例9-10:指針作為函式參數示例 140
933 數組作為函式參數 141
934 例9-11:數組作為函式參數|| 數組元素乘10 後輸出 141
94 變數引用作為函式參數 142
941 引用的概念 142
942 例9-12:變數引用示例 143
943 例9-13:變數引用作為函式參數 144
習題 145
第10 章結構體 146
101 結構體的概念 146
102 結構體定義格式 146
103 結構體成員訪問 147
例10-1:結構體套用|| 學生結構體 147
習題 148
第11 章檔案 149
111 檔案的概念 149
112 檔案讀寫函式 150
1121 檔案流 150
1122 檔案FILE 的數據結構 150
1123 檔案結構指針 150
1124 檔案的打開函式fopen() 151
1125 關閉檔案函式fclose() 151
1126 檔案的讀寫 152
X
1127 例11-1:以字元形式讀寫檔案操作示例 152
1128 例11-2:以字元串形式讀寫檔案操作示例 155
習題 156
附錄A DevCPP 的安裝與使用 157
A1 DevCPP 簡介 157
A2 DevCPP 軟體安裝 157
A3 創建桌面捷徑和系統列快速啟動方式 160
A4 DevCPP 的語言設定 160
A5 DevCPP 的工具條設定 161
A6 第一個程式 162
A7 DevCPP 常用快捷鍵 163
附錄B 程式的編輯與調試 165
B1 程式的編輯 165
B2 程式的編譯 166
B3 程式的運行 167
B4 程式的基本調試方法 167
B41 標準數據檢驗 167
B42 程式跟蹤 168
B43 例B2-1:插入輸出語句跟蹤程式||
冒泡排序法 168
B44 邊界檢驗 169
B45 簡化程式 169
B5 DevCPP 的跟蹤調試功能 170
B51 設定斷點 170
B52 調試 171
B53 例B-2:DevCPP 調試示例|| 循環中的變數 172
附錄C ASCII 表 175
參考文獻 178