第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.1 “或”、“与”、“非”运算 10
1.3 简单的逻辑运算 10
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 结构化程序设计的三种基本结构 17
1.5.4 程序设计中的几种常用算法 22
习题1 26
2.2 C程序示例 27
第2章 C程序简介 27
2.1 C语言的历史及其特点 27
2.3 printf和scanf的一般使用 32
2.4 C程序的运行 33
习题2 34
第3章 C语言基本知识 35
3.1 C语言基本元素 35
3.1.1 C的字符集 35
3.1.2 标识符 35
3.1.3 关键字 35
3.1.4 变量和常量 36
3.1.5 字符串常量 37
3.1.6 注解 37
3.2 C的基本数据类型 38
3.2.1 int(整数)类型 38
3.2.2 char(字符)类型 41
3.2.3 float和double类型 45
3.2.4 变量赋初值 46
3.3 C的运算符及表达式 47
3.3.1 算术运算符 47
3.3.2 自加(++)自减(--)运算符 49
3.3.3 关系及逻辑运算符 50
3.3.4 赋值运算符 54
3.3.5 逗号运算符 57
3.3.6 sizeof运算符 58
3.3.7 条件运算符 59
3.3.8 表达式中数据类型的转换 61
3.3.9 C运算符小结 63
习题3 63
第4章 语句及控制结构 67
4.1 C语言语句 67
4.2.2 表达式语句 68
4.2.1 空语句 68
4.2 简单语句 68
4.2.3 复合语句 69
4.3 输入/输出功能语句 69
4.3.1 字符输入/输出功能语句 70
4.3.2 格式化输入/输出功能语句 71
4.4 条件语句 79
4.4.1 if语句 79
4.4.2 switch语句 83
4.5 循环语句 85
4.5.1 for语句 85
4.5.2 while语句 88
4.5.3 do_while语句 91
4.5.4 循环语句的嵌套 92
4.6 转向语句 96
4.6.1 break语句 96
4.6.2 continue语句 98
4.6.3 goto语句 99
4.6.4 return语句 101
习题4 101
第5章 函数 106
5.1 函数的定义 106
5.2.1 函数的参数传递 107
5.2 函数的调用 107
5.2.2 函数的返回值 108
5.2.3 函数的调用方式 109
5.3 函数原型及函数声明 116
5.4 数据存储类 117
5.4.1 自动(auto)变量 117
5.4.2 寄存器(register)变量 118
5.4.3 静态(static)变量 119
5.4.4 外部变量 120
5.5 多文件程序中函数和变量的处理 123
5.6.1 递归函数 125
5.6 递归 125
5.6.2 递归与迭代的比较 131
5.7 系统库函数 133
5.7.1 rand()函数 133
5.7.2 srand()函数 135
习题5 136
第6章 数组 141
6.1 数组的概念 141
6.2 一维数组 141
6.2.1 一维数组变量的定义 141
6.2.2 一维数组元素的引用 142
6.2.3 一维数组变量的初始化 143
6.2.4 一维数组的应用 144
6.2.5 数组作为函数的参数 151
6.3 一维字符数组 156
6.3.1 一维字符数组变量的定义和引用 157
6.3.2 字符数组的输入/输出 157
6.3.3 字符串处理函数 160
6.3.4 字符数组的应用 164
6.4 二维数组 168
6.4.1 二维数组变量的定义 168
6.4.3 二维数组变量的初始化 169
6.4.2 二维数组元素的引用 169
6.4.4 二维数组的应用 171
6.5 多维数组 176
6.5.1 多维数组的定义 176
6.5.2 多维数组的引用 176
习题6 177
第7章 指针 181
7.1 指针的概念及定义 181
7.2 指针运算 182
7.2.1 指针运算符 182
7.2.2 指针作函数参数 184
7.2.3 最低访问权原则和const限定符 188
7.2.4 指针表达式与指针运算 192
7.3 指针与数组 193
7.3.1 一维数组和指针 194
7.3.2 字符指针 201
7.3.3 二维数组的地址及指针 203
7.3.4 由指针组成的数组 210
7.3.5 二级指针 213
7.3.6 main函数的参数 215
7.4.1 指向函数的指针 216
7.4 指针与函数 216
7.4.2 返回指针的函数 223
7.5 多级指针 224
7.5.1 多级指针的定义 224
7.5.2 多级指针与多维数组 226
习题7 233
第8章 结构体、共用体及枚举类型 236
8.1 结构体类型 236
8.1.1 结构体变量的定义及初始化 236
8.1.2 结构体数组及结构体分量的引用 239
8.1.3 结构体变量作参数 245
8.1.4 类型名定义typedef 247
8.2 动态数据结构 248
8.2.1 动态分配内存 248
8.2.2 链表 250
8.2.3 堆栈 258
8.2.4 队列 263
8.2.5 二叉树 266
8.3 共用体 271
8.4 位段 274
8.5 枚举类型 277
习题8 279
第9章 文件处理 281
9.1 C语言中的文件 281
9.2 文件类型指针 282
9.3 文件操作 283
9.3.1 文件的打开与关闭 283
9.3.2 文件的输入和输出 285
9.3.3 文件的定位 293
9.3.4 文件的错误检测及错误处理函数 296
习题9 296
10.1 宏定义 297
第10章 编译预处理与位运算 297
10.2 文件包含 302
10.3 条件编译 304
10.4 位运算 306
10.4.1 位运算符 306
10.4.2 与位运算有关的复合赋值运算符 311
习题10 314
附录 317
附录A 常用字符与ASCII代码对照表 317
附录B C运算符一览表 319
附录C 常用库函数 321
参考文献 328