第1章 C语言概述 1
1.1 C语言的历史 1
1.2 C语言的特点 2
1.3 C语言程序的开发过程 3
1.3.1 C语言调试步骤 3
1.3.2 Visual C++ 6.0环境下调试程序的方法 4
1.4 简单的C语言程序 7
习题 9
第2章 数据类型、运算符和表达式 11
2.1 数据类型 11
2.2 常量与变量 12
2.3 整型数据 14
2.4 实型数据 17
2.5 字符型数据 19
2.6 类型转换 22
2.7 基本运算符和表达式 24
2.7.1 算术运算符和算术表达式 25
2.7.2 赋值运算符和赋值表达式 27
2.7.3 逗号运算符和逗号表达式 29
2.7.4 求字节数运算符 30
习题 31
第3章 顺序结构程序设计 34
3.1 结构化程序设计 34
3.2 C语言的语句 36
3.3 数据的输出 37
3.3.1 格式输出函数——printf函数 37
3.3.2 字符输出函数——putchar函数 42
3.4 数据的输入 43
3.4.1 格式输入函数——scanf函数 43
3.4.2 字符输入函数——getchar函数 45
3.5 程序举例 46
习题 47
第4章 选择结构程序设计 51
4.1 关系运算符、逻辑运算符、条件运算符 51
4.1.1 关系运算符和表达式 51
4.1.2 逻辑运算符和表达式 53
4.1.3 条件运算符和条件表达式 55
4.2 选择结构程序设计 56
4.2.1 if语句 56
4.2.2 switch语句 62
4.3 程序举例 65
习题 67
第5章 循环结构程序设计 72
5.1 while语句 72
5.2 do-while语句 75
5.3 for语句 78
5.4 break语句和continue语句 82
5.4.1 break语句 82
5.4.2 continue语句 84
5.5 循环嵌套 85
5.6 程序举例 87
习题 92
第6章 数组 99
6.1 一维数组 99
6.1.1 一维数组的定义和引用 99
6.1.2 一维数组的初始化 103
6.1.3 一维数组程序举例 104
6.2 二维数组 111
6.2.1 二维数组的定义和引用 111
6.2.2 二维数组的初始化 113
6.2.3 二维数组程序举例 116
6.3 字符数组与字符串 119
6.3.1 字符数组的定义和初始化 119
6.3.2 字符串 121
6.3.3 字符串处理函数 126
6.3.4 程序举例 128
习题 132
第7章 函数 138
7.1 函数概述 138
7.2 函数定义 139
7.2.1 函数定义的一般形式 139
7.2.2 函数的返回值 141
7.3 函数调用 143
7.3.1 函数调用的一般形式 143
7.3.2 参数传递 144
7.3.3 对被调用函数的声明 146
7.3.4 函数的嵌套调用 147
7.4 函数的递归调用 150
7.5 数组作函数参数 152
7.5.1 数组元素作函数参数 152
7.5.2 数组名作函数参数 153
7.6 局部变量和全局变量 157
7.6.1 局部变量 157
7.6.2 全局变量 159
7.7 变量的存储类别 160
7.7.1 动态存储方式与静态存储方式 160
7.7.2 变量的存储类别 161
习题 164
第8章 指针 174
8.1 指针的基本概念 174
8.1.1 变量与地址 174
8.1.2 指针与指针变量 175
8.1.3 直接访问与间接访问 175
8.2 指针变量的定义和引用 175
8.2.1 指针变量的定义 175
8.2.2 指针变量的引用 176
8.2.3 指针变量的算术运算 179
8.2.4 指针变量作为函数的参数 180
8.3 指针与一维数组 182
8.3.1 通过指针变量引用数组元素 182
8.3.2 用数组名及指针作为函数的参数 184
8.4 指针与二维数组 188
8.4.1 二维数组的地址 188
8.4.2 指向二维数组的指针变量 191
8.5 指针与字符串 192
8.5.1 字符串的表现形式及访问方式 192
8.5.2 使用字符数组和字符型指针变量处理字符串的区别 196
8.6 指针与函数 198
8.6.1 返回指针值的函数 198
8.6.2 指向函数的指针 199
8.7 二级指针和指针数组 200
8.7.1 二级指针 200
8.7.2 指针数组 201
8.7.3 main函数的参数 204
习题 206
第9章 结构体与链表 216
9.1 结构体类型变量的定义 216
9.2 结构体类型变量的引用 219
9.3 结构体的初始化 221
9.4 结构体与数组 223
9.4.1 结构体中包含数组 223
9.4.2 结构体数组 223
9.5 结构体和指针 226
9.5.1 结构体中包含指针 226
9.5.2 指向结构体的指针 228
9.6 用结构体指针处理链表 232
9.6.1 链表介绍 232
9.6.2 动态存储分配 233
9.6.3 链表的基本操作 235
9.7 共用体 248
9.8 枚举 251
9.8.1 枚举类型的定义和枚举变量的定义 251
9.8.2 枚举变量的使用 252
9.9 类型定义 254
9.10 应用举例 256
习题 258
第10章 文件 268
10.1 文件概述 268
10.2 文件类型指针 270
10.3 文件的打开与关闭 270
10.3.1 文件打开函数fopen 270
10.3.2 文件关闭函数fclose 272
10.4 文件的读写操作 272
10.4.1 字符读写函数:fgetc和fputc 272
10.4.2 格式化读写函数:fscanf和fprintf 275
10.4.3 数据块读写函数:fread和fwrite 277
10.4.4 字符串读写函数:fgets和fputs 279
10.5 文件定位函数 280
10.5.1 rewind函数 280
10.5.2 fseek函数 281
习题 283
第11章 编译预处理 288
11.1 宏定义 288
11.1.1 无参数的宏定义 289
11.1.2 带参数的宏定义 291
11.2 文件包含 293
11.3 条件编译 296
11.3.1 #if命令 296
11.3.2 #ifdef…#else…#endif 296
11.3.3 #ifndef…#else…#endif 298
11.3.4 #undef 298
11.3.5 应用举例 298
习题 300
第12章 位运算 303
12.1 二进制位逻辑运算 303
12.1.1 “按位与”运算符& 304
12.1.2 “按位或”运算符| 305
12.1.3 “按位异或”运算符^ 306
12.1.4 “按位取反”运算符~ 307
12.2 移位运算 307
12.2.1 左移运算符〈〈 307
12.2.2 右移运算符〉〉 308
习题 309
附录 312
参考文献 319