第1章 C语言概述 1
1.1 计算机程序设计基础 1
1.1.1 计算机的发展 1
1.1.2 计算机语言的发展历史 2
1.2 C语言及其特点 3
1.2.1 C语言的发展简史 3
1.2.2 C语言的特点 4
1.3 C语言程序的运行环境 5
1.4 开发一个简单的C程序 5
1.4.1 C程序的开发过程 5
1.4.2 简单C程序介绍 7
1.4.3 在Visual C++ 6.0中编译及运行一个C程序 9
1.5 习题 9
第2章 基本数据类型、运算符和表达式 11
2.1 字符集与标识符 11
2.1.1 字符集 11
2.1.2 标识符 12
2.2 基本数据类型 13
2.2.1 常量与变量 14
2.2.2 整型数据 16
2.2.3 实型数据 19
2.2.4 字符型数据 20
2.2.5 枚举型数据 22
2.3 运算符与表达式 24
2.3.1 算术运算符与算术表达式 25
2.3.2 关系运算符与关系表达式 26
2.3.3 逻辑运算符与逻辑表达式 27
2.3.4 条件运算符与条件表达式 28
2.3.5 赋值运算符与赋值表达式 29
2.3.6 其他运算符及其表达式 30
2.3.7 运算符与优先级小结 31
2.4 类型转换 32
2.5 习题 34
第3章 数据的输入输出 36
3.1 格式输出函数(printf函数) 36
3.2 格式输入函数(scanf函数) 40
3.3 字符数据输出函数(putchar函数) 43
3.4 字符数据输入函数(getchar函数) 44
3.5 习题 45
第4章 结构化程序设计 47
4.1 C语句概述 47
4.1.1 表达式语句 47
4.1.2 函数调用语句 48
4.1.3 控制语句 48
4.1.4 复合语句 48
4.1.5 空语句 49
4.2 顺序结构 49
4.3 选择结构 50
4.3.1 if语句 51
4.3.2 switch语句 58
4.4 循环结构 62
4.4.1 while循环 62
4.4.2 do-while循环 63
4.4.3 for循环 65
4.4.4 循环控制小结 67
4.5 辅助控制语句 68
4.5.1 break语句 68
4.5.2 continue语句 69
4.5.3 goto语句 69
4.6 习题 70
第5章 数组 73
5.1 一维数组 73
5.1.1 一维数组的定义 73
5.1.2 一维数组元素的引用 75
5.1.3 一维数组的初始化 75
5.1.4 一维数组程序举例 77
5.2 二维数组 79
5.2.1 二维数组的定义 79
5.2.2 二维数组的引用 80
5.2.3 二维数组的初始化 81
5.2.4 二维数组程序举例 81
5.3 字符数组和字符串 84
5.3.1 字符数组的定义及引用 84
5.3.2 字符数组的初始化 84
5.3.3 字符数组的输入输出 85
5.3.4 字符串处理函数 87
5.3.5 字符数组程序举例 90
5.4 习题 92
第6章 函数 95
6.1 函数的定义与声明 95
6.1.1 函数概述 95
6.1.2 函数的分类 96
6.1.3 函数的定义 98
6.1.4 函数的声明 99
6.1.5 函数参数和函数的返回值 100
6.2 函数的调用 101
6.2.1 函数调用的一般形式 101
6.2.2 函数调用的条件 102
6.2.3 函数调用的方式 102
6.2.4 函数的传值调用 102
6.2.5 函数的嵌套调用 103
6.2.6 函数的递归调用 104
6.3 变量的存储类别 107
6.3.1 局部变量和全局变量 108
6.3.2 变量的存储类别 111
6.4 内部函数和外部函数 116
6.4.1 内部函数 116
6.4.2 外部函数 117
6.5 习题 117
第7章 编译预处理 120
7.1 概述 120
7.2 宏定义 120
7.2.1 无参宏定义 121
7.2.2 带参宏定义 123
7.3 文件包含 127
7.4 条件编译 128
7.5 习题 131
第8章 结构体、共用体及其他 133
8.1 结构体类型 133
8.1.1 结构体的概念 133
8.1.2 结构体变量的定义 134
8.1.3 结构体变量的引用 136
8.1.4 结构体变量的初始化 137
8.1.5 结构体数组 138
8.1.6 结构体与函数 141
8.2 共用体类型 142
8.2.1 共用体的概念 142
8.2.2 共用体变量的定义 143
8.2.3 共用体变量的引用 144
8.2.4 共用体变量的初始化 144
8.3 用typedef定义类型 145
8.4 习题 147
第9章 指针 149
9.1 指针的概念 149
9.2 指针与变量 150
9.2.1 指针变量的定义 150
9.2.2 指针变量的初始化 151
9.2.3 指针变量的引用 152
9.2.4 指针变量作为函数参数 154
9.3 指针与数组 157
9.3.1 指针与一维数组 157
9.3.2 指针与多维数组 159
9.3.3 指针与字符串 161
9.3.4 指向数组的指针变量作为函数参数 163
9.4 指针与函数 166
9.4.1 用函数的指针变量调用函数 166
9.4.2 用指向函数的指针作函数的参数 167
9.4.3 返回指针值的函数 169
9.5 指针数组和指向指针的指针 170
9.5.1 指针数组 170
9.5.2 指向指针的指针 174
9.5.3 main()函数的参数 175
9.5.4 void指针类型 175
9.6 指向结构体的指针 176
9.6.1 指向结构体变量的指针变量 176
9.6.2 指向结构体数组的指针变量 178
9.6.3 用指向结构体的指针变量作函数的参数 179
9.7 链表的概念 180
9.7.1 动态存储分配 181
9.7.2 单链表的建立 182
9.7.3 从单链表中删除结点 187
9.7.4 向链表中插入结点 190
9.8 习题 194
第10章 位运算 196
10.1 位运算符与位运算表达式 196
10.1.1 “按位与”运算符(&) 196
10.1.2 “按位或”运算符(|) 198
10.1.3 “按位异或”运算符(∧) 198
10.1.4 “按位取反”运算符(~) 200
10.1.5 左移运算符(<<) 200
10.1.6 右移运算符(>>) 200
10.1.7 位运算赋值运算符 201
10.1.8 不同长度的数据进行位运算 201
10.2 位域 201
10.2.1 位域的定义和位域变量的说明 201
10.2.2 位域的使用 203
10.3 习题 204
第11章 文件 205
11.1 C文件概述 205
11.2 文件类型指针 206
11.3 文件的打开与关闭 207
11.3.1 文件的打开 207
11.3.2 文件的关闭 209
11.4 文件的顺序读/写 209
11.4.1 文件的字符输入/输出 209
11.4.2 文件的字符串输入/输出 212
11.4.3 文件的数据块输入/输出 214
11.4.4 文件的格式化输入/输出 217
11.5 文件的定位和随机读/写 218
11.5.1 fseek函数 218
11.5.2 rewind函数 219
11.5.3 ftell函数 220
11.6 文件的出错检测 220
11.6.1 文件结束检测函数feof 220
11.6.2 读写文件出错检测函数ferror 220
11.6.3 文件出错标志和文件结束标志置0函数clearerr 220
11.7 习题 221
第12章 上机操作指导 223
12.1 熟悉VC++的编辑、编译、连接和运行 223
12.2 数据类型及顺序结构 225
12.3 输入和输出操作 226
12.4 选择结构程序设计 228
12.5 循环结构程序设计 230
12.6 数组 232
12.7 字符数据处理 233
12.8 函数的定义和调用 234
12.9 编译预处理 236
12.10 结构体和共用体 237
12.11 用指针的思想编写程序 238
12.12 文件 239
第13章 综合应用实例 241
13.1 程序设计方法总结 241
13.2 C语言程序设计实例 242
13.2.1 电子词典程序 242
13.2.2 图书管理系统 250
附录 常见错误 264
部分习题参考答案 271