第1章 程序设计技术概述 1
1.1 程序设计语言概述 1
1.1.1 程序设计语言 1
1.1.2 计算思维 4
1.2 算法 4
1.2.1 算法的概念 4
1.2.2 算法的特性 6
1.2.3 算法的描述 6
1.3 软件的编制步骤 10
1.4 C程序设计语言的产生与特点 12
1.5 C语言程序的运行环境(Visual C+++ 6.0编译环境) 13
1.5.1 C语言程序上机步骤 13
1.5.2 建立C程序的步骤 13
1.5.3 Visual C+++ 6.0集成环境 18
1.5.4 程序的调试和运行 19
1.6 错误解析 21
练习1 22
第2章 程序设计基础 24
2.1 C程序概述 24
2.1.1 一个简单的C程序 24
2.1.2 C语言的字符集 26
2.1.3 C语言词汇 26
2.2 基本数据类型 28
2.2.1 常量与变量 29
2.2.2 整型数据 32
2.2.3 实型数据 36
2.2.4 字符型数据 39
2.2.5 变量赋初值 44
2.3 运算符与表达式 45
2.3.1 C语言运算符简介 45
2.3.2 算术运算符和算术表达式 46
2.3.3 关系运算符与关系表达式 48
2.3.4 逻辑运算符与逻辑表达式 49
2.3.5 赋值运算符和赋值表达式 50
2.3.6 逗号运算符和逗号表达式 55
2.3.7 自增、自减运算符 56
2.3.8 条件运算符和条件表达式 58
2.4 不同类型数据之间的转换 59
2.5 错误解析 62
练习2 64
第3章 标准库函数 66
3.1 C标准库函数的分类 67
3.2 常用数学库函数 68
3.3 printf()函数 69
3.4 scanf()函数 77
3.5 putchar()函数 82
3.6 getchar()函数 83
3.7 随机函数 84
3.8 错误解析 86
练习3 86
第4章 选择结构 88
4.1 复合语句 88
4.2 if语句 90
4.2.1 if语句中的表达式 90
4.2.2 单分支if语句 91
4.2.3 双分支if语句 93
4.2.4 多分支if语句 95
4.2.5 if语句的嵌套 98
4.2.6 条件运算符实现选择结构 102
4.3 switch语句 103
4.4 应用程序举例 106
4.5 错误解析 111
练习4 113
第5章 循环控制结构 117
5.1 while语句 117
5.2 for语句 124
5.3 do…while语句 130
5.4 多重循环结构 135
5.5 break语句和continue语句 139
5.5.1 break语句 139
5.5.2 continue语句 140
5.6 应用程序举例 143
5.7 错误解析 151
练习5 155
第6章 函数 157
6.1 C程序与函数概述 157
6.1.1 模块化程序设计 157
6.1.2 C程序的一般结构 158
6.2 函数的定义与调用 159
6.2.1 函数的定义 159
6.2.2 函数的调用 162
6.2.3 函数的参数传递 165
6.3 函数的传址引用 167
6.3.1 地址的存储与使用 167
6.3.2 指针说明和指针对象的引用 168
6.4 局部变量与全局变量 172
6.4.1 局部变量 173
6.4.2 全局变量 174
6.5 变量的存储类型 176
6.5.1 存储类型区分符 176
6.5.2 自动变量 177
6.5.3 静态变量 179
6.5.4 外部变量 181
6.5.5 寄存器变量 182
6.5.6 存储类型小结 183
6.6 函数的嵌套与递归调用 185
6.6.1 函数的嵌套调用 185
6.6.2 函数的递归调用 187
6.7 编译预处理 190
6.7.1 宏定义 191
6.7.2 文件包含 194
6.7.3 条件编译 196
6.8 错误解析 197
练习6 198
第7章 数组 200
7.1 一维数组的定义及使用 200
7.1.1 一维数组的定义 200
7.1.2 一维数组的引用 202
7.1.3 一维数组的初始化 204
7.1.4 程序举例 206
7.2 一维数组与指针运算 207
7.2.1 一维数组的数组名 207
7.2.2 一维数组的下标与指针 208
7.2.3 作为函数参数的一维数组的数组名 212
7.3 二维数组的定义及使用 215
7.3.1 二维数组的定义 215
7.3.2 二维数组元素的引用 216
7.3.3 二维数组的初始化 216
7.3.4 二维数组应用举例 218
7.4 二维数组与指针运算 221
7.4.1 二维数组与元素指针 221
7.4.2 二维数组与行指针 222
7.4.3 作为函数参数的二维数组的数组名 225
7.5 使用内存动态分配实现动态数组 228
7.5.1 动态内存分配的步骤 228
7.5.2 动态内存分配函数 228
7.6 错误解析 231
练习7 232
第8章 常用算法 235
8.1 算法的概念 235
8.1.1 算法描述 235
8.1.2 算法的特性 236
8.1.3 算法的评估 236
8.2 排序算法 237
8.2.1 冒泡排序算法 237
8.2.2 选择排序算法 239
8.2.3 插入排序算法 242
8.2.4 基于二维数组的排序 243
8.3 查找算法 245
8.3.1 顺序查找 245
8.3.2 二分查找 246
8.3.3 基于二维数组的查找算法 247
8.3.4 其他查找方法 250
8.4 基本数值算法 250
8.4.1 基本数值算法概述 250
8.4.2 求一元非线性方程实根 250
8.4.3 求一元函数定积分的数值 255
练习8 259
第9章 字符数组与字符串 261
9.1 字符数组 261
9.1.1 字符数组的定义与赋值 261
9.1.2 字符数组的初始化 262
9.1.3 字符数组的引用 264
9.2 字符串 266
9.2.1 字符串的定义及其输入与输出 266
9.2.2 字符串的处理与字符串处理函数 269
9.2.3 字符串与指针运算 273
9.3 字符数组与字符串应用举例 276
9.4 错误解析 278
练习9 280
第10章 结构和联合 282
10.1 结构类型的定义与引用 282
10.1.1 结构类型的定义 282
10.1.2 结构变量的引用 285
10.2 结构数组的声明、引用和初始化 287
10.3 联合 290
10.3.1 联合的定义 290
10.3.2 联合变量的说明 291
10.3.3 联合变量的使用 292
10.4 枚举类型 294
10.5 定义类型说明符 296
10.6 应用程序举例 297
10.7 常见错误解析 299
练习10 300
第11章 指针 302
11.1 数组、地址与指针 302
11.1.1 数组、地址与指针的关系 302
11.1.2 一维数组中的地址与指针 303
11.1.3 二维数组中的地址与指针 305
11.2 指针数组与指向指针的指针 306
11.2.1 指针数组 306
11.2.2 指向指针的指针 310
11.3 main()函数的参数 312
11.4 函数指针 315
11.5 指针函数 318
11.6 链表 321
11.6.1 链表的概念 321
11.6.2 链表的实现 321
11.6.3 单向链表的操作 322
11.6.4 链表的建立 322
11.6.5 链表的输出 325
11.6.6 链表结点的插入与删除 325
11.7 应用程序举例 326
11.8 错误解析 328
练习11 330
第12章 位运算 334
12.1 位运算的概念 334
12.1.1 字节与位 334
12.1.2 补码 334
12.2 二进制位运算 336
12.2.1 二进制位运算 336
12.2.2 位复合赋值运算符 344
12.3 应用程序举例 344
12.4 错误解析 345
练习12 345
第13章 文件操作 347
13.1 文件概述 347
13.2 文件的使用 348
13.2.1 文件的声明 348
13.2.2 文件的打开与关闭 349
13.2.3 文件的读写 351
13.3 随机文件的读写 361
13.4 应用程序举例 362
13.5 错误解析 368
练习13 368
第14章 绘制图形 370
14.1 绘图简介 370
14.2 EasyX的下载与安装 373
14.2.1 EasyX的下载 373
14.2.2 安装EasyX 373
14.3 绘图前的准备 374
14.3.1 颜色 375
14.3.2 坐标 375
14.3.3 设备 376
14.4 绘图函数 376
14.4.1 绘图环境相关函数 376
14.4.2 颜色模型相关宏及函数 377
14.4.3 图形颜色及样式设置相关函数 378
14.4.4 图形绘制相关函数 382
14.4.5 文字输出相关函数 385
14.5 绘图举例 388
14.6 错误解析 393
练习14 394
第15章 项目开发 395
15.1 软件工程概述 395
15.1.1 软件工程的基本概念 395
15.1.2 分析阶段 397
15.1.3 设计阶段 397
15.1.4 实现阶段 398
15.1.5 测试阶段 399
15.1.6 软件维护 400
15.1.7 文档 400
15.2 客户信息管理系统 401
15.2.1 用软件工程方法指导软件开发 401
15.2.2 客户信息管理系统的实现 403
15.3 俄罗斯方块 414
15.3.1 俄罗斯方块简介 414
15.3.2 俄罗斯方块的实现代码 415
练习15 425
参考文献 426
附录A ASCII编码 427
附录B C语言的运算符 428
附录C C语言的库函数 429
附录D EasyX的库函数 436