第1章 绪论 1
1.1 C语言的历史与发展 1
1.2 C语言的特点 2
1.3 简单C程序介绍 3
1.3.1 C语言的程序结构 3
1.3.2 C语言程序的书写规则 4
1.4 C语言的标识符和关键词 5
1.4.1 C语言的标识符 5
1.4.2 C语言的关键词 5
习题 5
第2章 数据类型、运算符和表达式 6
2.1 C语言的数据类型 6
2.1.1 数据类型 6
2.1.2 基本类型的长度和范围 7
2.1.3 基本类型修饰符 7
2.2 常量 8
2.2.1 整型常量 8
2.2.2 实型常量 9
2.2.3 字符常量 9
2.2.4 字符串常量 10
2.2.5 符号常量 10
2.3 变量 11
2.3.1 变量的命名 11
2.3.2 变量的定义和赋值 12
2.3.3 整型变量 12
2.3.4 实型变量 14
2.3.5 字符型变量 15
2.4 运算符和表达式 16
2.4.1 算术运算符和算术表达式 17
2.4.2 赋值运算符和赋值表达式 20
2.4.3 关系运算符和关系表达式 21
2.4.4 逻辑运算符和逻辑表达式 22
2.4.5 位运算符 24
2.4.6 其他运算符和表达式 28
2.5 运算符的优先级和结合性 30
2.6 数据类型的转换 31
2.6.1 自动类型转换 31
2.6.2 强制类型转换 32
习题 33
第3章 C程序的输入输出和库函数 36
3.1 库函数与头文件 36
3.2 输出函数 37
3.2.1 putchar函数 37
3.2.2 printf函数 38
3.3 输入函数 42
3.3.1 getchar函数 42
3.3.2 scanf函数 43
3.4 综合应用举例 45
习题 47
第4章 C程序流程控制的实现 49
4.1 条件语句 49
4.1.1 if语句 49
4.1.2 switch语句 52
4.2 循环语句 55
4.2.1 goto语句和if语句构成循环 55
4.2.2 while语句构成循环 55
4.2.3 do...while语句构成循环 58
4.2.4 for语句构成循环 59
4.2.5 循环的嵌套 62
4.3 其他控制语句 64
4.3.1 break语句 64
4.3.2 continue语句 65
4.3.3 空语句 65
习题 65
第5章 数组 67
5.1 一维数组的定义和引用 67
5.1.1 一维数组的定义 67
5.1.2 一维数组元素的引用 68
5.1.3 一维数组的初始化 68
5.2 二维数组的定义和引用 71
5.2.1 二维数组的定义 71
5.2.2 二维数组元素的引用 72
5.2.3 二维数组的初始化 73
5.3 字符数组与字符串 76
5.3.1 字符数组的定义 76
5.3.2 字符数组的引用 76
5.3.3 字符数组的初始化 77
5.3.4 字符串的概念与引用 78
5.3.5 字符串的输入 79
5.3.6 字符串的输出 80
5.3.7 字符串的常用处理函数 81
习题 85
第6章 函数 87
6.1 概述 87
6.2 函数定义和函数说明 88
6.2.1 函数的定义 88
6.2.2 函数的说明 90
6.3 函数的参数和返回值 92
6.3.1 形式参数和实际参数 92
6.3.2 函数的返回值 93
6.4 函数的调用 95
6.5 函数的嵌套调用 101
6.6 函数的递归调用 102
6.7 数组作为函数参数 105
6.7.1 数组元素作为函数实参 105
6.7.2 数组名作为函数参数 106
6.8 综合应用举例 116
习题 119
第7章 存储类别和作用域 120
7.1 数据类型和存储类别 120
7.2 局部变量和全局变量 120
7.2.1 局部变量 120
7.2.2 全局变量 122
7.3 变量的存储类别 124
7.3.1 自动变量 125
7.3.2 寄存器变量 126
7.3.3 外部变量 126
7.3.4 静态变量 128
7.3.5 存储类别小结 129
7.4 内部函数和外部函数 130
7.4.1 内部函数 131
7.4.2 外部函数 131
习题 132
第8章 编译预处理 135
8.1 文件包含 135
8.2 宏定义 137
8.2.1 不带参数的宏定义 137
8.2.2 带参数的宏定义 139
8.3 条件编译 143
习题 146
第9章 指针 147
9.1 指针和地址的概念 147
9.2 变量的指针和指向变量的指针变量 148
9.2.1 指针变量的定义 149
9.2.2 指针变量的引用 149
9.2.3 指针变量作为函数参数 151
9.3 数组的指针和指向数组的指针变量 153
9.3.1 指向数组元素的指针 153
9.3.2 通过指针引用数组元素 154
9.3.3 数组名作函数参数 158
9.3.4 指向多维数组的指针和指针变量 165
9.4 字符串的指针和指向字符串的指针变量 172
9.4.1 字符串的表示形式 172
9.4.2 字符串指针作函数参数 174
9.4.3 对使用字符指针变量和字符数组的讨论 182
9.5 函数的指针和指向函数的指针变量 184
9.5.1 用函数指针变量调用函数 184
9.5.2 用指向函数的指针作函数参数 186
9.6 返回指针值的函数 189
9.7 指针数组和指向指针的指针 191
9.7.1 指针数组的概念 191
9.7.2 指向指针的指针 194
9.7.3 指针数组作main函数的形参 196
习题 197
第10章 结构体与共用体 199
10.1 概述 199
10.2 定义结构体类型变量的方法 200
10.3 结构体变量的引用 201
10.4 结构体变量的初始化 202
10.5 结构体数组 203
10.5.1 定义结构体数组 203
10.5.2 结构体数组的初始化 204
10.6 指向结构体类型数据的指针 208
10.6.1 指向结构体变量的指针 208
10.6.2 指向结构体数组的指针 209
10.6.3 用结构体变量和指向结构体的指针作函数参数 211
10.7 用指针处理链表 216
10.7.1 链表概述 216
10.7.2 简单链表 216
10.7.3 处理动态链表所需的函数 217
10.7.4 建立动态链表 218
10.7.5 输出链表 220
10.7.6 对链表的删除操作 220
10.7.7 对链表的插入操作 222
10.7.8 对链表的综合操作 224
10.8 共用体 225
10.8.1 共用体的概念 225
10.8.2 共用体变量的引用方式 227
10.8.3 共用体类型数据的特点 227
10.9 枚举类型 229
10.10 用typedef定义类型 231
习题 233
第11章 文件 235
11.1 C文件概述 235
11.2 文件类型指针 236
11.3 文件的打开和关闭 237
11.3.1 文件的打开(fopen函数) 237
11.3.2 文件的关闭(fclose函数) 238
11.4 文件的读写 239
11.4.1 fputc函数和fgetc函数(putc函数和getc函数) 239
11.4.2 fread函数和fwrite函数 243
11.4.3 fprintf函数和fscanf函数 246
11.4.4 其他读写函数 251
11.5 文件的定位 252
11.5.1 rewind函数 252
11.5.2 fseek函数和随机读写 253
11.5.3 ftell函数 254
11.6 出错的检测 254
11.6.1 ferror函数 254
11.6.2 clearerr函数 255
11.7 文件输入输出小结 255
习题 255
第12章 算法和流程图 257
12.1 算法的概念 257
12.2 简单算法举例 258
12.3 算法的特性 261
12.4 算法的表示 262
12.4.1 用自然语言表示算法 262
12.4.2 用流程图表示算法 262
12.4.3 3种基本结构和改进的流程图 269
12.4.4 用N-S流程图表示算法 271
12.4.5 用伪代码表示算法 274
12.4.6 用计算机语言表示算法 276
习题 277
第13章 面向对象程序设计语言C++ 278
13.1 面向对象的思想 278
13.1.1 结构化程序设计 278
13.1.2 面向对象程序设计 278
13.2 面向对象程序设计的基本概念 279
13.2.1 对象和类 279
13.2.2 消息 281
13.2.3 抽象性 281
13.2.4 封装性 282
13.2.5 继承性 282
13.2.6 多态性 284
13.3 C++对C的扩充 284
13.3.1 C++对C语言的改进 284
13.3.2 最简单的C++程序 285
13.3.3 C++的输入输出 285
13.3.4 函数的重载 287
13.3.5 带默认参数的函数 289
13.3.6 引用类型变量 289
13.4 类和对象 292
13.4.1 C++的类和对象 292
13.4.2 构造函数和析构函数 294
13.4.3 静态成员和友元 298
13.4.4 继承和派生 303
13.4.5 基类和派生类的构造函数 306
习题 309
参考文献 312
附录A 常用字符与ASCII代码对照表 313
附录B C语言中的关键字 314
附录C 运算符和结合性 315
附录D C语言常用语法提要 317
附录E C库函数 320