第1章 C/C++语言程序设计概述 1
1.1 引言 1
1.2 C/C++语言的特点 1
1.3 程序与程序设计 2
1.3.1 程序 2
1.3.2 程序设计 3
1.4 算法及其表示方法 3
1.4.1 算法的特性与要求 3
1.4.2 算法描述 4
1.5 简单C/C++程序的基本结构 6
1.5.1 两个简单程序实例 6
1.5.2 C/C++程序的基本构成 8
1.6 C程序的调试 10
1.6.1 编辑 10
1.6.2 编译 12
1.6.3 连接 13
1.6.4 运行 14
1.6.5 程序的跟踪调试 14
1.7 C++程序的实现 16
1.7.1 C++源程序的建立与编辑 16
1.7.2 单文件程序的编译和运行 17
1.7.3 多文件程序的编译和运行 18
1.8 程序举例 19
本章学习指导 20
习题 21
第2章 C语言程序设计基础 22
2.1 引言 22
2.2 常量 22
2.2.1 整型常量 22
2.2.2 实型常量 23
2.2.3 字符型常量 24
2.2.4 字符串常量 24
2.2.5 符号常量 25
2.3 变量 25
2.3.1 变量的定义 25
2.3.2 变量的初始化 26
2.4 运算符和表达式 27
2.4.1 运算符和表达式概述 27
2.4.2 算术运算符和算术表达式 28
2.4.3 关系运算符和关系表达式 29
2.4.4 逻辑运算符和逻辑表达式 30
2.4.5 赋值运算符和赋值表达式 32
2.4.6 自增、自减运算符及其表达式 34
2.4.7 逗号运算符和逗号表达式 35
2.4.8 位运算符 36
2.4.9 其他运算符 38
2.5 基本输入与输出函数 40
2.5.1 格式输入函数scanf() 40
2.5.2 格式输出函数printf() 42
2.5.3 字符输入函数getchar() 44
2.5.4 字符输出函数putchar() 45
2.6 本章综合程序举例 45
本章学习指导 46
习题 47
第3章 控制结构 48
3.1 引言 48
3.2 C语句和程序结构 48
3.2.1 C语句概述 48
3.2.2 C程序基本结构 49
3.3 if语句 50
3.3.1 if语句 50
3.3.2 if-else语句 51
3.3.3 if-else if-else语句 51
3.4 switch语句 54
3.5 循环语句 55
3.5.1 while语句 55
3.5.2 do-while语句 57
3.5.3 for语句 58
3.5.4 循环语句的嵌套 60
3.6 转向语句 61
3.6.1 break语句 61
3.6.2 continue语句 62
3.6.3 goto语句 62
3.7 本章综合程序举例 63
本章学习指导 65
习题 68
第4章 数组 69
4.1 引言 69
4.2 一维数组 69
4.2.1 一维数组的引入 69
4.2.2 一维数组的定义 71
4.2.3 一维数组的初始化 71
4.2.4 一维数组元素的引用 72
4.2.5 一维数组的应用 73
4.3 二维数组 75
4.3.1 二维数组的引入 75
4.3.2 二维数组的定义 76
4.3.3 二维数组的初始化 77
4.3.4 二维数组的应用 77
4.4 字符数组 81
4.4.1 字符串与一维字符数组 81
4.4.2 二维字符数组 82
4.4.3 字符数组的输入和输出 83
4.4.4 字符串处理函数 84
4.5 本章综合程序举例 90
本章学习指导 94
习题 96
第5章 指针 98
5.1 引言 98
5.2 指针和地址 98
5.3 指针变量的定义和引用 100
5.3.1 指针变量的定义 100
5.3.2 指针变量的初始化 100
5.3.3 指针变量的引用 101
5.4 指针变量的运算 103
5.4.1 取地址运算(&)和取内容运算(*) 103
5.4.2 指针变量的赋值运算 103
5.4.3 指针的移动 104
5.4.4 两个指针变量相减 105
5.4.5 两个指针变量的比较 105
5.5 指针与数组 106
5.5.1 指向一维数组的指针变量 106
5.5.2 二维数组与指针变量 108
5.5.3 通过行指针变量引用二维数组元素 109
5.6 指针与字符串 111
5.7 二级指针与指针数组 114
5.7.1 二级指针 114
5.7.2 指针数组 116
5.8 用于动态内存分配的函数 119
5.9 本章综合程序举例 122
本章学习指导 125
习题 126
第6章 函数 128
6.1 引言 128
6.2 函数的引入 128
6.3 函数的定义与说明 130
6.3.1 函数的定义 130
6.3.2 函数的说明 131
6.4 函数的调用与返回值 133
6.4.1 函数的调用 133
6.4.2 函数的返回值 136
6.5 函数间的参数传递 138
6.5.1 传值调用 138
6.5.2 传址调用 141
6.5.3 指向函数的指针 146
6.5.4 返回指针的函数 149
6.6 函数的嵌套调用和递归调用 150
6.6.1 函数的嵌套调用 150
6.6.2 函数的递归调用 151
6.7 命令行参数 156
6.8 程序举例 158
本章学习指导 161
习题 163
第7章 编译预处理与变量的存储类型 168
7.1 引言 168
7.2 宏定义 168
7.2.1 不带参数宏的定义 168
7.2.2 带参数宏的定义 172
7.3 文件包含 174
7.4 变量的存储类型 176
7.4.1 自动变量 176
7.4.2 静态变量 177
7.4.3 寄存器变量 178
7.4.4 外部变量 179
7.5 多个源程序文件下的变量使用 181
7.6 程序举例 183
本章学习指导 184
习题 185
第8章 文件 186
8.1 引言 186
8.2 文件的基本概念 186
8.2.1 文件的逻辑结构 187
8.2.2 缓冲文件系统与非缓冲文件系统 187
8.2.3 文件指针 188
8.3 文件的打开与关闭 189
8.3.1 文件的创建或打开 189
8.3.2 文件的关闭 190
8.4 文件的读/写 190
8.4.1 按字符方式读/写文件 190
8.4.2 按行方式读/写文件 193
8.4.3 按格式读/写文件 195
8.4.4 按块读/写文件 197
8.5 文件的定位与测试 198
8.5.1 文件的顺序存取与随机存取 198
8.5.2 检测文件结束函数feof() 199
8.5.3 反绕函数rewind() 199
8.5.4 移动文件位置指针函数fseek() 200
8.5.5 测定文件位置指针当前指向的函数ftell() 200
8.6 错误检测函数 201
8.7 程序举例 202
本章学习指导 206
习题 208
第9章 结构体与共用体 210
9.1 引言 210
9.2 结构类型 211
9.2.1 结构类型的定义 211
9.2.2 结构变量的定义 211
9.2.3 结构成员的引用 213
9.2.4 结构变量的初始化 215
9.3 结构数组 217
9.3.1 结构数组的定义和初始化 217
9.3.2 结构数组元素的引用 218
9.4 结构指针变量 221
9.4.1 结构指针变量的定义与初始化 221
9.4.2 指向结构变量的指针变量 222
9.4.3 指向结构数组的指针变量 223
9.5 结构体与函数 224
9.5.1 结构变量作为函数的参数 224
9.5.2 结构变量的地址作为函数的参数 226
9.5.3 结构数组作为函数的参数 227
9.6 共用体 230
9.6. 1 共用体的定义和引用 230
9.6.2 共用体与结构体的嵌套使用 232
9.7 枚举 232
9.8 用typedef定义类型 234
9.9 链表 235
9.9.1 单向链表 236
9.9.2 链表的建立 237
9.9.3 链表的插入和删除 239
9.10 程序举例 244
本章学习指导 249
习题 251
第10章 图形程序设计基础 254
10.1 引言 254
10.2 图形适配器的基本工作方式 254
10.2.1 文本方式 254
10.2.2 图形方式 255
10.3 常用图形函数 255
10.4 图形程序举例 261
本章学习指导 262
习题 263
第11章 C++程序设计基础 265
11.1 引言 265
11.2 C++程序结构 265
11.3 C++的输入/输出流 266
11.3.1 输出流(cout) 266
11.3.2 输入流(cin) 267
11.4 引用 268
11.5 函数的重载 269
11.6 带默认参数的函数 271
11.7 C++新增运算符 272
11.7.1 作用域运算符 272
11.7.2 动态内存分配与撤消运算符 272
11.8 const修饰符 274
11.9 类和对象 274
11.9.1 类和对象的定义 274
11.9.2 构造函数和析构函数 279
11.9.3 类的友元 284
11.9.4 this指针 286
11.10 重载 287
11.10.1 类成员函数重载 287
11.10.2 类构造函数重载 288
11.10.3 运算符重载 288
11.11 继承 291
11.11.1 基类与派生类 292
11.11.2 public继承 293
11.11.3 private继承 297
11.11.4 protected继承 298
11.11.5 多继承 298
11.11.6 派生类的构造函数和析构函数 301
11.12 多态性和虚拟函数 306
11.12.1 多态性 306
11.12.2 虚拟函数 307
11.12.3 虚拟析构函数 314
本章学习指导 315
习题 315
第12章 查找与排序 317
12.1 引言 317
12.2 顺序查找 318
12.3 二分查找 319
12.4 插入排序 321
12.4.1 直接插入排序 321
12.4.2 二分插入排序 323
12.4.3 希尔(Shell)排序 324
12.5 交换排序 325
12.5.1 冒泡排序 325
12.5.2 快速排序 326
12.6 选择排序 328
本章学习指导 329
习题 330
习题参考答案 331
第1章 C/C++语言简单程序的编写和调试 331
第2章 C语言程序设计基础 331
第3章 控制结构 333
第4章 数组 339
第5章 指针 346
第6章 函数 351
第7章 编译预处理与变量的存储类型 359
第8章 文件 361
第9章 结构体与共用体 364
第10章 图形程序设计 371
第11章 C++程序设计基础 373
第12章 查找与排序 375
附录A 常用字符与代码对照表 380
附录B C语言中的关键字 382
附录C 运算符的优先级与结合性 382
参考文献 384