第1章 C语言入门 1
1.1 程序 1
1.1.1 程序的一般概念 2
1.1.2 计算机程序与计算机程序设计语言 3
1.2 C语言程序中的数据 6
1.2.1 C语言程序的基本数据类型 6
1.2.2 变量 7
1.2.3 常量 9
1.3 C语言程序中的基本操作 11
1.3.1 运算符与表达式 11
1.3.2 算术运算符与算术表达式 12
1.3.3 关系运算符与关系表达式 13
1.3.4 逻辑运算符与逻辑表达式 14
1.3.5 条件运算符与条件表达式 15
1.3.6 复合赋值运算符 15
1.4 C语言程序过程组织 16
1.4.1 C程序语句 17
1.4.2 函数 20
1.4.3 库函数 24
1.4.4 编译预处理 30
1.5 程序开发的一般过程 32
习题 37
第2章 基本算法 43
2.1 判断与选择 44
2.1.1 三数中取大 44
2.1.2 分情形处理 49
语法小结(1)——程序的分支结构 54
2.2 迭代与递推 59
2.2.1 大奖赛评分程序 59
2.2.2 Fibonacci数列 66
2.2.3 吉普车穿越沙漠问题 68
语法小结(2)——程序的循环结构 72
2.3.1 搬砖问题 74
2.3 穷举 74
2.3.2 求素数 77
2.3.3 推断名次 80
语法小结(3)——流程转向控制 85
2.4 模拟 86
2.4.1 随机抽样 86
2.4.2 蒙特卡罗法——求π的近似值 89
2.4.3 事件步长法——中子扩散问题 90
2.4.4 时间步长法——导弹追击飞机 93
2.5 递归 97
2.5.1 计算n!的递归函数 98
2.5.2 汉诺塔问题 100
语法小结(4)——变量的存储类型 104
第3章 组织数据 111
3.1 数组 112
3.1.1 洗扑克牌 112
3.1.2 气泡排序 117
3.1.3 成绩处理 120
3.1.4 日期转换 122
3.1.5 字符串操作 123
语法小结(5)——数组 129
3.2.1 用指针将数组元素倒放 135
3.2 指针 135
3.2.2 基于指针的字符串操作 139
3.2.3 查找二维数组中的最大元素 140
3.2.4 求两个向量和的函数 143
语法小结(6)——指针类型 145
3.3 用户定制数据类型 149
3.3.1 枚举应用——明天是星期几 149
3.3.2 结构体应用——学籍管理 152
3.3.3 共用体应用——学校人员管理 162
语法小结(7)——用户定制数据类型 164
3.4.1 写若干行字符串到文本文件 168
3.4 文件 168
3.4.2 文件复制 170
语法小结(8)——文件 172
3.5 堆栈和队列 181
3.5.1 后序表达式的求值 181
3.5.2 魔术师翻牌 188
第4章 算法设计策略 197
4.1 分治策略 198
4.1.1 二分查找 198
4.1.2 快速排序 200
4.1.3 自行车带人问题 205
4.2.1 迷宫问题 209
4.2 回溯策略 209
4.3 贪心策略 221
4.3.1 旅行费用问题 221
4.3.2 删数问题 224
4.4 分枝定界策略 228
4.4.1 最小耗费问题 229
4.5 动态规划 235
4.5.1 背包问题 235
附录A C语言运算符的优先级和结合方向 243
附录B C语言关键字及其用途 247
参考文献 249