第1章 计算机和计算机语言 1
1.1 计算机工作原理 1
1.1.1 计算机基本组成 1
1.1.2 计算机工作原理 2
1.1.3 计算机软件 3
1.2 计算机语言 3
1.2.1 计算机语言的发展进程 3
1.2.2 程序设计进程 4
1.2.3 C语言概述 5
1.3 算法和算法描述 15
1.3.1 程序设计的基本方法 15
1.3.2 算法 15
1.3.3 算法的描述 16
1.4 练习题 22
第2章 顺序结构程序设计 24
2.1 问题导引与分析 24
2.1.1 问题导引 24
2.1.2 问题分析 24
2.1.3 解决方案 25
2.2 常量、变量及其数据类型 26
2.2.1 常量 26
2.2.2 变量 27
2.2.3 数据类型 28
2.3 运算符和表达式 28
2.3.1 算术运算 29
2.3.2 关系运算 29
2.3.3 逻辑运算 30
2.3.4 位运算 30
2.3.5 运算的简写 31
2.4 赋值语句 32
2.4.1 赋值语句的格式与应用 32
2.4.2 赋值中的类型转换 33
2.5 输出语句 34
2.5.1 字符输出 34
2.5.2 格式输出 35
2.6 输入语句 38
2.6.1 字符输入 38
2.6.2 格式输入 38
2.7 顺序结构程序设计实例 41
2.7.1 实例2-1 日期写法(date) 41
2.7.2 实例2-2 数字分离(splitnum) 42
2.7.3 实例2-3 时间戳(times) 43
2.8 练习题 45
第3章 选择结构程序设计 47
3.1 问题导引与分析 47
3.1.1 问题导引 47
3.1.2 问题分析 47
3.1.3 解决方案 49
3.2 条件语句 49
3.2.1 条件语句的格式与功能 49
3.2.2 条件语句的应用 51
3.3 开关语句 57
3.3.1 开关语句的格式与功能 57
3.3.2 开关语句的应用 59
3.4 选择结构程序设计实例 65
3.4.1 实例3-1 机器人的移动问题(robot) 65
3.4.2 实例3-2 解方程的困扰(equation) 67
3.4.3 实例3-3 数表读数(table) 70
3.5 练习题 74
第4章 循环结构程序设计 78
4.1 问题导引与分析 78
4.1.1 问题导引 78
4.1.2 问题分析 79
4.1.3 解决方案 80
4.2 for循环语句 80
4.2.1 for循环语句的格式与功能 80
4.2.2 for循环语句的应用 82
4.3 while循环语句 90
4.3.1 while循环语句的格式与功能 90
4.3.2 while循环语句的应用 91
4.3.3 while循环语句与for循环语句的互换 94
4.4 do-while循环语句 96
4.4.1 do-while循环语句的格式与功能 96
4.4.2 do-while循环语句的应用 97
4.4.3 do-while循环语句与while循环语句的互换 102
4.5 循环结构程序设计实例 105
4.5.1 实例4-1 出租车计费(taxicost) 105
4.5.2 实例4-2 价格竞猜(price) 107
4.5.3 实例4-3 满载着爱的代码(heart) 109
4.6 练习题 111
第5章 文件 115
5.1 问题导引与分析 115
5.1.1 问题导引 115
5.1.2 问题分析 117
5.1.3 解决方案 118
5.2 C文件操作 118
5.2.1 文件的打开与关闭 119
5.2.2 文件的读写 120
5.2.3 文件的定位 122
5.2.4 文件的综合操作 124
5.3 文件应用实例 127
5.3.1 实例5-1 笑笑和“最佳运动员”问题——创建测试数据文件举例 127
5.3.2 实例5-2 乐乐和“乒乓球”问题——创建测试数据文件举例 128
5.3.3 实例5-3 文件合并——多文件数据操作举例 130
5.4 练习题 132
第6章 数组 137
6.1 问题导引与分析 137
6.1.1 问题导引 137
6.1.2 问题分析 138
6.1.3 解决方案 140
6.2 一维数组 140
6.2.1 一维数组的定义 140
6.2.2 一维数组的引用 140
6.2.3 一维数组的初始化 141
6.2.4 一维数组的应用 142
6.3 二维数组 152
6.3.1 二维数组的定义 152
6.3.2 二维数组的引用 152
6.3.3 二维数组的初始化 152
6.3.4 二维数组的应用 153
6.4 数组综合应用程序设计实例 157
6.4.1 实例6-1 火柴棒等式(matches)——枚举法应用举例 157
6.4.2 实例6-2 集合删数(number)——贪心法应用举例 160
6.4.3 实例6-3 马拦过河卒(soldier)——递推法应用举例 163
6.5 练习题 165
第7章 函数 173
7.1 问题导引与分析 173
7.1.1 问题导引 173
7.1.2 问题分析 176
7.1.3 解决方案 179
7.2 函数 179
7.2.1 函数的定义 179
7.2.2 函数的调用 180
7.2.3 函数的应用 181
7.3 函数的数据传递 191
7.3.1 函数的调用在内存中的实现 191
7.3.2 全局变量与局部变量 192
7.4 函数的嵌套 194
7.4.1 函数的嵌套 194
7.4.2 递归与递归的实现机制 195
7.4.3 递归程序设计 198
7.5 函数综合应用程序设计实例 205
7.5.1 实例7-1 一元三次方程求解(equation)——分治法应用举例 205
7.5.2 实例7-2 八皇后问题(queen)——回溯法应用举例 208
7.5.3 实例7-3 积木覆盖(puzzle)——回溯法应用举例 210
7.6 练习题 212
第8章 字符串 219
8.1 问题导引与分析 219
8.1.1 问题导引 219
8.1.2 问题分析 221
8.1.3 解决方案 222
8.2 字符串 222
8.2.1 字符串的定义 222
8.2.2 字符串的输入与输出 223
8.2.3 字符串函数 225
8.2.4 字符串的应用 227
8.3 字符串综合应用程序设计实例 231
8.3.1 实例8-1 ISBN号(ISBN)——模拟法应用举例 231
8.3.2 实例8-2 连接整数(1ink)——贪心法应用举例 233
8.3.3 实例8-3 单词接龙(words)——回溯法应用举例 235
8.4 练习题 238
第9章 枚举类型、结构体和共用体 243
9.1 问题导引与分析 243
9.1.1 问题导引 243
9.1.2 问题分析 245
9.1.3 解决方案 246
9.2 枚举类型 246
9.2.1 枚举类型的定义 246
9.2.2 枚举类型的应用 247
9.3 结构体 249
9.3.1 结构体的定义 251
9.3.2 结构体的操作 252
9.3.3 结构体的应用 253
9.4 共用体 255
9.4.1 共用体的定义 255
9.4.2 共用体的应用 257
9.5 枚举类型、结构体和共用体综合应用程序设计实例 258
9.5.1 实例9-1 控制指令(order)——枚举类型应用举例 258
9.5.2 实例9-2 奖学金(scholar)——结构体应用举例 260
9.5.3 实例9-3 作业调度方案问题(jsp)——结构体应用举例 263
9.6 练习题 267
第10章 指针类型 271
10.1 问题导引与分析 271
10.1.1 问题导引 271
10.1.2 问题分析 273
10.1.3 解决方案 274
10.2 指针及其应用 274
10.2.1 指针变量 274
10.2.2 指针与数组 276
10.2.3 指针与函数 277
10.2.4 指针与结构体 278
10.3 链表结构 280
10.3.1 链表的基本结构 281
10.3.2 单向链表的基本操作 282
10.3.3 其他链表结构 289
10.4 指针类型综合应用程序设计实例 290
10.4.1 实例10-1 合并珠子(merge)——链表的合并操作举例 290
10.4.2 实例10-2 约瑟夫问题(Joseph)——链环的应用举例 293
10.4.3 实例10-3 走出泥潭(route)——应用链表求解路径问题举例 295
10.5 练习题 298
第11章 综合程序设计 304
11.1 贪心法专题 304
11.1.1 贪心法思想 306
11.1.2 购买贺年卡——生活中的贪心法举例 307
11.1.3 设置喷水池——覆盖问题中的贪心法举例 309
11.1.4 筛选游戏卡——数学问题中的贪心法举例 311
11.1.5 舞伴的搭配——匹配问题中的贪心法举例 313
11.2 递推法专题 314
11.2.1 递推法思想 317
11.2.2 淘气的钥匙——错排问题中的递推法举例 317
11.2.3 生日蛋糕——几何问题中的递推法举例 318
11.2.4 交费金额——存在性问题中的递推法举例 319
11.2.5 谁去谁留——概率统计问题中的递推法举例 321
11.3 高精度运算专题 322
11.3.1 高精度运算思想 324
11.3.2 加减速算——高精度加法和减法的应用举例 325
11.3.3 错误序号——递推法与高精度乘法的结合举例 328
11.3.4 质数因子——枚举法与高精度除法的结合举例 329
11.3.5 再分麦子——分治法与高精度乘法的结合举例 331
11.4 搜索法专题 333
11.4.1 基础搜索思想 336
11.4.2 迷宫问题——搜索法的简单应用举例 338
11.4.3 零点游戏——搜索参数的选择举例 339
11.4.4 01距离——搜索对象的选择举例 343
11.4.5 切割网线——搜索法中的剪枝技巧举例 345
参考文献 349