前言
第1章 绪论 1
1.1 程序设计语言 1
1.1.1 机器语言 1
1.1.2 汇编语言 1
1.1.3 高级语言 2
1.2 C语言概况 2
1.2.1 C语言的发展历史 2
1.2.2 C语言的特点 3
1.3 C语言程序的基本结构 3
1.4 C语言程序的上机执行过程 4
1.5 习题 5
第2章 标记、类型与表达式 7
2.1 标记 7
2.1.1 关键字 7
2.1.2 标识符 7
2.1.3 常量 8
2.1.4 串字面量 10
2.1.5 标点符号 11
2.2 类型 11
2.2.1 基本类型 12
2.2.2 枚举类型 13
2.2.3 空类型 13
2.2.4 派生类型 13
2.2.5 类型的其他分类方法 13
2.3 变量与常用类型说明符 13
2.3.1 变量 13
2.3.2 int类型 14
2.3.3 char类型 15
2.3.4 float类型和double类型 16
2.4 运算符与表达式 17
2.4.1 表达式 17
2.4.2 乘法类运算符 17
2.4.3 加法类运算符 17
2.4.4 运算符的优先级与结合性 18
2.4.5 sizeof运算符 18
2.4.6 一元加运算符与一元减运算符 19
2.4.7 常用算术转换 20
2.4.8 赋值运算符 21
2.4.9 后缀增1运算符与后缀减1运算符 24
2.4.10 前缀增1运算符与前缀减1运算符 25
2.4.11 类型转换运算符 26
2.4.12 逗号运算符 26
2.5 延伸阅读 28
2.5.1 整数转换阶(integer conversion rank) 28
2.5.2 整数提升(integer promotion) 28
2.5.3 常用算术转换(usual arithmetic conversion) 29
2.5.4 副作用(side effect) 30
2.5.5 序点(sequence point) 30
2.5.6 左值(lvalue)和右值(rvalue) 31
2.5.7 数组(array)和函数指示符(function designator) 31
2.6 习题 32
第3章 顺序结构 34
3.1 结构化程序设计 34
3.1.1 算法的基本概念 34
3.1.2 流程图 35
3.2 语句 37
3.2.1 表达式语句 38
3.2.2 复合语句 38
3.3 常用类型数据的输出和输入 39
3.3.1 数据输入/输出的概念 39
3.3.2 常用类型数据和字符串的输出 39
3.3.3 常用类型数据的输入 41
3.4 库函数printf详解 44
3.5 库函数scanf详解 46
3.6 习题 46
第4章 选择结构 49
4.1 关系运算符和相等类运算符 49
4.1.1 关系运算符 49
4.1.2 相等类运算符 50
4.2 逻辑运算符 51
4.2.1 逻辑非运算符 51
4.2.2 逻辑与运算符 51
4.2.3 逻辑或运算符 52
4.3 if语句 53
4.3.1 第一种形式 53
4.3.2 第二种形式 55
4.3.3 嵌套的if语句 57
4.4 条件运算符 61
4.5 switch语句 62
4.6 习题 67
第5章 循环结构 71
5.1 for语句 71
5.2 while语句 78
5.3 do-while语句 83
5.4 标号语句和跳转语句 85
5.4.1 标号语句 85
5.4.2 跳转语句 85
5.5 嵌套的循环语句 89
5.6 习题 94
第6章 数组类型 99
6.1 一维数组 99
6.1.1 数组声明 99
6.1.2 引用数组元素 100
6.1.3 初始化数组 104
6.2 二维数组 105
6.2.1 数组声明 105
6.2.2 引用数组元素 106
6.2.3 初始化数组 108
6.3 数组与字符串 110
6.3.1 使用数组元素类型为char的数组存储字符串 110
6.3.2 常用字符串处理库函数 113
6.4 习题 116
第7章 指针类型 119
7.1 指针与指针变量 119
7.1.1 指针的概念 119
7.1.2 指针变量的声明 120
7.1.3 取地址运算符和间接寻址运算符 120
7.2 指针与一维数组 122
7.2.1 使指针指向数组元素 122
7.2.2 下标运算符 123
7.2.3 引用数组元素 123
7.3 指针与二维数组 125
7.3.1 二维数组中的地址 125
7.3.2 引用数组元素 126
7.4 指针与字符串 129
7.5 指针数组 131
7.6 习题 132
第8章 函数 135
8.1 概述 135
8.2 函数定义 136
8.3 函数声明 138
8.4 函数调用 139
8.4.1 函数调用运算符 139
8.4.2 形参是指针变量 144
8.4.3 形参是一维数组 144
8.4.4 形参是二维数组 146
8.5 实参向形参的单向传递 147
8.6 有形参的main函数 151
8.7 指向函数的指针变量 152
8.8 递归的函数调用 154
8.9 习题 156
第9章 变量的属性和编译预处理 160
9.1 变量的作用域 160
9.1.1 局部变量 160
9.1.2 全局变量 162
9.2 变量的存储类别 163
9.2.1 局部变量的存储类别 163
9.2.2 全局变量的存储类别 165
9.3 宏定义 166
9.3.1 不带参数的宏定义 166
9.3.2 带参数的宏定义 167
9.4 文件包含 168
9.5 条件编译 168
9.6 习题 170
第10章 结构体、共同体和枚举类型 172
10.1 结构体类型 172
10.1.1 结构体类型声明 172
10.1.2 结构体类型的变量声明 173
10.1.3 初始化结构体类型的变量 175
10.1.4 引用结构体类型的变量 176
10.1.5 指向结构体类型的指针变量 178
10.2 结构体类型与数组 180
10.2.1 数组声明 180
10.2.2 引用数组元素的成员 181
10.2.3 初始化数组 181
10.3 结构体类型与函数 184
10.3.1 形参是结构体类型的变量 184
10.3.2 形参是指向结构体类型的指针变量 186
10.3.3 形参是数组元素为结构体类型的数组 187
10.4 单链表 189
10.4.1 动态存储库函数 190
10.4.2 单链表的基本操作 191
10.5 共同体类型 195
10.5.1 共同体类型声明 195
10.5.2 共同体类型的变量声明 196
10.5.3 初始化共同体类型的变量 197
10.5.4 引用共同体类型的变量 197
10.6 枚举类型 200
10.6.1 枚举类型声明 200
10.6.2 枚举常量的值 200
10.6.3 枚举类型的变量声明 201
10.7 typedef声明 203
10.8 习题 204
第11章 文件 208
11.1 文件指针 208
11.2 打开和关闭文件 208
11.2.1 打开文件 208
11.2.2 关闭文件 209
11.3 文件的读写操作 209
11.3.1 字符读写库函数 210
11.3.2 字符串读写库函数 211
11.3.3 库函数fprintf和库函数fscanf 212
11.4 习题 214
附录A 运算符的优先级与结合性 217
附录B ASCII码表 219
附录C Microsoft Visual C++ 6.0使用简介 220
参考文献 225