第1章 磨刀不误砍柴工 1
1.1 Code::Blocks 1
1.1.1 新建工程 1
1.1.2 多工程切换 4
1.1.3 单步调试程序 5
1.1.4 插桩法调试程序 10
1.1.5 常用操作 12
1.1.6 解决非正常编译 12
1.1.7 设置C99 13
1.2 知码开门 14
1.2.1 基本功能 14
1.2.2 程序提交方法 15
1.2.3 查看结果 17
1.2.4 提交历史 17
1.2.5 报表 18
1.2.6 相似度 18
1.2.7 本地测试与在线提交 19
1.3 UPC Online Judge—ACM 19
1.3.1 基本功能 19
1.3.2 日常练习 20
1.3.3 ACM术语 22
第2章 顺序程序设计 23
2.1 数据类型 23
2.1.1 数字自动应答器(知码开门4.1难度★) 23
2.1.2 混合类型数据格式化输入(知码开门4.2难度★★) 24
2.1.3 鸡兔同笼(知码开门4.3难度★) 25
2.2 键盘输入和屏幕输出 26
2.2.1 printf和scanf(知码开门4.4难度★) 26
2.2.2 整数四则运算(知码开门4.5难度★) 26
2.2.3 字符的ASCII值(知码开门4.6难度★)(重复题目) 27
2.3 数位分离 28
2.3.1 时间戳(知码开门4.7难度★★) 28
2.3.2 超市硬币处理机(知码开门4.8难度★) 29
2.3.3 冰箱的温度(知码开门4.9难度★) 30
2.3.4 计算火车运行时间(知码开门4.10难度★) 31
2.4 趣味计算 33
2.4.1 ACM罚时(知码开门4.11难度★) 33
2.4.2 旅行时间和花费(知码开门4.12难度★) 34
2.4.3 战斗机加速度(知码开门4.13难度★) 35
2.4.4 简单加密(知码开门4.14难度★) 36
2.4.5 Theatre Square(知码开门4.15难度★★) 37
题目推荐 38
第3章 选择程序设计 39
3.1 分段函数 39
3.1.1 最大值(知码开门5.1难度★) 39
3.1.2 分段函数(知码开门5.2难度★) 40
3.1.3 绝对值(知码开门5.3难度★) 41
3.2 单分支控制条件语句 42
3.2.1 判断闰年(知码开门5.4难度★) 42
3.2.2 奇偶数(知码开门5.5难度★) 43
3.2.3 温度转换(知码开门5.6难度★) 44
3.3 多分支控制条件语句 45
3.3.1 出租车计费(知码开门5.7难度★★) 45
3.3.2 四位数拆分(知码开门5.8难度★★) 47
3.3.3 整数位数判断(知码开门5.9难度★) 48
3.3.4 三角形形状判断(知码开门5.10难度★★) 49
3.3.5 字符类型判断(知码开门5.11难度★) 51
3.4 多分支结构switch 52
3.4.1 天数判断(知码开门5.12难度★) 52
3.4.2 英文表示星期几(知码开门5.13难度★) 53
3.5 逻辑题 55
3.5.1 小明赴约会(知码开门5.14难度★) 55
3.5.2 三天打鱼两天晒网(知码开门5.15难度★) 56
3.5.3 天平找小球(知码开门5.16难度★★) 57
3.6 趣味计算 58
3.6.1 邮局寄包裹(知码开门5.17难度★★) 58
3.6.2 花钱买衣服(知码开门5.18难度★★) 59
3.6.3 苹果和虫子(知码开门5.19难度★★★) 60
3.6.4 算年龄(知码开门5.20难度★★) 62
3.6.5 计算时钟的夹角(知码开门5.21难度★★★) 63
题目推荐 65
第4章 循环程序设计 66
4.1 序列求解 66
4.1.1 求1~n的和(知码开门6.1难度★) 66
4.1.2 正负序列(知码开门6.2难度★) 67
4.1.3 斐波那契序列(知码开门6.3难度★) 68
4.1.4 最大数问题(知码开门6.4难度★) 70
4.2 迭代法 72
4.2.1 迭代法求平方根(知码开门6.5难度★★) 72
4.2.2 cos(x)-x=0(知码开门6.6难度★★) 73
4.3 多组输入 74
4.3.1 鸡兔同笼又来啦(知码开门6.7难度★) 74
4.3.2 骑车还是走路(知码开门6.8难度★★) 75
4.4 穷举法 77
4.4.1 与7无关数的平方和(知码开门6.9难度★) 77
4.4.2 马戏团(知码开门6.10难度★★) 78
4.4.3 等式推导(知码开门6.11难度★★) 81
4.5 整数拆分 83
4.5.1 水仙花数(知码开门6.12难度★) 83
4.5.2 等于阶乘和的三位数(知码开门6.13难度★★) 84
4.5.3 回文数(知码开门6.14难度★★) 87
4.6 有意思的数 89
4.6.1 自守数(知码开门6.15难度★) 89
4.6.2 完数(知码开门6.16难度★★) 91
4.6.3 素数(知码开门6.17难度★★) 92
4.6.4 最大公约数(知码开门6.18难度★★) 96
4.6.5 分数四则运算(知码开门6.19难度★★★) 97
4.7 图形输出 100
4.7.1 一行星号(知码开门6.20难度★) 100
4.7.2 打印平行四边形(知码开门6.21难度★) 101
4.7.3 X图形(知码开门6.22难度★★) 103
4.7.4 菱形图案(知码开门6.23难度★★★) 106
4.8 数据溢出 108
4.8.1 贪吃的猴子(知码开门6.24难度★★) 108
4.8.2 求e的值(知码开门6.25难度★★) 109
4.8.3 高次方的尾数(知码开门6.26难度★★★) 111
4.8.4 阶乘尾数零的个数(知码开门6.27难度★★★) 112
4.9 趣味计算 113
4.9.1 角谷猜想(知码开门6.28难度★★) 113
4.9.2 The 3n+1 problem(知码开门6.29难度★★★) 114
4.9.3 四方定理(知码开门6.30难度★★★) 116
4.9.4 哥德巴赫猜想(知码开门6.31难度★★★) 118
4.9.5 水池注水(知码开门6.3 2难度★★★) 120
题目推荐 122
第5章 函数 123
5.1 基本函数 123
5.1.1 最大值(知码开门7.1难度★) 123
5.1.2 数的合并(知码开门7.2难度★) 124
5.1.3 素数的判断(知码开门7.3难度★) 125
5.1.4 阶乘(知码开门7.4难度★) 126
5.1.5 求级数(知码开门7.5难度★) 127
5.1.6 浮点数四舍五入(知码开门7.6难度★) 129
5.1.7 长整型截短(知码开门7.7难度★) 130
5.1.8 偶数分解(知码开门7.8难度★) 131
5.1.9 公式求解(知码开门7.9难度★) 133
5.2 递归函数 134
5.2.1 杀鸡用牛刀(知码开门7.10难度★★★) 134
5.2.2 求最大公约数(知码开门7.11难度★★★) 136
5.2.3 求数列的第N项(知码开门7.12难度★) 137
5.3 趣味计算 139
5.3.1 富翁与骗子(知码开门7.13难度★★★) 139
5.3.2 Hanoi(汉诺)塔问题(知码开门7.14难度★★★) 141
题目推荐 143
第6章 数组 144
6.1 数组输入和输出 144
6.1.1 小明摘苹果(知码开门8.1难度★) 144
6.1.2 A+B Format(知码开门8.2难度★★) 145
6.1.3 矩阵存储(知码开门8.3难度★) 147
6.1.4 杨辉三角(知码开门8.4难度★★) 148
6.1.5 倒立杨辉三角(知码开门8.5难度★★) 150
6.2 数组统计 152
6.2.1 挑选小白鼠(知码开门8.6难度★) 152
6.2.2 谁能出线(知码开门8.7难度★) 156
6.2.3 歌手大奖赛(知码开门8.8难度★) 158
6.2.4 Box of Bricks(知码开门8.9难度★) 159
6.2.5 买股票(知码开门8.10难度★) 161
6.2.6 矩阵最大值(知码开门8.11难度★) 162
6.2.7 数组周边元素(知码开门8.12难度★) 164
6.2.8 考试成绩(知码开门8.13难度★) 166
6.2.9 找鞍点(知码开门8.14难度★★) 168
6.2.10 Xman修剪花圃(知码开门8.15难度★★) 170
6.3 数组位置变换 173
6.3.1 移动数组元素(知码开门8.16难度★★) 173
6.3.2 交换理发师傅(知码开门8.17难度★) 175
6.3.3 互换礼物(知码开门8.18难度★) 177
6.3.4 矩阵转置(知码开门8.19难度★★) 179
6.3.5 图像旋转(知码开门8.20难度★★) 181
6.4 数组查找 184
6.4.1 顺序查找(知码开门8.21难度★) 184
6.4.2 寻找重复数字(知码开门8.22难度★★) 186
6.4.3 寻找非共有数字(知码开门8.23难度★★) 189
6.4.4 二分查找(知码开门8.24难度★★) 192
6.5 数组排序 195
6.5.1 军训排队(知码开门8.25难度★) 195
6.5.2 各位数字组成的最大数(知码开门8.26难度★★) 197
6.5.3 “顺”还是“不顺”(知码开门8.27难度★★) 201
6.5.4 第二价格竞拍(知码开门8.28难度★★) 203
6.5.5 合唱队形(知码开门8.29难度★★) 206
6.5.6 输油管道(知码开门8.30难度★★★) 207
6.6 数组应用 209
6.6.1 顺序编号(知码开门8.31难度★★) 209
6.6.2 出现最多的数字(知码开门8.32难度★★) 211
6.6.3 门禁系统(知码开门8.33难度★★) 213
6.6.4 统计素数(知码开门8.34难度★★) 215
6.6.5 南门的树(知码开门8.35难度★★) 218
6.6.6 百灯百灭(知码开门8.36难度★★) 220
6.6.7 到底有多远(知码开门8.37难度★★) 222
6.6.8 黑色星期五(知码开门8.38难度★★) 225
6.6.9 起床的烦恼(知码开门8.39难度★★★) 228
6.6.10 装箱问题(知码开门8.40难度★★) 231
6.6.11 纪念品分组(知码开门8.41难度★★★) 233
题目推荐 235
第7章 字符串 236
7.1 字符串输入/输出 236
7.1.1 不含空格的字符串输入/输出(知码开门10.1难度★) 236
7.1.2 包含空格的字符串输入/输出(知码开门10.2难度★) 237
7.2 字符串转换 238
7.2.1 字符变换(知码开门10.3难度★) 238
7.2.2 数字提取(知码开门10.4难度★) 240
7.2.3 数据提取(知码开门10.5难度★★) 241
7.2.4 Your Ride Is Here(知码开门10.6难度★★) 242
7.2.5 YY and YY again(知码开门10.7难度★★) 244
7.2.6 单词译码(知码开门10.8难度★★) 246
7.2.7 单词缩写(知码开门10.9难度★★★) 249
7.3 字符串统计 251
7.3.1 字符出现的次数(知码开门10.10难度★) 251
7.3.2 字符出现的频率(知码开门10.11难度★★) 253
7.3.3 单词统计Ⅰ(知码开门10.12难度★) 254
7.3.4 字母简化(知码开门10.13难度★) 255
7.3.5 合法标识符(知码开门10.14难度★) 256
7.3.6 安全密码(知码开门10.15难度★★) 258
7.4 字符串删除 260
7.4.1 删除指定字符(知码开门10.16难度★) 260
7.4.2 删除指定字符串(知码开门10.17难度★) 262
7.4.3 删除重复字符(知码开门10.18难度★) 263
7.4.4 字符串删除(知码开门10.19难度★★) 265
7.4.5 索马里海盗(知码开门10.20难度★) 266
7.5 字符串合并 267
7.5.1 字符接龙Ⅰ(知码开门10.21难度★) 267
7.5.2 字符接龙Ⅱ(知码开门10.22难度★★) 268
7.5.3 指定位置插入字符串(知码开门10.23难度★★) 272
7.6 字符串比较 274
7.6.1 字符串比较大小(知码开门10.24难度★) 274
7.6.2 相同的字符串(知码开门10.25难度★) 276
7.6.3 独一无二的字符串(知码开门10.26难度★★) 278
7.6.4 回文串(知码开门10.27难度★) 280
7.7 字符串排序 282
7.7.1 字符串重排列(知码开门10.28难度★★) 282
7.7.2 城市名排序(知码开门10.29难度★★) 284
7.8 字符串查找 286
7.8.1 字符第一次出现的位置(知码开门10.30难度★) 286
7.8.2 字符最后一次出现的位置(知码开门10.31难度★) 288
7.8.3 找第一个只出现一次的字符(知码开门10.32难度★★) 290
7.8.4 上课点名(知码开门10.33难度★★) 291
7.8.5 小明去过的城市(知码开门10.34难度★★) 293
7.8.6 GLB串(知码开门10.35难度★★) 294
7.8.7 字符串匹配(知码开门10.36难度★★★) 296
7.9 高精度计算 300
7.9.1 营业额(知码开门10.37难度★★★) 300
7.9.2 大数的乘法(知码开门10.38难度★★★) 302
7.10 综合运用 304
7.10.1 身份证的奥秘(知码开门10.39难度★★) 304
7.10.2 镜像文字(知码开门10.40难度★) 306
7.10.3 GLB串升级版(知码开门10.41难度★★) 307
7.10.4 ISBN号码(知码开门 10.42难度★★★) 309
7.10.5 垂直柱状图(知码开门10.43难度★★★) 311
7.10.6 奇怪的A+B(知码开门10.44难度★★★) 313
7.10.7 库函数技巧(知码开门10.45难度★) 314
题目推荐 316
第8章 指针和数组 317
8.1 函数参数传递变量地址 317
8.1.1 两数合并(知码开门9.1难度★) 317
8.1.2 生成新数(知码开门9.2难度★) 318
8.1.3 浮点数四舍五入(知码开门9.3难度★) 319
8.2 函数参数传递数组地址 320
8.2.1 统计奇偶数(知码开门11.1难度★) 320
8.2.2 删除字符(知码开门11.2难度★) 322
8.2.3 字符移位(知码开门11.3难度★★) 323
8.2.4 组成新串(知码开门11.4难度★★) 324
8.2.5 列优先存放(知码开门11.5难度★★) 326
8.2.6 删除星号(知码开门11.6难度★★★) 327
8.3 函数返回值 329
8.3.1 素数(知码开门11.7难度★) 329
8.3.2 字符串转换成整数(知码开门11.8难度★★) 331
8.3.3 统计子串(知码开门11.9难度★★) 332
8.3.4 删除指定字符(知码开门11.10难度★★) 333
题目推荐 335
第9章 结构体 336
9.1 基础应用 336
9.1.1 求平面上两点距离(知码开门12.1难度★) 336
9.1.2 有理数比较(知码开门12.2难度★★) 337
9.1.3 加密(知码开门12.3难度★) 339
9.1.4 通讯录(知码开门12.4难度★★★) 341
9.2 信息修改与查找 343
9.2.1 修改学生信息(知码开门12.5难度★) 343
9.2.2 修改各科成绩(知码开门12.6难度★★) 345
9.2.3 指定范围查找(知码开门12.7难度★★) 346
9.3 结构体排序 348
9.3.1 学生信息的排序(知码开门12.8难度★★) 348
9.3.2 数据分析小试身手(ACM 3376难度★★★) 350
9.3.3 中超联赛(ACM 3411难度★★★) 351
题目推荐 354
第10章 文件 355
10.1 文件操作 355
10.1.1 文件复制(难度★) 355
10.1.2 文件合并(难度★) 356
10.1.3 文件比较(难度★★) 357
10.2 文件综合 358
10.2.1 文件分割(难度★★) 358
10.2.2 文件加密(难度★★) 360
参考文献 363