1.1 C语言的起源和发展 1
第1章 C语言概述 1
1.2 C语言的特点 2
1.3 C语言的基本结构 4
1.3.1 基本单词 4
1.3.2 语句 5
1.3.3 函数 5
1.3.4 标准库 7
1.4.1 格式输出函数(printf) 8
1.4 简单的C程序设计 8
1.4.2 格式输入函数(scanf) 10
1.4.3 单字符输出函数(putchar) 14
1.4.4 单字符输入函数(getchar) 14
1.4.5 单字符输入函数getche()和getch() 15
1.4.6 赋值语句 16
1.4.7 简单程序设计举例 16
1.5 C程序的编译与运行 17
1.5.1 C程序的运行步骤 17
1.5.2 UNIX(XENIX)操作系统下运行C程序的步骤 18
1.5.3 MSC5.0编译系统的使用 21
1.5.4 TurboC2.0的使用 23
1.6 上机练习 28
习题一 30
第2章 基本数据类型、常量和变量 32
2.1 基本数据类型 33
2.1.1 五种基本数据类型 33
2.1.2 基本数据类型的存储方式和取值范围 33
2.1.3 基本数据类型的限定 34
2.2.1 标识符的命名 35
2.2 标识符 35
2.2.2 标识符的作用 36
2.3 常量及其类型 36
2.3.1 整型常数 36
2.3.2 浮点常数 39
2.3.3 字符常量 41
2.3.4 字符串常量 42
2.4 变量及其类型 44
2.4.1 变量名 44
2.4.3 变量的存储类型 45
2.4.2 变量的数据类型 45
2.4.4 变量的说明 46
2.4.5 变量的初始化 47
2.4.6 变量的作用域 48
2.5 符号常数 49
2.5.1 宏定义 50
2.5.2 const限定 51
2.6 上机练习 52
习题二 53
3.1.1 二元算术运算符 56
3.1 算术运算符和算术表达式 56
第3章 运算符和表达式 56
3.1.2 一元算术运算符 57
3.1.3 算术表达式 59
3.2 赋值运算符和赋值表达式 63
3.2.1 赋值运算符 63
3.2.2 赋值表达式 64
3.3 关系运算符和关系表达式 66
3.3.1 关系运算符 66
3.3.2 关系表达式 66
3.4.2 二元逻辑运算符 67
3.4.1 一元逻辑运算符 67
3.3.3 相等表达式 67
3.4 逻辑运算符和逻辑表达式 67
3.4.3 逻辑运算符的优先级和结合性 68
3.4.4 逻辑表达式 68
3.5 条件运算符和条件表达式 69
3.5.1 条件运算符 69
3.5.2 条件表达式 70
3.6 逗号运算符和逗号表达式 71
3.7.1 按位逻辑运算 73
3.7 位操作运算符 73
3.7.2 移位运算 76
3.7.3 位操作运算符的优先级和结合性 77
3.7.4 位操作运算符组成的复合赋值运算符 78
3.7.5 位操作的应用 78
3.8 测试数据长度运算符sizeof 81
3.9 运算符小结 82
3.10 上机练习 84
习题三 86
4.1.1 结构化程序设计的由来 90
4.1 结构化程序设计的基本概念和C语句 90
第4章 程序控制结构 90
4.1.2 结构化程序设计方法 91
4.1.3 C语句 91
4.2 条件语句(if-elseif-else) 92
4.2.1 条件语句的三种形式 92
4.2.2 条件语句的嵌套 97
4.3 开关语句(switch) 99
4.3.1 开关语句的一般形式和功能 99
4.4.1 while语句的一般形式 101
4.3.2 break语句 101
4.3.3 开关语句的使用说明 102
4.4 当型循环语句(while) 103
4.4.2 while语句的执行过程 104
4.5 步长型循环语句(for) 106
4.5.1 for语句的一般形式 106
4.5.2 for语句的执行过程 107
4.5.3 几点说明 107
4.6 直到型循环语句(do-while) 109
4.6.1 do-while语句的一般形式 109
4.6.2 do-while语句的执行过程 110
4.7 break和continue语句 111
4.7.1 break语句 111
4.7.2 continue语句 112
4.8 多重循环 112
4.9 goto语句和标号 115
4.10 程序设计思维方法 117
4.10.1 枚举原则 117
4.10.2 归纳原则 120
4.10.3 抽象原则 123
4.11 上机练习 126
习题四 130
第5章 数组 134
5.1 数组的定义和初始化 134
5.1.1 数组的定义 134
5.1.2 数组元素的引用 135
5.1.3 数组的存储结构 135
5.1.4 数组的初始化 135
5.2 数组的赋值、输入和输出 138
5.2.1 数组的赋值 138
5.2.2 数组的输入 139
5.2.3 数组的输出 140
5.3 数组的应用 142
5.4 上机练习 149
习题五 151
第6章 指针 153
6.1 指针的概念 153
6.1.1 地址 153
6.1.2 指针 159
6.2 指针的运算 163
6.2.1 指针的移动(指针与整数相加减) 163
6.3 指向一维数组的指针 167
6.3.1 指针与一维数组的对应关系 167
6.2.2 两个同类型指针相减 167
6.2.3 指针的比较 167
6.3.2 用指针访问一维数组的一般形式 168
6.4 指向字符串的指针 170
6.4.1 字符串的表示形式 170
6.4.2 用字符型指针处理字符串要注意的问题 173
6.5 指向二维数组的指针 174
6.5.1 一维数组指针 174
6.5.2 行指针 177
6.5.3 指针数组 178
6.5.4 二级指针 182
6.5.5 二维数组元素指针 185
6.6 多维数组和多级指针 186
6.6.1 多维数组 186
6.6.2 多级指针 187
6.7 near指针、far指针和huge指针 188
6.7.1 80x86系列机的编址方法 188
6.7.2 指针限定:near、far和huge 190
6.7.3 存储模式 191
6.8 用指针实现内存动态分配 193
6.8.1 内存动态分配的含义 193
6.8.2 用于内存动态分配、再分配及释放的函数 194
6.8.3 动态二维数组示例 194
6.9 上机练习 197
习题六 199
第7章 函数 204
7.1 C程序的模块结构 204
7.1.1 模块化程序设计的特点 204
7.1.2 C程序的模块结构 205
7.2.1 函数的定义 206
7.2 C函数的基本概念 206
7.2.2 函数的调用 209
7.2.3 使用函数的优越性 214
7.3 函数间数据的传递 215
7.3.1 哑实结合方式 215
7.3.2 函数返回值方式 229
7.3.3 全局变量方式 231
7.4 函数的嵌套调用和递归调用 234
7.4.1 嵌套调用 234
7.4.2 递归调用 237
7.5 main()函数的参数和返回值 241
7.5.1 命令行参数 241
7.5.2 main()函数的参数 242
7.5.3 main()函数的返回值 243
7.6 上机练习 244
习题七 246
第8章 编译预处理和分割编译 256
8.1 编译预处理 256
8.2 宏定义 256
8.2.1 符号常量 257
8.2.2 带参数的宏定义 258
8.2.3 局部宏定义 260
8.2.4 书写#define命令行应注意的事项 261
8.3 文件包含 261
8.3.1 文件包含的格式、功能和用途 262
8.3.2 标题文件 264
8.3.3 文件包含的嵌套使用 264
8.4.1 条件编译的一般形式 265
8.4.2 条件编译的分支嵌套形式 265
8.4 条件编译 265
8.4.3 编译条件的常用形式 266
8.5 分割编译 268
8.5.1 分割编译的含义和过程 268
8.5.2 变量和函数在编译单位间的传递 269
8.5.3 不同存储模式下编译的文件的连接 271
8.6 上机练习 272
习题八 273
第9章 结构、位段、联合、枚举和类型定义 274
9.1 结构的定义 274
9.1.1 结构的定义 274
9.1.2 结构的嵌套定义 276
9.2 访问结构成员和结构变量的初始化 277
9.2.1 结构成员的访问 277
9.1.3 对结构的合法操作 277
9.2.2 结构变量的初始化 278
9.2.3 结构的整体赋值 279
9.3 结构数组 280
9.3.1 结构数组的定义 280
9.3.2 结构数组的初始化 281
9.3.3 结构数组元素成员的访问 281
9.4.2 结构指针的初始化 282
9.4 指向结构的指针 282
9.4.1 结构指针的定义 282
9.4.3 用指针访问结构成员 283
9.5 结构在函数间的传递 285
9.5.1 哑实结合方式 285
9.5.2 函数返回值方式 289
9.5.3 全局变量方式 291
9.6 递归结构 291
9.6.1 递归结构的定义 291
9.6.2 递归结构的应用 292
9.7.1 位段(bitfield) 294
9.7.2 位段结构的定义 294
9.7 位段结构 294
9.7.3 位段结构的存储 296
9.7.4 位段的访问 297
9.8 联合 299
9.8.1 联合的定义 299
9.8.2 联合和结构的异同 300
9.8.3 联合的应用实例 301
9.9.1 枚举的定义 304
9.9 枚举 304
9.9.2 枚举元素的值 305
9.9.3 枚举变量的使用 305
9.10 类型定义 307
9.10.1 类型定义的形式 307
9.10.2 类型定义的使用 308
9.10.3 几点说明 309
9.11 上机练习 310
习题九 313
10.1 文件概述 319
10.1.1 文件的逻辑结构 319
第10章 文件 319
10.1.2 文件的存取方式 320
10.1.3 标准设备文件和磁盘文件 320
10.1.4 缓冲文件系统和非缓冲文件系统 321
10.2 文件的打开和关闭 322
10.2.1 文件指针 322
10.2.2 文件的打开 322
10.2.3 文件的关闭 324
10.3 文件的读写 325
10.3.1 字符读写函数 325
10.3.2 字符串读写函数 327
10.3.3 格式读写函数 329
10.3.4 数据块读写函数 330
10.3.5 整数读写函数 331
10.4 文件的随机读写 332
10.4.1 文件的定位 333
10.4.2 文件随机读写程序举例 333
10.5 文件检测函数 336
10.6 上机练习 339
习题十 342
11.1 概述 348
第11章 常用库函数 348
11.2 I/O函数 349
11.3 数学函数 350
11.4 字符串操作函数 352
11.5 字符测试函数 354
11.6 实用函数 355
11.7 动态内存分配函数 358
11.8 上机练习 360
习题十 361
12.1.1 文本方式的设置 367
12.1 文本方式 367
第12章 TurboC图形处理 367
12.1.2 文本方式下光标的定位 368
12.1.3 彩色显示 368
12.1.4 窗口 369
12.1.5 其他字符屏幕操作函数 370
12.2 屏幕绘图的基本知识 372
12.2.1 屏幕图形坐标系 372
12.2.2 图形适配器 373
12.2.3 图形库 374
12.2.4 屏幕绘图的一般过程 375
12.3.1 图形系统控制函数 376
12.3 TurhoC图形函数 376
12.3.2 颜色控制函数 377
12.3.3 绘图函数 379
12.3.4 屏幕管理函数 384
12.3.5 图形方式下的文本输出 385
12.3.6 出错处理函数 387
12.3.7 状态查询函数 387
12.4 图形设计的基本方法 388
12.4.1 直接设计法 388
12.4.3 图形变换法 389
12.4.2 依据数学公式画图 389
12.5 动画技术 391
12.5.1 全屏幕动画 391
12.5.2 部分屏幕动画 394
12.6 汉字处理 395
12.6.1 UCDOS下汉字的普通显示 395
12.6.2 UCDOS下汉字的特殊显示 396
12.7 上机练习 399
习题十二 402
13.1 C+++与面向对象的程序设计 404
第13章 C+++简介 404
13.2 C+++是C的扩充 406
13.2.1 C+++小规模地增强C 406
13.2.2 C+++程序与C的目标模块的连接 408
13.3 用类实施数据封装和数据隐藏 409
13.3.1 类说明 409
13.3.2 对象说明 411
13.3.3 实例分析 411
13.3.4 对象初始化 413
13.4.1 单一继承 415
13.4 继承和派生类 415
13.4.2 多重继承 417
13.5 多态性和虚函数 418
13.5.1 函数名重载 419
13.5.2 虚函数 419
13.6 C+++与Windows 421
13.7 上机练习 422
附录A TurboC2.0库函数分类 425
附录B TurboC2.0编译出错信息 435
参考文献 439