第1章 概论 1
学习C语言程序设计的第一个例子 1
创建并运行第一个C程序 1
解释分析第一个C程序 2
C语言的产生、发展与语言特征 2
C语言的产生与发展 3
C语言的标准化 4
C语言的语言特征 5
计算机硬件系统 7
数和字符的机器码表示 9
进位计数制 9
进位制数之间的转换 12
数的机器码表示 13
字符的编码表示 15
算法及其表示 17
算法的定义 17
算法的表示 17
算法的实现 19
程序中的语句 21
学习C语言的方法 23
本章小结 25
习题一 25
第2章 数据类型、运算符和表达式 26
字符及词法元素 26
字符集 26
词法元素 26
语法规则 27
BNF范式 27
EBNF范式 28
语法图 28
标识符、关键字及分隔符 29
标识符 29
关键字 30
分隔符 30
基本数据类型 30
数据类型的分类 30
基本类型的名字 31
字符类型char 31
整型类型 32
浮点类型 33
常量与变量 34
文字常量 34
符号常量 37
变量定义 38
运算符和表达式 39
C运算符简介 39
运算符的优先级和结合性 40
算术运算 40
关系运算 41
逻辑运算 42
自增和自减运算 43
赋值运算 44
条件运算 45
逗号运算 46
sizeof运算 47
位运算符和位表达式 47
按位求反(~) 47
按位“与”、“或”、“加”运算(&,|,∧) 48
左移和右移运算(《和》) 48
位运算符应用举例 49
打印整数各位的软件工具 51
类型转换 52
整数提升 52
一般算术转换 52
赋值转换 53
强制类型转换 53
枚举类型 54
新增数据类型 56
本章小结 59
习题二 59
第3章 基本的标准输入与输出 62
基本的标准输出 62
单字符输出函数putchar 62
字符串输出函数puts 63
格式输出函数printf 64
基本的标准输入 69
单字符输入函数getchar 69
字符串输入函数gets 71
格式输入函数scanf 72
基本的标准输入与输出程序设计 80
不同类型数据的转换函数 80
基本的标准输入与输出程序设计 85
本章小结 87
习题三 87
第4章 流程控制 90
C语句概述 90
表达式语句 90
复合语句 91
if语句 93
switch语句 97
while语句 101
for语句 105
do-while语句 109
goto语句和标号语句 115
break语句、continue语句和return语句 118
嵌套循环程序设计 122
推理机程序设计 127
本章小结 130
习题四 130
第5章 函数与程序结构 132
C程序的一般结构 132
结构化程序设计概述 132
C程序的一般结构 133
函数的定义与函数的声明 133
函数的定义 134
return语句 136
函数的声明 137
函数调用与参数传递 138
函数调用 138
参数的值传递 140
作用域 141
存储类型 141
存储类型auto 142
存储类型extern 143
存储类型static 145
存储类型register 147
参数数目可变的函数 147
递归与回溯 149
递归函数与递归调用 149
递归的执行过程 150
Fibonacci数列的递归求解 152
汉诺塔问题的递归求解 152
回溯 154
装载问题的回溯求解 158
多文件的C程序 160
静态函数和外部函数 161
多文件程序的例子:猜数游戏 161
本章小结 164
习题五 165
第6章 编译预处理 168
文件包含#include 168
宏定义#define 169
带参数的宏定义 170
取消宏定义#undef 171
条件编译 171
assert宏 173
stdio.h、ctype.h和stddef.h中的宏 174
预定义宏 175
#操作及##操作 176
#error、#pragma的使用及行号 177
与宏相关的函数 178
本章小结 178
习题六 179
第7章 标准库及用户自定义库 181
程序的接口 181
接口的概念 181
接口与头文件 182
接口的设计原则 182
C标准库的使用 182
标准库 182
使用库 183
C图形库及其基本的图形操作 183
图形显示的窗口和坐标 184
图形模式的初始化 184
基本图形函数 186
颜色及线型的设置 187
封闭图形的填充 190
图形方式下的字符输出 192
图形屏幕操作函数 194
创建自己的库 195
random库的设计 195
random库的接口(即random.h文件) 197
random库的实现(即random.c文件) 198
使用TLIB建立random库 199
动画技术及应用 200
动画技术的实现方法 201
动画技术应用实例——物理现象的计算机仿真 204
C代码的计时与电子钟设计 205
时间相关库 205
电子钟的设计 206
本章小结 209
习题七 210
第8章 数组 212
数组概述 212
一维数组 213
一维数组的声明 213
一维数组的使用 214
一维数组的初始化 215
一维数组的存储结构 216
一维数组的运算 217
一维数组作为函数参数 219
字符数组 222
字符数组的声明和使用 223
字符数组的初始化 224
字符串处理函数 224
串操作函数的设计及使用 224
数字串与数之间转换的函数 230
多维数组 233
多维数组的说明与使用 233
多维数组的存储结构 235
多维数组的初始化 236
二维字符数组 237
数组的应用程序设计举例 238
矩阵乘法运算 238
基于分治策略的二分查找函数 240
选择法排序 241
快速排序与归并排序 242
简单文本编辑器的设计 246
本章小结 251
习题八 251
第9章 指针 253
指针的概念与指针的使用 253
指针的概念 253
指针的声明 254
指针的使用 255
指针运算 259
指针的算术运算 259
指针的赋值运算和关系运算 264
指针作为函数的参数 265
形参指针对实参变量的影响 265
指针作为函数形参的应用 267
数组的指针表示 269
一维数组的指针表示 269
一维数组参数的指针表示 274
用指向数组基本元素的指针表示多维数组 275
指针数组 276
指针数组的声明及使用 276
多重指针 282
带参数的main函数 283
命令行参数 283
带参main函数的声明及使用 283
函数的指针 285
函数指针的声明 285
函数指针的应用 287
利用函数指针求开普勒方程的近似根 289
指针函数 291
指针函数的声明与定义 291
指针函数的使用 292
指向数组的指针 293
指向数组的指针的声明与定义 293
用数组名间访多维数组的元素 293
用指向数组的指针表示多维数组 296
多维数组参数的指针表示 299
用指针编写字符串操作函数 302
字符指针与字符串 302
字符串函数的实现 303
创建自己的字符串库 309
用typedef定义类型表达式 311
类型表达式 311
用typedef定义类型表达式 311
复杂说明的解释 313
复杂说明的应用 314
本章小结 38
习题九 318
第10章 结构与联合 321
结构概述 321
结构类型声明和结构变量的声明及初始化 322
结构类型的声明 322
结构变量的声明 324
结构变量的初始化 325
结构类型的引用 326
结构变量的引用 326
通过成员选择运算符“*”访问成员 327
嵌套结构的声明 328
嵌套结构中结构成员的成员的访问 330
结构类型的指针 331
结构指针的声明和赋值 331
通过“*”用结构指针访问结构变量的成员 332
通过成员选择运算符“-〉”访问结构变量的成员 334
结构类型作为函数的参数和返回值 336
结构成员或结构变量作为函数的参数 336
结构成员或结构变量作为函数的返回值 337
结构类型的指针作为函数的参数或函数的返回值 340
结构数组 342
结构数组的声明及初始化 342
结构数组的使用 343
用结构的指针引用结构数组元素的成员 344
sizeof运算符 346
结构数组作为函数的参数 347
联合 349
联合类型的定义 349
联合变量的声明、初始化及联合成员的引用 349
字段结构 353
字段结构类型的定义 353
字段结构类型变量的声明及成员的引用 354
字段结构与联合的应用 355
动态存储分配 356
静态数据结构和动态数据结构 356
C的动态存储分配函数 357
动态数组设计 358
链表 360
自引用结构 360
动态创建结点 362
单向链表 363
链表的相关操作 366
双向链表 372
堆栈 377
线性表与堆栈 377
用链表实现堆栈 377
基于值栈的逆波兰表达式求值 380
逆波兰表达式及求值算法 380
逆波兰表达式求值的程序设计 381
二叉树 386
本章小结 395
习题十 396
第11章 文件的输入与输出 400
文件概述 400
FILE指针和标准流式文件 403
流式文件的顺序输入/输出 405
文件的打开与关闭 405
文件的重定向 406
基于字符的文件读/写 408
基于字符串的文件读/写 411
文件的格式读/写 413
文件的直接输入/输出 416
流式文件的随机输入/输出 424
文件定位函数 424
文件的随机读/写 425
其他文件操作函数 429
文件访问类函数 429
文件操作类函数 430
出错检测处理类函数 431
输入/输出的低层接口 431
文件的顺序输入/输出 432
文件的随机输入/输出 434
流式文件系统中库函数的设计 437
myfopen函数的设计 438
mygetfp函数和my_openfp函数的设计 438
myCheckOpenType函数的设计 440
myfread函数的设计 441
myfwrite函数的设计 442
使用自己编写的库函数 444
本章小结 445
习题十一 445
参考文献 447
附录 448
ASCII字符编码表 448
键盘编码表 449
C库函数 451
Turbo C 2.0集成开发环境 456
Visual C++6.0集成开发环境 460