第1章 C语言与程序设计 1
1.1 计算机语言及其发展 1
1.2 C语言的发展简史与特点 2
1.3 编制程序过程 4
1.3.1 程序设计的过程 4
1.3.2 书写程序时应遵循的规则 4
1.4 算法及其表示 5
1.4.1 算法的概念 5
1.4.2 算法的表示方法 6
1.4.3 简单算法举例 7
1.5 常用算法介绍 8
1.6 程序设计方法 10
1.7 C程序实例 12
习题一 14
第2章 数据类型和表达式 15
2.1 关键字和标识符 15
2.1.1 字符集 15
2.1.2 标识符 16
2.1.3 关键字 17
2.1.4 注释符 17
2.2 数据类型 17
2.2.1 整数类型 18
2.2.2 浮点类型 20
2.2.3 字符类型 21
2.3 常量与变量 22
2.3.1 常量 22
2.3.2 变量 22
2.4 运算符和表达式 22
2.4.1 概述 28
2.4.2 算术运算符和算术表达式 30
2.4.3 关系运算符和关系表达式 32
2.4.4 逻辑运算符和逻辑表达式 33
2.4.5 赋值运算符和赋值表达式 33
2.4.6 其他运算符 34
2.4.7 数据类型转换 39
习题二 40
第3章 程序设计基础 43
3.1 C语句 43
3.2 数据的输入与输出 45
3.2.1 printf()函数 45
3.2.2 scanf()函数 50
3.2.3 字符输入、输出函数 53
3.3 顺序结构的程序设计 55
3.4 选择结构的程序设计 58
3.4.1 if语句及其三种基本格式 59
3.4.2 if语句的嵌套结构 64
3.4.3 开关语句——switch语句 67
3.4.4 选择结构程序举例 70
3.5 循环结构的程序设计 76
3.5.1 引例 76
3.5.2 while语句 77
3.5.3 do-while语句 78
3.5.4 for语句 79
3.5.5 几种循环语句的比较 81
3.5.6 循环结构的嵌套 83
3.5.7 break和continue语句对循环控制的影响 87
3.5.8 循环结构程序举例 89
3.6 程序设计实例 94
习题三 96
第4章 数组 103
4.1 数组的概念 103
4.2 一维数组 104
4.2.1 一维数组的定义 104
4.2.2 一维数组元素的引用 104
4.2.3 一维数组元素的初始化 106
4.2.4 一维数组应用举例 107
4.3 二维数组 111
4.3.1 二维数组的定义 111
4.3.2 二维数组元素的引用 112
4.3.3 二维数组初始化 114
4.3.4 二维数组应用举例 115
4.4 字符数组 118
4.4.1 字符数组的定义 118
4.4.2 字符数组的初始化 119
4.4.3 字符数组的引用 119
4.4.4 字符串 120
4.4.5 字符串处理函数 124
4.5 程序设计实例 127
习题四 130
第5章 函数 136
5.1 函数基础知识 136
5.1.1 结构化程序设计 136
5.1.2 函数的概念 137
5.2 函数的定义 138
5.2.1 无参函数的定义形式 138
5.2.2 有参函数的定义形式 139
5.2.3 空函数的定义形式 139
5.3 函数的参数与返回值 140
5.3.1 形式参数与实际参数 141
5.3.2 函数的返回值 142
5.3.3 函数定义举例 143
5.4 函数的调用 143
5.4.1 函数调用的一般形式 144
5.4.2 函数调用的方式 144
5.4.3 函数原型说明 145
5.5 函数的嵌套调用 148
5.6 函数的递归调用 150
5.7 数组作为函数的参数 153
5.7.1 数组元素作函数的实参 153
5.7.2 数组名作函数的实参 153
5.8 变量的作用域与存储类别 158
5.8.1 变量的作用域 158
5.8.2 变量的存储方式 162
5.9 内部函数和外部函数 166
5.9.1 内部函数 166
5.9.2 外部函数 166
5.10 程序设计实例 168
习题五 171
第6章 指针 177
6.1 指针的概念 177
6.2 指针变量的定义与运算 179
6.2.1 指针变量的定义 179
6.2.2 指针变量的运算 180
6.3 指针与数组 184
6.3.1 指向一维数组的指针 184
6.3.2 指向多维数组的指针 187
6.3.3 指针与字符串 192
6.4 指针与函数 194
6.4.1 指向函数的指针 194
6.4.2 用函数指针作函数参数 196
6.4.3 返回指针的函数 199
6.5 指针数组 200
6.6 指向指针的指针 201
6.7 程序设计实例 205
习题六 208
第7章 复合数据类型 213
7.1 结构体类型和结构体变量 213
7.1.1 自定义结构体类型 213
7.1.2 结构体类型变量的定义 216
7.1.3 结构体变量的初始化和引用 218
7.2 结构体数组 222
7.2.1 结构体数组的定义 222
7.2.2 结构体数组的初始化 223
7.3 结构体指针 226
7.3.1 指向结构体变量的指针 227
7.3.2 指向结构体数组的指针 229
7.4 结构体与函数 230
7.5 共用体 232
7.5.1 共用体类型的定义和变量的定义 233
7.5.2 共用体变量的引用 234
7.6 枚举类型 237
7.7 类型定义语句typedef 238
7.8 程序设计实例 240
习题七 240
第8章 编译预处理 250
8.1 宏定义 250
8.1.1 不带参数的宏定义 250
8.1.2 带参数的宏定义 253
8.2 文件包含 255
8.3 条件编译 257
8.4 程序设计案例 259
习题八 260
第9章 文件 262
9.1 文件概述 262
9.1.1 C语言文件的分类 262
9.1.2 文件处理方法 263
9.2 文件指针 263
9.3 文件的打开与关闭 264
9.3.1 文件的打开 264
9.3.2 文件的关闭 266
9.4 文件的读写 267
9.4.1 文件读写一个字符的操作 267
9.4.2 文件读写一个字符串的操作 269
9.4.3 文件的格式化读写操作 271
9.4.4 二进制方式读写操作 271
9.5 文件的随机读写 273
9.6 程序设计实例 273
习题九 295
第10章 C语言在单片机中的应用 298
10.1 MCS-51系列单片机的基本结构 298
10.1.1 MCS-51系列单片机内部组成 298
10.1.2 MCS-51系列单片机的引脚及I/O口 299
10.1.3 MCS-51系列单片机存储器简介 300
10.1.4 MCS-51系列单片机定时/计数器模块 303
10.1.5 MCS-51系列单片机串行通信模块 303
10.2 C语言与MCS-51单片机 304
10.2.1 C51程序结构 304
10.2.2 C51的数据类型 305
10.2.3 C51变量的存储种类 306
10.2.4 C51数据的存储类型与MCS-51存储结构 307
10.2.5 特殊功能寄存器变量 308
10.2.6 位变量 308
10.2.7 存储模式 309
10.2.8 绝对地址的访问 310
10.2.9 C51的输入、输出 312
10.2.10 “interrupt m using n”修饰符的使用 314
10.2.11 自定义函数的声明 315
10.3 MCS-51单片机C语言设计实例 317
10.3.1 MCS-51单片机开发软件KEIL及电路仿真软件PROTEUS简介 317
10.3.2 第一个C51工程的建立 317
10.3.3 简单八路流水灯的设计 321
10.3.4 数码管动态扫描显示 327
10.3.5 串口通信应用设计 329
习题十 332
附录A ASCⅡ码表 333
附录B C语言常用的库函数 335
参考文献 341