1.1 C语言的发展历史及特点 1
1.1.1 C语言的发展历史 1
第1章 C语言概述 1
1.1.2 C语言的特点 2
1.2 简单的C程序介绍 3
1.2.1 C源程序的结构特点 5
1.2.2 编写程序时应遵循的规则 6
1.2.3 C语言词汇 6
1.3 程序开发周期 8
1.3.1 创建源代码 8
1.3.2 编译源代码 8
1.3.4 结束开发周期 9
1.3.3 连接以创建可执行文件 9
习题1 10
第2章 数据类型、运算符与表达式 12
2.1 C语言的数据类型 12
2.2 标识符 13
2.3 常量 14
2.3.1 整型常量 14
2.3.2 实型常量 15
2.3.3 字符常量 16
2.3.4 字符串常量 18
2.3.5 符号常量 18
2.4.1 整型变量 19
2.4 变量 19
2.4.2 实型变量 22
2.4.3 字符变量 24
2.5 变量赋初值 25
2.6 各类数值型数据之间的混合运算 25
2.7 运算符和表达式 26
2.7.1 C运算符简介 26
2.7.2 算术运算符和算术表达式 27
2.7.3 赋值运算符和赋值表达式 30
2.7.4 关系运算符和关系表达式 31
2.7.5 逻辑运算符和逻辑表达式 32
2.7.6 条件运算符和条件表达式 34
2.8 位运算 35
2.7.7 逗号运算符和逗号表达式 35
2.8.1 按位与运算 36
2.8.2 按位或运算 36
2.8.3 按位异或运算 37
2.8.4 求反运算 37
2.8.5 左移运算 37
2.8.6 右移运算 38
2.8.7 位域(位段) 38
习题2 40
第3章 C语言程序设计 43
3.1 C语句概述 43
3.2 赋值语句 44
3.3 输入/输出函数 45
3.3.1 字符数据的输入与输出 46
3.3.2 格式输入与输出 47
3.4 结构化程序设计思想 55
3.4.1 结构化程序设计的方法 55
3.4.2 程序设计的步骤 55
3.4.3 程序设计的风格 56
3.4.4 结构化程序设计的工具 57
3.4.5 结构化程序设计的3种基本结构 59
3.5 顺序结构程序设计举例 59
习题3 60
4.1.1 if语句的3种形式 63
4.1 if语句 63
第4章 选择结构程序设计 63
4.1.2 使用if语句时应注意的问题 66
4.1.3 if语句的嵌套 66
4.2 switch语句 69
4.3 选择结构程序设计举例 71
习题4 72
第5章 循环结构程序设计 74
5.1 while语句 74
5.2 do...while语句 76
5.3 for语句 78
5.4 循环的嵌套 81
5.6.1 break语句 83
5.5 几种循环的比较 83
5.6 break和continue语句 83
5.6.2 continue语句 85
5.7 循环结构程序设计举例 86
习题5 88
第6章 函数 91
6.1 函数概述 91
6.2 函数定义的一般形式 93
6.3 函数的参数和函数返回值 94
6.3.1 形式参数和实际参数 94
6.3.2 函数的返回值 96
6.4.2 函数调用的方式 97
6.4.1 函数调用的一般形式 97
6.4 函数的调用 97
6.4.3 被调用函数的声明和函数原型 98
6.5 函数的嵌套调用 100
6.6 函数的递归调用 101
6.7 局部变量和全局变量 104
6.7.1 局部变量 104
6.7.2 全局变量 106
6.8 变量的存储类别 107
6.8.1 动态存储方式与静态存储方式 107
6.8.2 auto变量 107
6.8.3 用static声明局部变量 108
6.8.4 register变量 110
6.9 内部函数和外部函数 111
6.9.1 内部函数 111
6.8.5 用extern声明外部变量 111
6.9.2 外部函数 112
6.9.3 多个源程序文件的编译和连接 113
6.10 函数程序设计举例 113
习题6 115
第7章 数组 119
7.1 一维数组的定义和引用 119
7.1.1 一维数组的定义 119
7.1.2 数组元素的引用 120
7.1.4 一维数组程序举例 121
7.1.3 一维数组的初始化 121
7.2 二维数组的定义和引用 124
7.2.1 二维数组的定义 124
7.2.2 二维数组中元素的引用 125
7.2.3 二维数组的初始化 126
7.2.4 二维数组程序举例 126
7.3 字符数组 128
7.3.1 字符数组的定义 128
7.3.2 字符数组的初始化 128
7.3.3 字符数组的引用 128
7.3.4 字符串 129
7.3.5 字符数组的输入/输出 130
7.3.6 字符串处理函数 131
7.3.7 字符数组应用举例 132
7.4 数组作为函数参数 133
7.5 数组程序举例 137
习题7 140
第8章 指针 143
8.1 地址和指针的概念 143
8.2 变量的指针和指向变量的指针变量 143
8.2.1 指针变量的定义 143
8.2.2 指针变量的引用 144
8.2.3 指针变量作为函数的参数 146
8.2.4 指针变量的几个问题说明 149
8.3 数组的指针和指向数组的指针变量 152
8.3.1 指向数组元素的指针变量 152
8.3.2 通过指针引用数组元素 152
8.3.3 数组名作为函数参数 155
8.3.4 多维数组的指针 158
8.4 字符串的指针和指向字符串的指针变量 160
8.4.1 字符串的表现形式 160
8.4.2 字符串指针作为函数参数 161
8.4.3 字符指针变量与字符数组的区别 164
8.5 函数的指针和指向函数的指针变量 164
8.5.1 函数指针 164
8.5.2 返回指针值的函数 166
8.6.1 指针数组 167
8.6 指针数组和指向指针的指针 167
8.6.2 指向指针的指针 169
8.6.3 指针数组作为main函数的形参 171
8.7 有关指针的数据类型和指针运算 173
习题8 174
第9章 结构体与共用体 178
9.1 结构体概述 178
9.2 定义结构体类型变量的方法 178
9.3 结构体类型变量的引用 181
9.4 结构体变量的初始化 182
9.5 结构体数组 184
9.6 指向结构体类型数据的指针 185
9.6.1 指向结构体变量的指针 186
9.6.2 指向结构体数组的指针 187
9.6.3 用指向结构体的指针作为函数参数 188
9.7 内存的动态分配 190
9.7.1 动态分配内存的意义 190
9.7.2 开辟和释放内存区的函数 190
9.7.3 链表的概念 191
9.8 共用体 198
9.8.1 共用体的概念 198
9.8.2 共用体变量的引用方式 199
9.9 枚举类型 201
9.10 用typedef定义类型 203
习题9 204
第10章 文件 207
10.1 文件概述 207
10.2 文件类型指针 208
10.3 文件的打开与关闭 210
10.3.1 文件的打开函数 210
10.3.2 文件的关闭函数 212
10.4 文件的读/写 212
10.4.1 字符读/写函数fgetc和fputc 212
10.4.2 字符串读/写函数fgets和fputs 215
10.4.3 数据块读/写函数fread和fwrite 216
10.4.4 格式化读/写函数fscanf和fprintf 217
10.5.1 文件的定位 218
10.5 文件的定位和随机读/写 218
10.5.2 文件的随机读/写 219
10.6 文件检测函数 220
10.7 文件输入/输出小结 220
10.8 文件程序举例 221
习题10 224
附录 227
附录A C语言上机步骤 227
附录B 常用字符与ASCII代码对照表 229
附录C C语言中的关键字 230
附录D 运算符和结合性 231
附录E C库函数 232
参考文献 236