第1章 C语言程序设计基础 1
1.1 程序与程序设计语言 1
1.1.1 程序与指令 1
1.1.2 程序设计语言 1
1.1.3 高级语言程序的开发过程 2
1.2 C语言概述 4
1.2.1 C语言的产生与发展 4
1.2.2 C语言的特点 5
1.2.3 C语言的应用 5
1.3 C语言开发程序 6
1.3.1 用C语言开发程序的过程 6
1.3.2 算法的概念和特征 8
1.3.3 结构化程序设计方法 8
1.3.4 算法的表示 9
1.3.5 C语言程序的结构 11
1.4 C语言程序的实现 13
1.4.1 C语言程序的开发过程 13
1.4.2 VC++ 6.0集成开发环境 14
1.4.3 C语言运行环境 19
习题 20
第2章 数据类型、运算符和表达式 23
2.1 从数学上的“数”过渡到计算机中的“数” 23
2.2 数据类型概述 24
2.3 常量和变量 25
2.3.1 常量 25
2.3.2 变量 25
2.3.3 变量名规则 26
2.3.4 变量的定义 26
2.4 整数类型 27
2.4.1 整型常量 27
2.4.2 整型变量 27
2.5 实数类型 29
2.5.1 实型常量 29
2.5.2 实型变量 30
2.6 字符类型 30
2.6.1 字符型常量 31
2.6.2 字符型变量 32
2.6.3 字符数据在内存中的存储形式及其使用 32
2.7 不同数据类型之间的转换 33
2.7.1 自动类型转换 33
2.7.2 强制类型转换 34
2.8 运算符与表达式 35
2.8.1 算术运算符与算术表达式 35
2.8.2 赋值运算符与赋值表达式 37
2.8.3 关系运算符与关系表达式 38
2.8.4 逻辑运算符与逻辑表达式 39
2.8.5 条件运算符与条件表达式 41
2.8.6 逗号运算符与逗号表达式 42
2.9 运算符与表达式的综合练习 42
2.9.1 正确的C语言表达式书写 42
2.9.2 复杂表达式的分析 43
习题 45
第3章 顺序程序设计 48
3.1 C语句 48
3.1.1 C语句概述 48
3.1.2 赋值语句 49
3.2 字符数据的输入/输出 50
3.2.1 数据输入/输出的概念及在C语言中的实现 50
3.2.2 字符的输出函数putchar函数 50
3.2.3 字符的输入函数 51
3.3 格式化输入与输出函数 54
3.3.1 格式化的输出函数printf函数 54
3.3.2 格式化的输入函数scanf函数 58
3.4 顺序结构程序设计举例 62
习题 63
第4章 选择结构 65
4.1 if语句 65
4.1.1 单选择结构 65
4.1.2 if-else语句 68
4.1.3 if-elseif-else语句 70
4.1.4 嵌套if结构 74
4.2 switch结构 75
4.3 多重if结构和switch结构的比较 77
4.4 应用举例 79
习题 80
第5章 循环结构 87
5.1 循环结构简介 87
5.2 while语句 87
5.3 do-while语句 90
5.4 for语句 92
5.4.1 基本的for语句 92
5.4.2 各种特殊形式的for语句 94
5.5 三种循环语句的比较 96
5.6 break语句 97
5.7 continue语句 98
5.8 嵌套循环 100
5.9 应用举例 103
习题 105
第6章 函数 111
6.1 函数概述 111
6.2 函数的定义与调用 113
6.2.1 函数的定义 113
6.2.2 函数的调用、参数及传递方式 114
6.2.3 函数的返回值 117
6.2.4 函数声明的作用 119
6.2.5 main函数中的参数 120
6.3 函数的嵌套调用与递归调用 120
6.3.1 函数的嵌套调用 120
6.3.2 函数的递归调用 122
6.4 变量的作用域与存储类型 127
6.4.1 变量的作用域 127
6.4.2 全局变量 128
6.4.3 变量的存储类型 129
6.5 常用系统函数 135
6.5.1 数学函数 135
6.5.2 输入输出函数 136
6.5.3 时间函数 137
6.5.4 随机数函数 137
习题 138
第7章 数组 143
7.1 数组的概念 143
7.2 数组的定义 144
7.2.1 一维数组 144
7.2.2 二维数组 149
7.3 数组作为函数的参数 153
7.3.1 用数组元素作函数实参 153
7.3.2 用数组名作函数参数 154
7.3.3 用多维数组名作函数参数 156
7.4 数组应用举例 157
7.5 字符串 165
7.5.1 字符串概念 165
7.5.2 字符串函数 168
7.5.3 字符串应用举例 171
习题 174
第8章 指针 180
8.1 指针的概念 180
8.2 指针变量 180
8.2.1 指针定义 180
8.2.2 指针运算符(&和*) 181
8.2.3 指针作为函数的参数 182
8.2.4 多级指针与指针数组 185
8.3 指针运算 186
8.4 指针与数组 188
8.4.1 指针与一维数组 188
8.4.2 指针与二维数组 190
8.4.3 指针与字符数组 192
8.4.4 指针与函数 195
8.5 动态存储分配 199
习题 204
第9章 编译预处理 209
9.1 宏定义 209
9.1.1 不带参数的宏定义 209
9.1.2 带参数的宏定义 211
9.2 文件包含 214
9.3 条件编译 216
习题 218
第10章 结构体和共用体 219
10.1 结构体类型定义和结构体变量说明 219
10.1.1 结构体的定义 219
10.1.2 结构体类型变量的说明 220
10.2 结构体变量的引用和初始化 222
10.2.1 结构体类型变量的引用 222
10.2.2 结构体变量的初始化 223
10.3 结构体指针变量 226
10.3.1 指向结构体变量的指针 226
10.3.2 指向结构体数组的指针 227
10.3.3 结构体指针变量做函数参数 229
10.4 常用的内存管理函数 230
10.5 链表 231
10.5.1 简单链表的建立 232
10.5.2 链表的查找 233
10.5.3 链表的删除 233
10.5.4 链表的插入 234
10.5.5 链表的输出 235
10.6 共用体 238
10.6.1 共用体的定义 238
10.6.2 共用体变量的说明 238
10.6.3 共用体变量的赋值和使用 239
10.7 枚举类型数据 240
10.8 用typedef定义类型 242
10.9 综合实例 243
习题 245
第11章 位运算 249
11.1 位运算概述 249
11.1.1 计算机内数据的表示方法 249
11.1.2 位运算及其运算符 250
11.2 位运算 250
11.2.1 按位与 250
11.2.2 按位或 251
11.2.3 按位异或 251
11.2.4 按位取反 252
11.2.5 按位左移 253
11.2.6 按位右移 253
11.2.7 位复合赋值运算符 255
11.2.8 位运算符的优先级 255
11.2.9 不同长度的数据进行位运算 255
11.3 位段 255
11.3.1 位段的定义 255
11.3.2 位段的引用 256
11.4 综合案例分析 258
习题 260
第12章 文件 262
12.1 文件概述 262
12.1.1 文件的基本概念 262
12.1.2 文件系统 262
12.1.3 文件的编码方式 263
12.1.4 文件指针 263
12.2 文件的打开与关闭 264
12.2.1 文件的打开(fopen函数) 264
12.2.2 文件的使用方式 265
12.2.3 文件的关闭(fclose函数) 266
12.3 文件的顺序读取 266
12.3.1 字符的读写函数(fgetc和fputc) 267
12.3.2 字符串的读写函数(fgets和fputs) 268
12.3.3 格式化的读写函数(fscanf和fprintf) 269
12.3.4 数据块的读写函数(fread和fwrite) 269
12.4 文件的定位与随机读写 270
12.4.1 文件定位函数 271
12.4.2 文件的随机读写操作 271
12.5 文件的出错检测 272
习题 273
附录A 基本控制字符/字符与ASCII值对照表 275
附录B C语言操作符的优先级 276
参考文献 277