1 概述 1
1.1 程序设计和程序设计语言 1
1.1.1 程序与软件 1
1.1.2 程序设计语言发展 2
1.2 算法 4
1.2.1 问题求解过程 4
1.2.2 算法及其表示 4
1.2.3 结构化程序设计 5
1.3 C 语言概述 6
1.3.1 C语言历史 6
1.3.2 C语言特点 7
1.3.3 C语言程序结构 9
习题 13
2 基本数据类型及其运算 14
2.1 基本语法单位 15
2.1.1 字符集 15
2.1.2 保留字 16
2.1.3 标识符 16
2.2 基本数据类型 17
2.2.1 整数类型 19
2.2.2 实数类型 20
2.2.3 字符类型 21
2.2.4 数据类型转换 22
2.3.1 数值常量 24
2.3 常量和变量 24
2.3.2 符号常量 27
2.3.3 变量 28
2.4 运算和表达式 30
2.4.1 算术运算符与算术表达式 30
2.4.2 关系运算符和关系表达式 33
2.4.3 逻辑运算符与逻辑表达式 34
2.4.4 位运算符及其表达式 35
2.4.5 赋值运算符与赋值表达式 38
2.4.6 条件运算符与条件表达式 41
2.4.7 逗号运算符和逗号表达式 42
2.4.9 运算符的优先级和结合性 43
2.4.8 sizeof运算符 43
习题 45
3 简单程序设计 49
3.1 表达式语句 49
3.2 基本输入输出函数 50
3.2.1 字符输出函数putchar 50
3.2.2 字符输入函数getchar 51
3.2.3 格式输出函数printf 52
3.2.4 格式输入函数scanf 53
3.3 程序举例 54
习题 55
4.1 复合语句 57
4 流程控制 57
4.2 选择语句 58
4.2.1 if语句 58
4.2.2 switch语句 65
4.3 循环语句 70
4.3.1 while语句 70
4.3.2 do-while语句 72
4.3.3 for语句 74
4.3.4 循环的嵌套 79
4.4 跳转语句 82
4.4.1 break语句 82
4.4.3 goto语句 83
4.4.2 continue语句 83
4.5 程序举例 84
习题 95
5 数组 98
5.1 一维数组 99
5.1.1 数组定义 99
5.1.2 数组的引用 100
5.1.3 一维数组赋初值 101
5.2 字符数组 102
5.2.1 字符数组与字符串 102
5.2.2 字符数组引用 104
5.2.3 字符串处理函数 106
5.3.2 多维数组的存储 109
5.3 多维数组 109
5.3.1 多维数组的定义 109
5.3.3 多维数组的引用 110
5.3.4 多维数组的初始化 111
5.3.5 二维数组的定义、引用和初始化 112
5.4 程序举例 114
习题 122
6 函数 128
6.1 函数的定义与调用 128
6.1.1 函数概述 128
6.1.2 函数的定义 130
6.1.3 函数的调用 131
6.2.1 形式参数与实在参数的概念 134
6.2 函数参数 134
6.2.2 形式参数与实在参数的结合 135
6.2.3 数组作为函数参数 135
6.3 函数的类型 139
6.3.1 函数的类型说明 139
6.3.2 返回语句 141
6.4 函数嵌套与递归调用 142
6.4.1 函数的嵌套调用 142
6.4.2 函数的递归调用 142
6.5 局部变量与全局变量 144
6.5.1 局部变量 145
6.5.2 全局变量 146
6.6 变量的存储属性 147
6.6.1 局部变量的存储方式 148
6.6.2 全局变量的存储方式 150
6.7 内部函数与外部函数 152
6.7.1 内部函数 152
6.7.2 外部函数 153
6.8 程序举例 154
习题 159
7 编译预处理 161
7.1 宏定义指令 161
7.1.1 #define 161
7.1.2 #undef 166
7.2 文件包含指令 167
7.3 条件编译指令 167
7.4 程序举例 169
习题 171
8 指针与引用 172
8.1 地址、指针和指针运算 172
8.1.1 地址与指针 173
8.1.2 指针说明 173
8.1.3 指针的运算 175
8.1.4 动态内存分配 178
8.2 指针与数组 179
8.2.1 数组指针 180
8.2.2 字符数组指针 184
8.2.3 指针数组和多级指针 186
8.3 指针与函数 189
8.3.1 指针作为函数参数 189
8.3.2 带参main函数和命令行参数 191
8.3.3 返回指针的函数 192
8.3.4 指向函数的指针 194
8.4 程序举例 197
习题 205
9 结构与联合 208
9.1.1 结构定义与变量说明 209
9.1 结构的概念 209
9.1.2 结构变量的引用 211
9.2 结构数组 212
9.3 结构和函数 214
9.3.1 结构型函数 214
9.3.2 结构指针型函数 215
9.4 结构指针 216
9.4.1 指向结构的指针 216
9.4.2 链表 220
9.5 字段结构 229
9.5.1 字段结构定义 230
9.5.2 字段变量的引用 231
9.6 联合类型 231
9.6.1 联合类型概念 232
9.6.2 联合类型变量的引用 233
9.7 枚举类型 235
9.8 类型定义 238
9.9 程序举例 238
习题 242
10 输入输出 243
10.1 输入输出的基本概念 243
10.1.1 文件、缓冲区与流 243
10.1.2 C输入输出机制 244
10.2 终端输入输出 245
10.2.1 字符输入输出 246
10.2.2 字符串输入输出 247
10.2.3 格式化输入输出 248
10.3 文件输入输出 255
10.3.1 文件的打开与关闭 255
10.3.2 文件的读写 257
10.3.3 文件的数据块读写 263
10.3.4 其他文件操作函数 265
10.4 非缓冲输入输出 269
10.4.1 文件的打开和关闭 269
10.4.2 文件的读写 270
10.4.3 文件的随机读写 271
10.5 程序举例 272
习题 274
11 面向对象语言C++基础 278
11.1 从C到C++ 279
11.2 C++在面向过程方面的扩充 279
11.2.1 输入输出流类 279
11.2.2 函数重载 281
11.2.3 缺省参数 282
11.2.4 内联函数 283
11.2.5 引用 284
11.2.6 动态内存分配/撤销 285
11.2.7 其他扩充 286
11.3 类与对象 287
11.3.1 类的定义与实现 288
11.3.2 对象创建与引用 290
11.3.3 构造函数和析构函数 291
11.4 继承与派生 293
11.4.1 基类与派生类 293
11.4.2 派生类的构造函数与析构函数 296
11.4.3 多继承 297
11.5 多态性与运算符重载 298
11.5.1 滞后联编与虚函数 299
11.5.2 抽象类 302
习题 303
附录A ASCII码字符表 306
附录B C的库函数 307