第1章 绪论/ 1
1.1 程序设计/ 2
1.1.1 程序设计与算法 2
1.1.2 程序设计语言 3
1.2 计算思维/ 4
1.2.1 问题的提出 4
1.2.2 计算思维能力培养 5
1.2.3 程序设计能力与计算思维能力/ 7
1.3 C程序开发的基本过程/ 8
1.3.1 安装Visual C++ 6.0集成开发环境/ 8
1.3.2 利用Visual C++ 6.0集成开发环境运行一个C程序/ 9
1.3.3 运行C程序的基本过程/ 13
第2章 C语言程序设计基础/ 14
2.1 C语言程序的基本结构和特点/ 15
2.1.1 导例:输入生日并显示/ 15
2.1.2 导例:比大小/ 16
2.1.3 C程序的基本结构/ 18
2.1.4 C语言的基本特点/ 19
2.2 基本数据类型与基本输入/输出 19
2.2.1 导例:汇率换算/ 20
2.2.2 导例:字符加密/ 21
2.2.3 导例:考核通过了吗/ 23
2.2.4 C语言提供的基本数据类型/ 24
2.2.5 标识符与关键字、常量与变量/ 26
2.2.6 运算符与表达式/ 28
2.2.7 基本的输入/输出/ 30
2.3 C程序的基本控制结构/ 32
2.3.1 导例:计算圆的周长和面积/ 32
2.3.2 导例:今年是闰年吗/ 33
2.3.3 导例:求解一元二次方程/ 34
2.3.4 导例:计算存款利息/ 36
2.3.5 导例:计算n!/ 38
2.3.6 导例:求解两个数的最大公约数/ 39
2.3.7 导例:计算π的近似值/ 40
2.3.8 顺序控制语句:赋值语句、函数调用语句/ 41
2.3.9 选择控制语句:if…else、switch语句/ 42
2.3.10 循环控制语句:while语句、do…while语句和for语句/ 44
2.3.11 转向语句:break和continue语句/ 45
2.4 综合案例/ 46
2.4.1 导例:可以构成三角形吗/ 46
2.4.2 导例:列出小于n的全部质数/ 48
2.4.3 导例:诚实族和说谎族/ 50
2.4.4 导例:制作电子月历/ 52
2.4.5 程序设计风格/ 56
2.4.6 程序调试的基本方法/ 57
习题/ 59
第3章 算法初步/ 64
3.1 算法的基本概念/ 65
3.1.1 导例:猜猜商品价格/ 65
3.1.2 导例:过河游戏/ 66
3.1.3 算法定义与基本特征/ 68
3.1.4 算法设计的基本过程/ 68
3.1.5 算法的评价标准/ 69
3.2 算法的描述/ 69
3.2.1 导例:生活中的流程/ 69
3.2.2 导例:猜猜商品价格的流程图/ 71
3.2.3 算法的描述/ 72
3.2.4 问题求解的过程/ 73
3.3 常用算法/ 74
3.3.1 导例:古堡算式问题/ 74
3.3.2 导例:神殿寻宝/ 75
3.3.3 导例:大臣的旅费/ 77
3.3.4 穷举法/ 81
3.3.5 递归算法/ 82
3.3.6 动态规划法/ 83
习题/ 84
第4章 函数/ 85
4.1 库函数 86
4.1.1 导例:平方根表/ 87
4.1.2 导例:随机生成一张扑克牌/ 89
4.1.3 库函数使用方法/ 92
4.1.4 常用的库函数/ 93
4.2 自定义函数/ 94
4.2.1 导例:阶乘累加和∑ n i=1 i! / 95
4.2.2 导例:三色球问题/ 97
4.2.3 函数的定义、声明和调用/ 99
4.2.4 函数调用过程分析/ 102
4.3 函数的参数传递与返回值/ 102
4.3.1 导例:爬动的蠕虫/ 103
4.3.2 导例:日K蜡烛图/ 105
4.3.3 函数的参数传递/ 107
4.3.4 函数的返回值/ 109
4.4 递归函数 111
4.4.1 导例:假币问题(三分法)/ 111
4.4.2 导例:Fibonacci数列/ 113
4.4.3 递归函数的执行过程/ 116
4.4.4 递归函数的效率分析/ 119
4.5 局部变量、全局变量与变量作用域/ 121
4.5.1 导例:富翁与骗子/ 121
4.5.2 导例:简易库存存取货管理/ 124
4.5.3 局部变量和全局变量/ 129
4.5.4 变量的作用域和生存期/ 129
4.6 函数综合应用/ 133
4.6.1 导例:模拟银行ATM机存取款/ 134
4.6.2 导例:贷款计算器/ 140
4.6.3 程序主体框架的设计与实现/ 145
4.6.4 模块化程序设计的基本特征/ 146
习题/ 147
第5章 组合数据类型/ 152
5.1 数组/ 153
5.1.1 导例:如何存储和操作某班C语言课程的成绩/ 153
5.1.2 导例:利用选择排序实现对某班C语言课程成绩的排序/ 154
5.1.3 导例:利用冒泡排序算法实现对某班C语言课程成绩的排序/ 157
5.1.4 导例:利用二分查找算法检索某个成绩的排名/ 159
5.1.5 导例:学分绩点(GPA)计算/ 162
5.1.6 导例:统计字符串中字符的信息/ 164
5.1.7 一维数组/ 165
5.1.8 二维数组/ 166
5.1.9 字符数组及字符串/ 167
5.1.10 数组作为函数参数/ 170
5.2 结构类型/ 171
5.2.1 导例:手机类型/ 171
5.2.2 导例:学生类型/ 173
5.2.3 结构类型的基本操作/ 174
5.2.4 结构数组/ 176
5.2.5 结构类型作为函数的参数与返回类型/ 176
5.3 指针类型/ 177
5.3.1 导例:寻找武功秘籍/ 178
5.3.2 导例:打印输出所有人的出勤情况/ 179
5.3.3 导例:求一次实验的样本方差/ 181
5.3.4 导例:月份名称的翻译/ 184
5.3.5 导例:涨工资了(工资改变了吗)/ 185
5.3.6 导例:找出单行文本中第一个最长的单词/ 187
5.3.7 指针的相关概念与定义/ 191
5.3.8 指针的基本操作、动态内存分配和释放/ 192
5.3.9 指针型数组/ 193
5.3.10 指针类型作为函数的参数与返回类型/ 193
5.4 链表/ 195
5.4.1 导例:快递物流记录/ 195
5.4.2 导例:老鹰捉小鸡/ 198
5.4.3 链表的定义/ 203
5.4.4 链表的创建、销毁与基本操作/ 204
习题/ 206
第6章 数据结构/ 212
6.1 栈/ 213
6.1.1 导例:简单背包问题/ 213
6.1.2 导例:数制转换问题/ 216
6.1.3 栈的相关概念与基本操作/ 219
6.1.4 利用栈组织数据的基本特征/ 223
6.2 队列/ 223
6.2.1 导例:舞伴问题/ 223
6.2.2 导例:过河问题/ 228
6.2.3 队列的相关概念与基本操作/ 236
6.2.4 利用队列组织数据的基本特征/ 242
6.3 二叉树/ 242
6.3.1 导例:爬树问题/ 243
6.3.2 导例:查找问题/ 246
6.3.3 二叉树的相关概念与基本操作/ 251
6.3.4 利用二叉树组织数据的基本特征/ 254
6.4 综合应用举例/ 255
6.4.1 导例:八皇后问题/ 255
6.4.2 导例:叫号排队问题/ 260
6.4.3 导例:电文编码问题/ 267
6.4.4 数据结构在程序设计中的作用/ 273
6.4.5 数据结构初论/ 274
习题/ 278
第7章 数据外部存储/ 283
7.1 文件/ 284
7.1.1 导例:读取通讯录文件/ 284
7.1.2 导例:从通讯录文件中查询联系人/ 286
7.1.3 导例:备份通讯录文件/ 289
7.1.4 文件的相关基本概念/ 291
7.1.5 文件的基本操作/ 292
7.2 数据库应用/ 296
7.2.1 导例:创建MySQL数据库/ 296
7.2.2 导例:从MySQL数据库中读/写通讯录/ 299
7.2.3 C程序对MySQL数据库的操作/ 303
习题/ 306
第8章 综合案例/ 307
8.1 大整数运算问题/ 308
8.2 校园卡管理/ 310
8.3 约瑟夫问题/ 315
8.4 分子动力学模拟/ 317
8.5 网络通信——聊天/ 318
8.6 五子棋游戏/ 319
8.7 交通信号灯的自动控制/ 321
参考文献/ 324