本书主要阐述了C语言程序设计的全部内容,并将全书划分成两个部分。*部分包括第1章~第6章,主要阐述了C语言程序设计的基础知识及计算机算法的初步内容;第二部分包括第7章~第9章,主要列举了一些综合性较强的实例,将讲述了一些与实践环节有关的内容。
本书从解决实际问题的基点出发,强化算法设计的基本方法,并由此阐述C语言为实现算法而提供的各种技术支持。
1.丰富了以指针运算为中心的程序设计教学内容
2.介绍了Visual Studio 2010集成开发环境和EasyX图形库,以及Dev-C 环境
3.介绍了算法初步与图形程序设计实例
4.提供不同专业需求的教学资源
廖湖声,教授,博士生导师,北京工业大学计算机学院软件学科部主任,软件课程群责任教授,北京市重点建设学科计算机软件与理论学科带头人。主要从事计算机软件与理论的科研与教学工作;曾作为访问学者参加日本、美国、丹麦等国多所大学的研究工作,曾被评选为北京市高等学校青年学科带头人,入选北京市跨世纪人才工程。
第1章 C语言基础知识 1
1.1 计算机与程序设计语言 1
1.1.1 计算机系统的基本组成 1
1.1.2 程序设计 3
1.1.3 程序设计语言 3
1.1.4 程序设计的学习方法 4
1.2 C程序的基本结构和运行过程 5
1.2.1 几个简单的C程序 5
1.2.2 运行C程序的基本过程 8
1.2.3 使用Visual Studio 2010集成环境开发C程序的过程 9
1.2.4 使用Dev-C 集成环境开发C程序的过程 13
1.3 数据类型、常量、变量、输入/输出与基本运算 16
1.3.1 基本数据类型与数据的表示 16
1.3.2 常量 17
1.3.3 变量、变量的存储与赋值 18
1.3.4 基本的输入/输出 21
1.3.5 算术运算符和算术表达式 25
1.4 标准函数和EasyX库函数 28
1.4.1 数学函数 29
1.4.2 EasyX图形处理函数库 30
1.5 本章小结 32
习题 35
上机练习题 35
自测题 37
第2章 C语言的基本控制结构 39
2.1 顺序结构 39
2.2 选择结构 40
2.2.1 关系运算与逻辑运算 40
2.2.2 if语句 42
2.2.3 多路选择和switch语句 44
2.2.4 选择结构的应用实例:复数四则运算 45
2.3 循环结构 48
2.3.1 while语句 48
2.3.2 for语句 50
2.3.3 do while语句 51
2.3.4 break语句和continue语句 52
2.3.5 循环语句的应用实例 53
2.4 程序调试的基本方法 55
2.4.1 错误分类和解决方法 56
2.4.2 静态程序调试 57
2.4.3 动态程序跟踪 57
2.5 本章小结 58
习题 60
上机练习题 61
自测题 62
第3章 计算机算法初步 64
3.1 算法的概念 64
3.1.1 使用计算机求解问题的一般过程 64
3.1.2 数据对象与算法描述 65
3.1.3 流程图应用实例:一元二次方程求解 66
3.2 穷举法 69
3.2.1 概述 69
3.2.2 穷举法应用实例1:素数的判断 69
3.2.3 穷举法应用实例2:百钱买百鸡 71
3.3 递推与迭代法 73
3.3.1 概述 73
3.3.2 递推与迭代法应用实例1:等比数列求和 74
3.3.3 递推与迭代法应用实例2:求圆周率 75
3.4 循环不变式的概念和应用 77
3.4.1 循环不变式 77
3.4.2 程序设计案例中的循环不变式 79
3.5 本章小结 82
习题 83
上机练习题 83
自测题 84
第4章 数据的组织结构(一) 86
4.1 数组类型 86
4.1.1 数组类型的应用背景 86
4.1.2 一维数组类型的定义 87
4.1.3 一维数组的初始化 88
4.1.4 一维数组元素的赋值与引用 89
4.2 使用一维数组组织数据的应用实例 90
4.2.1 查找问题 91
4.2.2 排序问题 95
4.2.3 曲线的表示与绘制 98
4.3 字符串的组织 100
4.3.1 字符串的组织形式 100
4.3.2 字符串的引用 101
4.3.3 字符串的输入/输出 101
4.4 字符串处理函数及应用实例 102
4.4.1 常用字符串处理函数 102
4.4.2 实例:轨迹绘制中的坐标显示 103
4.4.3 用户注册程序 104
4.5 二维数组 106
4.5.1 二维数组的定义 106
4.5.2 二维数组的应用实例 107
4.6 本章小结 109
习题 110
上机练习题 112
自测题 113
第5章 程序的组织结构 115
5.1 函数概述 115
5.2 自定义函数 117
5.2.1 函数的定义 117
5.2.2 函数的调用 118
5.2.3 自定义函数的设计与应用实例 122
5.3 函数与数组的应用实例:冒泡排序 127
5.4 递归算法与递归函数 130
5.4.1 递归算法与递归函数概述 130
5.4.2 递归函数的调用过程 131
5.4.3 递归函数的应用 132
5.5 变量的作用域和生存期 136
5.5.1 变量的作用域 137
5.5.2 变量的生存期 138
5.6 本章小结 139
习题 141
上机练习题 143
自测题 144
第6章 基于指针的程序设计 146
6.1 指针类型、变量和基本操作 146
6.1.1 指针类型的概念 146
6.1.2 基于指针的数据访问 148
6.1.3 指针运算 150
6.2 指针与函数 152
6.2.1 指针型参数 152
6.2.2 字符串处理 154
6.2.3 指针型返回值及应用实例 156
6.3 指针与数组 158
6.3.1 指针与一维数组 158
6.3.2 指针与二维数组 160
6.4 指针数组与动态存储空间 163
6.4.1 字符串数组及应用实例 164
6.4.2 动态存储空间及应用实例 167
6.4.3 命令行参数及应用实例 171
6.5 无符号整型与二进制数据处理 174
6.5.1 八进制、十六进制数据表示及无符号整型 174
6.5.2 位运算 175
6.5.3 二进制数据的应用实例 177
6.6 本章小结 178
习题 180
上机练习题 181
自测题 182
第7章 数据的组织结构(二) 185
7.1 结构体类型 185
7.1.1 结构体类型的概念 185
7.1.2 结构体实例:学生基本信息 189
7.2 动态数据结构链表 193
7.2.1 链表的概念 193
7.2.2 链表的基本操作 195
7.2.3 链表的应用实例 198
7.3 状态机的概念与应用 204
7.3.1 状态机的基本概念 204
7.3.2 状态机的应用实例:交通信号的控制 205
7.4 文件 209
7.4.1 文件的概念 209
7.4.2 文件的打开和关闭操作 210
7.4.3 文本文件读/写操作及应用实例 212
7.4.4 二进制文件的读/取操作 215
7.5 联合体与枚举类型 220
7.5.1 联合体 220
7.5.2 枚举类型 222
7.6 本章小结 223
习题 225
上机练习题 227
自测题 229
第8章 C程序应用实例 231
8.1 实例1 文本行编辑程序 231
8.2 实例2 Hanoi塔演示程序 238
8.3 实例3 通讯录管理程序 242
8.4 实例4 连连看游戏程序 248
8.5 实例5 大奖赛评分管理 255
第9章 软件开发基础知识 263
9.1 软件与软件产品的特征 263
9.2 软件开发的基本过程 264
9.2.1 软件生命周期 265
9.2.2 软件开发过程模型 266
9.2.3 软件开发方法学 267
9.3 程序设计风格 268
9.4 程序调试的基本方法 268
9.5 软件测试的基本方法 269
9.6 软件文档的编写要求 270
第10章 C语言课程设计指导 271
10.1 课程设计教学环节的主要目的 271
10.2 C语言课程设计的考核内容 271
10.3 课程设计报告的书写规范 272
10.3.1 课程设计报告的内容要求 272
10.3.2 课程设计报告的质量要求 273
10.4 课程设计题目 273
10.4.1 第1题 学生证管理程序 273
10.4.2 第2题 可视化冒泡排序程序 274
10.4.3 第3题 图书登记管理程序 274
10.4.4 第4题 车轮旋转控制程序 275
10.4.5 第5题 北京交通卡计费程序 275
10.4.6 第6题 海底世界游戏程序 277
10.4.7 第7题 打飞碟游戏程序 278
10.4.8 课程设计报告书排版要求 279
附录A ASCII字符集 283
附录B 运算符的优先级和结合性 284
附录C Visual Studio 2010使用指南 285
附录D Dev-C 5.1使用指南 293
附录E C语言常用标准函数 298
附录F EasyX常用库函数 301
参考文献 306