第1章 程序设计基础 1
1.1 程序与程序设计语言 1
1.1.1 程序 1
1.1.2 程序设计语言 2
1.2 算法及其描述 3
1.2.1 算法的概念 3
1.2.2 算法的描述 4
1.2.3 常用算法举例 6
1.3 C语言的发展及其特点 7
1.3.1 语言的发展历史 7
1.3.2 语言的特点 7
1.4 结构化程序设计 8
1.5 C语言程序的开发环境 9
1.5.1 在Turbo c2.0集成环境中开发C语言程序 9
1.5.2 在Visual C++6.0平台中开发C语言程序 11
1.5.3 使用Dev C++编译系统开发C语言程序 13
1.5.4 在UNIX/Linux系统中使用GCC编译器开发C语言程序 16
第2章 语言程序设计的基础知识 17
2.1 C语言的字符集和标识符 17
2.1.1 字符集 17
2.1.2 标识符 17
2.2 C语言程序的基本结构和书写规则 19
2.2.1 C语言程序的基本结构 20
2.2.2 源程序书写格式 21
2.3 数据类型 22
2.3.1 整型数据 22
2.3.2 实数类型 23
2.3.3 字符型数据 24
2.4 常量和变量 24
2.4.1 常量 25
2.4.2 变量 29
2.5 运算符和表达式 33
2.5.1 算术运算符 33
2.5.2 自加和自减运算符 35
2.5.3 取负值运算符 37
2.5.4 赋值运算符 38
2.5.5 逗号运算符 40
2.5.6 条件运算符 41
2.5.7 求字节运算符 43
2.5.8 位运算符 44
2.6 不同数值之间的转换 48
第3章 顺序结构 54
3.1 C语言的语句 54
3.2 数据的输出 57
3.2.1 格式化输出函数printf 57
3.2.2 字符输出函数putchar 65
3.3 数据的输入 66
3.3.1 格式输入函数scanf 66
3.3.2 字符输入函数getchar 68
3.4 顺序结构程序举例 69
第4章 选择结构 77
4.1 关系运算符及关系表达式 77
4.1.1 关系运算符 77
4.1.2 关系表达式 78
4.2 逻辑运算符及逻辑表达式 81
4.2.1 逻辑运算符 81
4.2.2 逻辑表达式 82
4.2.3 逻辑运算符的短路特性 84
4.3 if语句 85
4.3.1 单分支if语句 85
4.3.2 双分支if语句 88
4.3.3 多分支if语句 89
4.3.4 if语句的嵌套 91
4.4 Switch语句 94
4.5 选择结构程序举例 99
第5章 循环结构 111
5.1 while循环结构 111
5.2 do-while循环结构 116
5.3 for循环结构 119
5.4 循环结构的嵌套 123
5.5 break和continue语句 126
5.5.1 break语句 126
5.5.2 continue语句 128
5.5.3 goto语句 130
5.6 循环结构程序举例 131
第6章 函数 147
6.1 库函数 147
6.2 函数的定义和返回值 148
6.2.1 函数定义 148
6.2.2 函数返回值 149
6.3 函数的调用 149
6.3.1 函数的调用方式 150
6.3.2 函数调用时的几点语法说明 150
6.3.3 程序举例 151
6.4 函数的说明 152
6.5 调用函数和被调用函数之间的数据传递 153
第7章 地址和指针 156
7.1 变量的地址和指针 156
7.2 指针变量的定义和指针变量的基类型 157
7.3 给指针变量赋值 158
7.3.1 给指针变量赋地址值 158
7.3.2 给指针变量赋“空”值 160
7.4 对指针变量的操作 161
7.4.1 指针的赋值运算 161
7.4.2 指针的算术运算 162
7.4.3 指针的关系运算 162
7.5 函数之间地址值的传递 164
7.5.1 指针作为函数参数 164
7.5.2 函数返回地址值 165
第8章 数组 167
8.1 一维数组的定义和一维数组元素的引用 167
8.1.1 一维数组的定义 167
8.1.2 一维数组元素的引用 169
8.1.3 一维数组的初始化 169
8.2 一维数组的指针 171
8.2.1 一维数组和数组的元素的地址 171
8.2.2 指向一维数组的指针 172
8.3 函数之间对一维数组和数组元素的引用 173
8.4 一维数组应用举例 176
8.5 二维数组的定义和二维数组元素的引用 180
8.5.1 二维数组的定义 180
8.5.2 二维数组元素的引用 181
8.5.3 二维数组的初始化 182
8.6 二维数组和指针 183
8.6.1 二维数组的地址 183
8.6.2 指向二维数组的指针变量 184
8.7 二维数组名和指针数组作为实参 187
8.7.1 二维数组名作为实参 187
8.7.2 指针数组作为实参时进行的数据传递 187
8.8 二维数组程序举例 189
第9章 字符串 193
9.1 用一维字符数组存放字符串 193
9.2 使指针指向一个字符串 195
9.3 字符串的输入和输出 197
9.4 字符串数组 199
9.5 用于字符串处理的函数 200
9.6 程序举例 202
第10章 对函数的进一步讨论 206
10.1 传给main函数的参数 206
10.2 通过实参向函数传递函数名或指向函数的指针变量 207
10.3 函数的递归调用 209
第11章 C语言中用户标识符的作用域和存储类 214
11.1 C语言程序存储空间分配 214
11.2 局部变量、全局变量和存储分类 215
11.2.1 局部变量 215
11.2.2 全局变量 218
11.2.3 存储分类 218
11.3 局部变量及其作用域和生存期 222
11.4 全局变量及其作用域和生存期 223
11.5 函数的存储分类 225
第12章 结构体、共用体和用户自定义类型 227
12.1 用typedef说明一种新类型 227
12.2 结构体类型 228
12.2.1 结构体类型和变量定义 228
12.2.2 结构体变量的使用 229
12.2.3 指向结构体类型变量的指针 233
12.2.4 结构体作为函数参数 235
12.3 共用体 237
12.3.1 共用体类型和变量定义 237
12.3.2 共用体变量的使用 238
第13章 编译预处理和动态存储分配 243
13.1 编译预处理 243
13.1.1 宏定义 243
13.1.2 文件包含 246
13.1.3 条件编译 248
13.2 动态存储分配 250
13.2.1 动态存储分配的概述 250
13.2.2 动态存储管理的常用函数 251
13.2.3 链表的定义 252
13.2.4 链表的基本操作 254
13.3 指针类型强制转换在动态存储空间使用中的作用 260
13.3.1 指针类型强制转换的形式 260
13.3.2 指针类型强制转换在动态存储管理中的应用 260
第14章 位运算 267
14.1 位运算符 267
14.2 位运算符的运算功能 268
14.2.1 取反运算 268
14.2.2 左移运算 268
14.2.3 右移运算 268
14.2.4 按位与运算 269
14.2.5 按位异或 269
14.2.6 按位或运算 270
第15章 文件 272
15.1 C语言文件的概念 272
15.1.1 C语言文件的分类 272
15.1.2 文件指针 273
15.2 文件的打开与关闭 273
15.2.1 文件打开函数 273
15.2.2 文件的关闭 274
15.3 文件的顺序读写 275
15.3.1 fputc函数和fgetc函数 275
15.3.2 putc函数和getc函数 276
15.3.3 fprintf函数和fscanf函数 277
15.4 随机文件读取 278
15.4.1 文件的定位 279
15.4.2 文件随机读写 279
15.5 文件操作的出错检测 280
15.6 小结 280
附录A ASCII码表 282
附录B 运算符和结合性 283
附录C Turbo C常用库函数 285
附录D C语言中的关键字 293