第1章 预备知识 1
1.1 计算机内的数据表示 1
1.1.1 数的二进制、十进制、八进制和十六进制表示 2
1.1.2 数制转换 2
1.1.3 原码、反码和补码 5
1.2 数的定点和浮点表示 7
1.2.1 定点数的取值范围 7
1.2.2 浮点数的取值范围 7
1.2.3 整数的取值范围 9
1.3 简单的逻辑运算 10
1.3.1 “或”、“与”、“非”运算 11
1.3.2 真值表 12
1.4 程序的概念 13
1.4.1 程序的特性 13
1.4.2 计算机程序的执行过程 14
1.5 算法 15
1.5.1 算法的特点 15
1.5.2 算法的表示 16
1.5.3 结构化程序设计的三种基本结构 18
1.5.4 程序设计中的几种常用算法 23
习题1 27
第2章 C程序简介 28
2.1 C语言的历史及其特点 28
2.2 C程序示例 28
2.3 printf和scanf的一般使用 33
2.4 C程序的运行 34
习题2 38
第3章 C语言基本知识 39
3.1 C语言基本元素 39
3.1.1 C的字符集 39
3.1.2 标识符 39
3.1.3 关键字 39
3.1.4 变量和常量 40
3.1.5 字符串常量 41
3.1.6 注解 41
3.2 C的基本数据类型 42
3.2.1 int(整数)类型 42
3.2.2 char(字符)类型 45
3.2.3 float和double类型 49
3.2.4 变量赋初值 50
3.3 C的运算符及表达式 51
3.3.1 算术运算符 51
3.3.2 自加(++)自减(--)运算符 52
3.3.3 关系及逻辑运算符 54
3.3.4 赋值运算符 58
3.3.5 逗号运算符 61
3.3.6 sizeof运算符 62
3.3.7 条件运算符 63
3.3.8 表达式中数据类型的转换 65
3.3.9 C运算符小结 68
习题3 68
第4章 语句及控制结构 72
4.1 C语言语句 72
4.2 简单语句 73
4.2.1 空语句 73
4.2.2 表达式语句 73
4.2.3 复合语句 74
4.3 输入/输出功能语句 74
4.3.1 字符输入/输出功能语句 75
4.3.2 格式化输入/输出功能语句 76
4.4 条件语句 84
4.4.1 if语句 84
4.4.2 switch语句 90
4.5 循环语句 92
4.5.1 for语句 92
4.5.2 while语句 95
4.5.3 do_while语句 99
4.5.4 循环语句的嵌套 100
4.6 转向语句 106
4.6.1 break语句 106
4.6.2 continue语句 107
4.6.3 goto语句 109
4.6.4 return语句 110
4.6.5 应用举例 111
习题4 113
课外上机练习题 117
第5章 函数 119
5.1 函数的定义 119
5.2 函数的调用 121
5.2.1 函数的参数传递 121
5.2.2 函数的返回值 122
5.2.3 函数的调用方式 123
5.3 函数原型及函数声明 131
5.4 数据存储类 135
5.4.1 自动(auto)变量 135
5.4.2 寄存器(register)变量 136
5.4.3 静态(static)变量 136
5.4.4 外部变量 138
5.5 多文件程序中函数和变量的处理 141
5.6 递归 146
5.6.1 递归函数 147
5.6.2 间接递归 155
5.7 迭代 158
5.7.1 迭代公式和迭代算法 158
5.7.2 递归与迭代的比较 162
5.8 系统库函数 164
5.8.1 rand函数 165
5.8.2 srand函数 166
习题5 168
课外上机练习题 171
第6章 数组 173
6.1 数组的概念 173
6.2 一维数组 173
6.2.1 一维数组变量的定义 173
6.2.2 一维数组元素的引用 174
6.2.3 一维数组变量的初始化 175
6.2.4 一维数组的应用 175
6.2.5 数组作为函数的参数 184
6.3 一维字符数组 194
6.3.1 一维字符数组变量的定义和引用 194
6.3.2 字符数组的输入/输出 195
6.3.3 字符串处理函数 203
6.3.4 字符数组的应用 209
6.4 二维数组 214
6.4.1 二维数组变量的定义 214
6.4.2 二维数组元素的引用 215
6.4.3 二维数组变量的初始化 216
6.4.4 二维数组的应用 218
6.5 多维数组 225
6.5.1 多维数组的定义 225
6.5.2 多维数组的引用 225
习题6 226
课外上机练习题 229
第7章 指针 231
7.1 指针的概念及定义 231
7.2 指针运算 232
7.2.1 指针运算符 232
7.2.2 指针作函数参数 234
7.2.3 最低访问权原则和const限定符 238
7.2.4 指针表达式与指针运算 241
7.3 指针与数组 243
7.3.1 一维数组和指针 243
7.3.2 字符指针 252
7.3.3 二维数组的地址及指针 259
7.3.4 由指针组成的数组 267
7.3.5 二级指针 272
7.3.6 二维数组处理小结 275
7.3.7 main函数的参数 277
7.4 指针与函数 278
7.4.1 指向函数的指针 279
7.4.2 返回指针的函数 285
7.4.3 从被调函数中获取数据的渠道 288
7.4.4 悬空引用 290
7.4.5 二级指针作参数 291
7.5 多级指针 293
7.5.1 多级指针的定义 293
7.5.2 多级指针与多维数组 295
习题7 301
课外上机练习题 303
第8章 结构体、共用体及枚举类型 304
8.1 结构体类型 304
8.1.1 结构体变量的定义及初始化 304
8.1.2 结构体数组及结构体分量的引用 308
8.1.3 结构体变量和结构体指针作参数 316
8.1.4 类型名定义typedef 320
8.2 动态数据结构 321
8.2.1 动态分配内存 322
8.2.2 链表 326
8.2.3 堆栈 334
8.2.4 队列 339
8.2.5 二叉树 342
8.3 共用体 346
8.4 位段 352
8.5 枚举类型 355
习题8 357
课外上机练习题 358
第9章 文件处理 360
9.1 C语言中的文件 360
9.2 文件类型指针 361
9.3 文件操作 362
9.3.1 文件的打开与关闭 362
9.3.2 文件的输入与输出 364
9.3.3 文件的定位 372
9.3.4 文件的错误检测及错误处理函数 374
习题9 375
第10章 编译预处理与位运算 376
10.1 宏定义 376
10.2 文件包含 381
10.3 条件编译 384
10.4 位运算 385
10.4.1 位运算符 386
10.4.2 与位运算有关的复合赋值运算符 390
习题10 393
附录A 常用字符与ASCII代码对照表 396
附录B C运算符一览表 397
附录C 常用库函数 399
参考文献 406