第1章 计算机基础知识 1
1.1 计算机的硬件组成 1
1.1.1 运算器 1
1.1.2 控制器 1
1.1.3 存储器 1
1.1.4 输入设备 3
1.1.5 输出设备 3
1.2 数制及数制间的转换 3
1.2.1 二进制 3
1.2.2 八进制 5
1.2.3 十六进制 5
1.3 原码、反码和补码 6
1.3.1 原码 6
1.3.2 反码 6
1.3.3 补码 6
1.4 路径及其表示* 6
1.4.1 路径的概念 6
1.4.2 当前盘和当前目录 7
1.4.3 绝对路径和相对路径 7
1.5 计算机语言 8
1.5.1 机器语言 8
1.5.2 汇编语言 9
1.5.3 高级语言 10
1.6 算法 11
1.6.1 算法的概念 11
1.6.2 算法的特性 12
1.6.3 算法的表示 12
1.6.4 程序的3种基本结构 13
习题1 14
第2章 C程序和C编译器简介 16
2.1 C语言及C标准简介 16
2.1.1 C语言的出现 16
2.1.2 C语言的特点 16
2.1.3 C标准 17
2.2 简单的C程序 18
2.3 C程序的构成 22
2.4 C编译器及操作简介 24
2.4.1 Turbo C 2.0编程环境及常用操作简介 24
2.4.2 Visual C++ 6.0编程环境及常用操作简介 28
习题2 33
第3章 C编程基础知识 35
3.1 常量和变量 35
3.1.1 常量 35
3.1.2 变量 35
3.2 基本数据类型 40
3.2.1 整型数据 40
3.2.2 实型数据 42
3.2.3 字符型数据 45
3.2.4 字符串 47
3.3 符号常量和常变量 48
3.3.1 符号常量 48
3.3.2 常变量 48
3.4 运算符和表达式 49
3.4.1 算术运算符 49
3.4.2 赋值运算符和赋值表达式 50
3.4.3 自增自减运算符 51
3.4.4 逗号运算符和逗号表达式 53
3.4.5 类型转换运算符 54
3.5 数据的类型转换 55
习题3 55
第4章 顺序结构程序设计 59
4.1 赋值语句 59
4.1.1 赋值语句及其执行过程 59
4.1.2 赋值的几种数据处理方式 59
4.2 输入输出函数 63
4.2.1 缓冲区的概念及作用 63
4.2.2 getchar()和putchar() 64
4.2.3 printf()和scanf() 65
4.3 顺序结构程序设计举例 70
习题4 72
第5章 选择结构程序设计 76
5.1 关系运算符和关系表达式 76
5.1.1 关系运算符 76
5.1.2 关系表达式 76
5.2 逻辑运算符和逻辑表达式 77
5.2.1 逻辑运算符 77
5.2.2 逻辑表达式 78
5.3 if语句 79
5.3.1 if语句的格式 79
5.3.2 if语句的使用说明 80
5.3.3 嵌套的if语句 83
5.3.4 if语句应用举例 85
5.3.5 if语句编程的常见问题 87
5.4 条件运算符和条件表达式 92
5.5 switch语句 93
5.5.1 switch语句的格式及执行过程 94
5.5.2 switch语句应用举例 96
5.5.3 switch语句编程的常见错误 97
习题5 98
第6章 循环结构程序设计 104
6.1 循环及其实现思想 104
6.2 循环语句 105
6.2.1 while循环 105
6.2.2 do-while循环 107
6.2.3 for循环 108
6.2.4 3种循环的比较 110
6.3 循环的控制 111
6.3.1 计数器控制循环和其他条件控制循环 111
6.3.2 break和continue 112
6.3.3 循环结束后循环变量的值与终值的比较 115
6.4 多重循环 116
6.5 循环编程举例 117
习题6 126
第7章 函数 132
7.1 函数的作用 132
7.2 函数的定义 134
7.2.1 函数定义的格式 134
7.2.2 函数的返回值 134
7.2.3 函数参数的设置 138
7.3 函数的调用 140
7.3.1 函数调用前的声明 140
7.3.2 函数调用的方式 142
7.4 函数的参数传递 143
7.4.1 形参与实参 143
7.4.2 参数的传递 143
7.4.3 参数传递的单向性 144
7.5 函数的嵌套调用 145
7.6 递归函数 146
7.6.1 递归的条件 146
7.6.2 递归函数的执行过程 147
7.6.3 递归与迭代 149
7.7 函数编程举例 150
7.8 内部函数和外部函数 153
习题7 154
第8章 变量的作用域和存储类别 158
8.1 变量的作用域 158
8.1.1 局部变量 158
8.1.2 全局变量 158
8.2 同名变量的辨析 160
8.3 变量的存储类别和生存期 162
8.3.1 内存的存储区域 162
8.3.2 动态变量 162
8.3.3 静态变量 163
8.4 变量的作用域和生存期 164
习题8 165
第9章 编译预处理 168
9.1 宏定义 168
9.1.1 无参宏定义 168
9.1.2 有参宏定义 169
9.1.3 嵌套的宏定义 170
9.2 文件包含 170
9.2.1 文件包含的格式 170
9.2.2 文件包含的作用 171
9.2.3 文件包含两种格式的区别 171
9.3 条件编译 172
9.3.1 条件编译的格式 172
9.3.2 条件编译应用举例 174
习题9 175
第10章 用指针变量访问变量 178
10.1 指针和指针变量 178
10.1.1 指针和指针变量的概念 178
10.1.2 直接寻址和间接寻址 179
10.1.3 指针变量的值、地址及类型 181
10.2 通过指针变量访问变量 181
10.2.1 指针变量的定义 181
10.2.2 指针变量的赋值 182
10.2.3 通过指针变量间接访问一个变量 183
10.3 指针变量在函数传递中的作用 183
习题10 188
第11章 数组 191
11.1 一维数组 191
11.1.1 一维数组的定义 191
11.1.2 一维数组的元素构成及一维数组的存储结构 192
11.1.3 数组名的指针类型 192
11.1.4 数组元素的表示方法 193
11.1.5 一维数组的引用 194
11.1.6 一维数组的初始化 196
11.1.7 一维数组应用举例 196
11.2 二维数组 201
11.2.1 二维数组的定义 201
11.2.2 二维数组的元素构成及二维数组的存储结构 202
11.2.3 二维数组名的指针类型 202
11.2.4 二维数组中下标变量的表示方法 203
11.2.5 二维数组的引用 204
11.2.6 二维数组的初始化 205
11.2.7 二维数组应用举例 205
11.3 字符数组和字符串处理函数 206
11.3.1 字符数组 206
11.3.2 字符串处理函数 207
11.3.3 字符数组应用举例 211
习题11 213
第12章 用指针变量访问下标变量 218
12.1 用指针变量访问下标变量的方法 218
12.1.1 知识回顾 218
12.1.2 用指针变量访问一维数组中的下标变量 218
12.1.3 用指针变量访问二维数组中的下标变量 220
12.2 用指针变量访问下标变量的适用场合 221
习题12 224
第13章 指针综述 228
13.1 指针类型简介 228
13.2 指向变量的指针 229
13.2.1 指向变量的指针常量 229
13.2.2 指向变量的指针变量 229
13.3 指向数组的指针 230
13.3.1 指向一维数组的指针常量 230
13.3.2 指向一维数组的指针变量 231
13.3.3 指向一维数组的指针变量的适用场合 232
13.4 指针与字符串 233
13.4.1 字符串的表示方式 233
13.4.2 用指针变量处理字符串 235
13.5 指针与函数 237
13.5.1 函数的入口地址 237
13.5.2 指向函数的指针变量 237
13.5.3 指向函数的指针变量的作用 238
13.5.4 指针函数 239
13.6 指针数组 240
13.6.1 指针数组的定义 240
13.6.2 指针数组的引用 241
13.6.3 指针数组应用举例 241
13.7 指向指针变量的指针 241
13.7.1 指向指针变量的不可变指针 241
13.7.2 指向指针变量的指针变量 242
13.7.3 应用举例 242
13.8 带参数的main()函数 245
13.8.1 C语言对main()函数参数的规定 245
13.8.2 带参数main()函数的作用 245
13.8.3 带参数的main()函数的执行过程 246
13.8.4 程序举例 246
13.9 动态内存分配 247
13.9.1 动态内存分配函数 247
13.9.2 动态内存分配举例 248
习题13 249
第14章 数据类型的自定义 254
14.1 结构体的定义和结构体变量的定义 254
14.1.1 结构体的概念和结构体的定义 254
14.1.2 结构体变量的定义和空间分配 256
14.1.3 结构体变量的初始化 258
14.1.4 结构体数组的定义和初始化 259
14.2 结构体变量的引用 259
14.2.1 结构体变量的引用方法 259
14.2.2 结构体变量引用举例 260
14.3 用指针变量操作结构体变量 261
14.3.1 为什么要通过指针变量访问结构体变量 261
14.3.2 应用举例 262
14.4 链表及链表操作简介 263
14.4.1 链表的概念 263
14.4.2 使用链表的优点 264
14.4.3 链表操作简介 264
14.5 共用体 269
14.5.1 共用体的概念 269
14.5.2 共用体的作用 270
14.5.3 共用体及共用体变量的定义 271
14.5.4 共用体变量(数组)的初始化 272
14.5.5 共用体变量的引用 272
14.6 枚举类型 273
14.6.1 枚举类型的定义 273
14.6.2 枚举变量的定义 274
14.6.3 枚举变量的使用 274
14.6.4 枚举应用举例 274
14.7 用typedef定义类型别名 275
习题14 277
第15章 位运算 280
15.1 C语言中的位运算符 280
15.2 位运算及应用 281
15.2.1 按位与 281
15.2.2 按位或 282
15.2.3 异或 283
15.2.4 取反 284
15.2.5 左移 284
15.2.6 右移 285
习题15 286
第16章 文件 288
16.1 文件及相关的概念 288
16.1.1 文件的范畴 288
16.1.2 文件中存储数据的两种方式 288
16.1.3 文件的种类 289
16.1.4 文件操作函数及缓冲区的概念 290
16.2 文件读写的原理 291
16.3 文件的读写位置指针和文件结束标志 292
16.3.1 读写位置指针 292
16.3.2 文件结束标志 292
16.4 文件的打开和关闭 293
16.4.1 文件的打开 293
16.4.2 文件的关闭 299
16.5 文件的读写 300
16.5.1 fgetc()和fputc() 301
16.5.2 fread()和fwrite() 303
16.5.3 fgets()和fputs() 307
16.5.4 fscanf()和fprintf() 308
16.6 读写位置指针的移动和定位 310
16.6.1 移动读写位置指针的函数 310
16.6.2 两个与读写位置指针有关的函数 311
16.7 文件的出错检测 312
16.8 文件操作举例 313
习题16 317
第17章 综合应用举例 320
17.1 简单的计算器(一) 320
17.2 简单的计算器(二) 322
17.3 数据库文件的读取 325
附录A C语言规约 335
附录B 输入输出重定向 337
附录C C语言的关键字 340
附录D 常用字符与ASCII码对照表 341
附录E 运算符的优先级和结合性 342
附录F 常用库函数 344
参考文献 349