第1章 C语言及算法概述 1
1.1 程序设计语言 1
1.1.1 计算机语言 1
1.1.2 计算机语言的发展 1
1.2 C语言概述 3
1.2.1 C语言的发展历史 3
1.2.2 C语言的特点 4
1.3 C语言程序初体验 5
1.4 算法概述 11
1.4.1 算法的概念 11
1.4.2 算法的特性 11
1.4.3 算法的表示方法 12
习题一 15
第2章 数据类型、运算符与表达式 18
2.1 C语言的数据类型 18
2.2 常量 18
2.2.1 整型常量 19
2.2.2 实型常量 19
2.2.3 符号常量 19
2.2.4 字符型常量 20
2.2.5 字符串常量 21
2.3 变量 21
2.3.1 整型变量 23
2.3.2 实型变量 25
2.3.3 字符型变量 25
2.4 数值型数据间的混合运算 27
2.5 算术运算符和算术表达式 28
2.5.1 基本的算术运算符及表达式 28
2.5.2 自增运算符和自减运算符 29
2.6 赋值运算符和赋值表达式 30
2.6.1 赋值运算符 30
2.6.2 赋值类型转换 31
2.6.3 复合赋值运算符 33
2.6.4 赋值表达式 33
2.7 逗号运算符和逗号表达式 34
习题二 35
第3章 顺序结构程序设计 38
3.1 C语句概述 38
3.1.1 C语句的作用与分类 38
3.1.2 赋值语句 40
3.2 C语言中数据的输入与输出 41
3.2.1 数据输入输出的概念及在C语言中的实现 41
3.2.2 格式输出函数——printf 42
3.2.3 格式输入函数——scanf 49
3.2.4 字符输出函数——putchar 53
3.2.5 字符输入函数——getchar 54
3.3 顺序结构程序设计举例 55
习题三 57
第4章 选择结构程序设计 61
4.1 关系运算 61
4.1.1 关系运算符 61
4.1.2 关系表达式 61
4.2 逻辑运算 62
4.2.1 逻辑运算符 62
4.2.2 逻辑表达式 62
4.3 if语句 64
4.3.1 if语句的一般形式 64
4.3.2 if语句的嵌套 68
4.4 条件运算符与条件表达式 69
4.5 switch语句 71
4.6 选择结构程序设计举例 74
习题四 78
第5章 循环结构程序设计 81
5.1 while语句 81
5.2 do…while语句 82
5.3 for语句 84
5.4 辅助控制语句 87
5.4.1 break语句 87
5.4.2 continue语句 88
5.5 循环嵌套 89
5.6 goto语句 90
5.7 循环结构程序设计举例 91
习题五 94
第6章 数组 97
6.1 一维数组 97
6.1.1 一维数组的定义和初始化 97
6.1.2 一维数组元素的引用 98
6.1.3 一维数组应用举例 99
6.2 二维数组 102
6.2.1 二维数组的定义 102
6.2.2 二维数组的初始化 103
6.2.3 二维数组元素的引用 104
6.2.4 二维数组应用举例 104
6.3 字符数组 107
6.3.1 字符数组的定义和初始化 107
6.3.2 字符数组的输入输出 108
6.3.3 字符串处理函数 110
6.3.4 字符数组应用举例 113
习题六 115
第7章 函数 118
7.1 函数的作用 118
7.2 C程序的基本结构 118
7.3 函数分类 119
7.4 函数定义 120
7.4.1 函数定义的一般形式 120
7.4.2 函数的参数与返回值 121
7.5 函数的调用 123
7.5.1 函数的调用形式 123
7.5.2 对被调用函数的声明 125
7.6 函数的嵌套调用和递归调用 125
7.6.1 函数的嵌套调用 125
7.6.2 函数的递归调用 127
7.7 数组作为函数参数 128
7.7.1 数组元素作为函数参数 128
7.7.2 数组名作为函数参数 131
7.8 局部变量和全局变量 135
7.8.1 局部变量 135
7.8.2 全局变量 137
7.9 变量的存储类别 139
7.9.1 静态存储方式和动态存储方式 139
7.9.2 局部变量的存储方式 139
7.9.3 全局变量的存储方式 141
7.9.4 存储类型总结 141
习题七 142
第8章 指针 146
8.1 指针的基础知识 146
8.1.1 内存地址及指针 146
8.1.2 指针变量的定义 147
8.1.3 指针基本操作 148
8.1.4 指针变量作为函数参数 150
8.2 指针和数组 152
8.2.1 指针与一维数组 152
8.2.2 指针与二维数组 159
8.3 指针与字符串 163
8.3.1 用字符指针访问字符串 163
8.3.2 字符指针变量和字符数组的区别 165
8.3.3 字符指针变量作为函数参数 167
8.4 指针数组和指向指针的指针 169
8.4.1 指针数组 169
8.4.2 指向指针的指针 172
8.5 指针与函数 174
8.5.1 指针作为函数的返回值 174
8.5.2 指向函数的指针 174
习题八 177
第9章 结构体与共用体 179
9.1 结构体概述 179
9.2 结构体类型变量 180
9.2.1 结构体变量的定义 180
9.2.2 结构体变量的引用及初始化 182
9.2.3 指向结构体变量的指针变量 185
9.3 结构体数组 187
9.3.1 结构体数组的定义及初始化 188
9.3.2 结构体数组元素的引用 189
9.3.3 指向结构体数组元素的指针变量 191
9.4 结构体类型数据作为函数参数 192
9.5 链表 193
9.5.1 链表概述 194
9.5.2 静态链表 195
9.5.3 动态链表 199
9.6 共用体 205
9.6.1 共用体类型定义 205
9.6.2 共用体变量的定义与引用 206
9.6.3 使用共用体类型数据时的注意事项 207
9.7 枚举类型 209
9.8 用typedef定义类型 210
习题九 213
第10章 文件 219
10.1 C语言文件概述 219
10.1.1 文件简介 219
10.1.2 文件的分类 220
10.1.3 缓冲文件系统 220
10.1.4 文件类型指针 221
10.2 文件操作函数 222
10.2.1 打开与关闭文件的函数 222
10.2.2 读写数据文件内容的函数 225
10.2.3 文件的定位和随机读写 234
10.2.4 出错检测函数 236
习题十 237
第11章 预处理和位运算 240
11.1 预处理 240
11.1.1 宏定义 240
11.1.2 文件包含 247
11.1.3 条件编译 250
11.2 位运算 252
11.2.1 位运算符 252
11.2.2 位运算应用举例 256
习题十一 257
附录 261
附录1 常用字符与ASCII码对照表 261
附录2 C语言的关键字及说明 262
附录3 运算符的优先级和结合性 262
附录4 常用的C语言库函数 263
参考文献 268