內容簡介
本書以各類中外趣題的C語言程式設計為主線,取材注重案例的趣味性與典型性,程式突出算法設計與技能運用,旨在培養與提高程式設計的興趣,增強通過C程式設計解決實際問題的能力。
書中所精選的案例包括整數搜尋、數據處理、模擬探索、智慧型遊戲與圖表創建,部分趣題取自國際國內歷屆信息學(計算機)奧林匹克與各類程式設計競賽,同時參考了網上讀者集中探討的程式設計熱點問題,類型廣泛、內容豐富、難度適宜、深入淺出。所有趣題設計求解都給出完整程式代碼,可在VC 6.0環境下編譯通過,有些趣題還採用多個算法、多種思路的程式實現。
本書作為C程式設計的教學參考資料集,適合本專科在校學生與廣大程式設計愛好者學習參考,可供計算機等級考試與程式設計師水平考試複習使用,也可供IOI、NOI與各級程式設計競賽培訓選用。
本書提供案例程式原始碼及部分程式示例彩圖,讀者可以從中國水利水電出版社網站以及萬水書苑下載,網址為:http://www.waterpub.com.cn/softdown/或http://www.wsbookshow.com。
圖書目錄
目 錄
前言
第1章 舍罕王失算—不可輕視和與積··· 1
1.1 喝汽水··· 1
1.2 求和··· 2
1.2.1 奇因數代數和··· 2
1.2.2 同碼小數和··· 3
1.3 舍罕王失算··· 5
1.4 階乘與階乘和數··· 7
1.4.1 階乘計算··· 7
1.4.2 階乘和數··· 8
1.5 分級計算··· 10
1.5.1 階梯電價··· 10
1.5.2 個人所得稅··· 12
1.6 解不等式··· 13
1.6.1 平方根不等式··· 13
1.6.2 調和級數不等式··· 15
1.6.3 代數和不等式··· 16
1.7 大獎賽現場統分··· 18
1.8 地圖掃描··· 21
第2章 勾股數—古老文明的見證··· 23
2.1 公約數與小公倍數··· 23
2.2 卡普雷卡數與巧妙平方數··· 26
2.2.1 卡普雷卡數··· 26
2.2.2 巧妙平方數··· 30
2.3 勾股數與長方體數··· 32
2.3.1 勾股數··· 32
2.3.2 長方體數··· 35
2.4 完全數與p-完全數··· 38
2.4.1 完全數··· 38
2.4.2 p-完全數··· 39
2.5 水仙花數與蘭德爾數··· 41
2.5.1 水仙花數··· 41
2.5.2 n位蘭德爾數··· 42
7.1 奇數序列運算式··· 131
7.2 埃及分數式··· 133
7.3 橋本分數式··· 136
7.4 優美數式··· 139
7.4.1 優美和式··· 139
7.4.2 優美綜合式··· 142
7.5 對稱運算式··· 145
7.5.1 對稱單運算式··· 145
7.5.2 對稱雙運算式··· 150
7.6 同基因和式··· 152
7.7 同基因積式··· 156
7.7.1 同基因倍積式··· 156
7.7.2 同基因乘積式··· 158
第8章 裴波那契數列—遞推疊代的典範··· 160
8.1 猴子爬山··· 160
8.2 真分數序列··· 163
8.3 裴波那契數列與套用··· 164
8.3.1 裴波那契數列··· 164
8.3.2 條件素數序列··· 166
8.4 雙關係遞推數列··· 167
8.5 等差素數列··· 169
8.6 指數序列··· 171
8.6.1 2-3指數序列··· 171
8.6.2 指數積序列··· 175
8.7 P數序列··· 179
8.8 雙碼二部數序列··· 182
第9章 佩爾方程—分類求解的精準··· 185
9.1 韓信點兵··· 185
9.2 古代趣算··· 187
9.2.1 百雞問題··· 187
9.2.2 羊犬雞兔問題··· 189
9.3 涉及商與餘數的不定方程··· 190
9.4 佩爾方程··· 192
9.4.1 枚舉測試求解··· 192
9.4.2 套用連分數高精度求解··· 193
9.5 水手分椰子··· 196
9.5.1 5個水手分椰子··· 196
9.5.2 n個水手分椰子··· 199
9.6 超越方程··· 201
第10章 r乘積—探索的奧秘··· 204
10.1 刪數字問題··· 204
10.2 分數式值··· 207
10.2.1 分數和接近整數··· 207
10.2.2 分式和中的值··· 208
10.3 子段和··· 209
10.3.1 序列子段··· 209
10.3.2 環子段··· 211
10.4 淘汰機率··· 212
10.5 子數對··· 214
10.5.1 去數字子數對··· 215
10.5.2 偶數子素對··· 217
10.6 背包效益··· 219
10.6.1 可拆背包··· 219
10.6.2 0−1背包··· 220
10.6.3 二維0−1背包··· 224
10.7 插入符號的值··· 226
10.7.1 r乘積··· 226
10.7.2 小r加綜合和··· 230
10.8 長子序列··· 233
10.8.1 長非降子序列··· 233
10.8.2 長公共子序列··· 234
第11章 鐵人三項—幾何智慧型的學問··· 238
11.1 交通方格網··· 238
11.2 矩形剪下構建容器··· 240
11.3 智慧型“鐵人三項” 242
11.3.1 靜水“三項”··· 242
11.3.2 流水“三項”··· 243
11.4 木排漂流··· 245
11.5 智慧型甲蟲··· 248
11.6 點的覆蓋圓··· 251
11.7 凸n邊形的三角形劃分··· 253
11.8 三角函式值··· 256
11.8.1 三角函式加權和小值··· 256
11.8.2 三角形正弦加權和值··· 257
第12章 尾數前移—運算模擬的典範··· 259
12.1 乘數探求··· 259
12.1.1 積為若干個1· 259
12.1.2 積為若干個2017· 260
12.1.3 積為指定構成··· 261
12.2 尾數前移··· 263
12.2.1 限1位尾數··· 263
12.2.2 多位尾數··· 265
12.3 01串積與2碼串積··· 266
12.3.1 01串積··· 266
12.3.2 指定2碼串積··· 268
12.4 二部數積··· 270
12.5 連寫數積··· 273
12.6 圓周率π指定精度計算··· 275
12.7 高精度開方··· 277
12.7.1 開平方··· 277
12.7.2 開立方··· 278
第13章 萬年曆—數表圖案的精彩··· 280
13.1 乘法表··· 280
13.1.1 九九乘法表··· 280
13.1.2 p進制乘法表··· 282
13.2 萬年曆··· 283
13.3 循環賽貝格爾表··· 285
15.3.2 小複雜路徑··· 352
15.4 矩陣子圈··· 355
15.5 硬幣矩陣翻轉··· 357
15.5.1 翻轉m×9矩陣··· 357
15.5.2 翻轉m×n矩陣··· 360
15.5.3 較大矩陣翻轉··· 364
15.6 矩陣路徑··· 367
15.6.1 矩陣小路徑··· 367
15.6.2 方陣對稱路徑··· 369
15.7 矩陣迷宮短通道··· 372
第16章 幻方—古今中外的奇葩··· 376
16.1 構建n階幻方··· 377
16.2 對角正交拉丁方··· 380
16.3 積幻方··· 383
16.3.1 3階積幻方··· 384
16.3.2 4階積幻方··· 385
16.3.3 一組奇數階積幻方··· 387
16.4 素數幻方··· 388
16.4.1 3階素數幻方··· 388
16.4.2 4階素數幻方··· 390
16.4.3 一組素數幻方··· 393
16.5 反幻方··· 396
16.5.1 3階反幻方··· 397
16.5.2 n階反幻方··· 398
第17章 哈密頓圈—人類智慧的瑰寶··· 401
17.1 馬步遍歷··· 401
17.1.1 回溯探求··· 401
17.1.2 遞歸探求··· 404
17.1.3 貪心無回溯探求··· 406
17.2 帶障礙的馬步遍歷··· 409
17.3 馬步型哈密頓圈··· 411
17.4 組合型哈密頓圈··· 414
17.4.1 雙拼組合··· 415
17.4.2 環繞組合··· 417
17.5 帶空洞的哈密頓圈··· 419
第18章 哥德巴赫猜想—不可或缺的驗證··· 423
18.1 均位奇觀··· 423
18.2 角谷猜想··· 425
18.3 黑洞數猜想··· 426
18.3.1 驗證3位黑洞數··· 427
18.3.2 探索4位黑洞數··· 428
18.4 順逆求和轉換對稱數··· 429
18.5 特定洗牌··· 433
18.6 歐拉素數多項式··· 435
18.7 哥德巴赫猜想··· 437
第19章 約瑟夫出圈—智力遊戲的嘗試··· 440
19.1 速算競猜··· 440
19.1.1 數字魔術··· 440
19.1.2 加減得1· 441
19.1.3 極差過關··· 444
19.2 行操作遊戲··· 447
19.2.1 黑白棋子移動··· 447
19.2.2 硬幣正反倒面··· 449
19.2.3 左右報數出列··· 451
19.3 圖形填數··· 452
19.3.1 等和三角形··· 452
19.3.2 和積三角形··· 454
19.4 數字牌遊戲··· 457
19.4.1 按順序排列翻一移一··· 457
19.4.2 翻一移一按順序翻出··· 460
19.5 約瑟夫出圈··· 464
19.5.1 順序圍圈報數出圈··· 464
19.5.2 圍圈報數順序出圈··· 465
19.6 漢諾塔遊戲··· 467
19.6.1 計算移動次數··· 467
19.6.2 展示移動過程··· 468
19.7 數獨遊戲··· 470
19.8 取石子遊戲··· 473
19.8.1 巴什遊戲··· 473
19.8.2 外索夫遊戲··· 475
第20章 奧運五環—圖形動畫的展現··· 478
20.1 烏蘭現象··· 478
20.1.1 烏蘭方螺線··· 479
20.1.2 機器人漫步··· 480
20.2 函式y=sin(x)/x曲線··· 485
20.3 奧運五環··· 487
20.4 小球滾動與彈跳··· 489
20.5 小孔流水演示··· 491
20.6 皇后全控棋盤··· 494
20.6.1 全控n×n棋盤··· 494
20.6.2 全控n×m棋盤··· 499
20.7 矩形最佳化剪下··· 502
附錄A 程式設計雅趣輪塔··· 507
附錄B 在VC 6.0環境下運行C程式
方法簡介··· 508
附錄C 語言常用語法提要··· 514