第1章 程序设计基础 1
1.1 计算机基础 1
1.1.1 计算机硬件系统 1
1.1.2 计算机软件系统 2
1.1.3 计算机的发展 3
1.1.4 计算机的发展方向 4
1.2 程序设计基础 5
1.2.1 程序及算法 6
1.2.2 算法的特征和描述 7
1.2.3 算法与程序设计 9
1.2.4 程序设计语言 13
1.2.5 C语言 14
1.3 程序设计发展史 15
1.4 结构化程序设计 16
1.4.1 结构化程序设计的发展 16
1.4.2 结构化程序设计的特征与风格 17
1.4.3 C语言与结构化程序设计 18
1.4.4 C程序的执行 21
1.5 面向对象程序设计 22
1.5.1 面向对象程序设计的发展及基本概念 22
1.5.2 面向对象程序设计的特征 24
习题 25
第2章 常量、变量、数据类型、运算符和表达式 26
2.1 常量和变量 26
2.1.1 标识符与关键字 26
2.1.2 常量和变量 27
2.2 数据类型 28
2.2.1 整型数据 28
2.2.2 实型数据 31
2.2.3 字符型数据 32
2.3 运算符 35
2.3.1 算术运算符 35
2.3.2 自增、自减运算符 36
2.3.3 赋值运算符 38
2.3.4 关系运算符 39
2.3.5 逻辑运算符 40
2.3.6 逗号运算符 40
2.3.7 运算符的优先级和结合性 40
2.4 表达式 41
2.4.1 算术表达式 41
2.4.2 赋值表达式 42
2.4.3 关系表达式 43
2.4.4 逻辑表达式 44
2.4.5 逗号表达式 46
2.4.6 条件表达式 47
2.5 数据类型转换 48
2.5.1 自动类型转换 48
2.5.2 强制类型转换 49
2.6 位运算 51
习题 54
第3章 C语言程序控制语句与结构化程序设计的三种基本结构 57
3.1 C语句概述 57
3.2 顺序结构程序设计 58
3.2.1 表达式语句 58
3.2.2 数据的输出 59
3.2.3 数据的输入 65
3.2.4 复合语句 71
3.2.5 顺序程序设计 72
3.3 分支程序设计 74
3.3.1 if语句 74
3.3.2 switch语句 76
3.3.3 break语句 78
3.3.4 条件运算符 79
3.3.5 分支程序设计 80
3.4 循环程序设计 84
3.4.1 for语句 84
3.4.2 while语句 88
3.4.3 do-while语句 90
3.4.4 循环嵌套 93
3.4.5 continue语句 96
3.4.6 break语句的进一步说明 98
3.4.7 循环程序设计 99
3.5 综合举例 102
习题 104
第4章 数组 107
4.1 数组概述 107
4.2 一维数组 107
4.2.1 一维数组的定义 107
4.2.2 一维数组的存储结构 108
4.2.3 一维数组的引用 108
4.2.4 一维数组的输入输出 109
4.2.5 一维数组的初始化 110
4.2.6 一维数组程序举例 111
4.3 二维数组 118
4.3.1 二维数组的定义 118
4.3.2 二维数组的引用 120
4.3.3 二维数组的初始化 121
4.3.4 二维数组程序举例 121
4.4 字符数组 125
4.4.1 字符数组的定义 126
4.4.2 字符数组的初始化 126
4.4.3 字符数组的引用 128
4.4.4 字符数组的输入输出 128
4.4.5 字符串处理函数 129
4.4.6 程序举例 132
4.5 数组应用综合举例 134
习题 139
第5章 函数 144
5.1 函数概述 144
5.2 函数定义 146
5.2.1 函数的定义形式 146
5.2.2 空函数 148
5.3 函数参数与函数的返回值 148
5.3.1 形式参数与实在参数 148
5.3.2 函数的返回值 150
5.4 函数的调用 150
5.4.1 函数调用 150
5.4.2 函数调用规则 151
5.5 函数的嵌套调用和递归调用 154
5.5.1 函数的嵌套调用 154
5.5.2 函数的递归调用 157
5.6 数组作为函数参数 160
5.6.1 数组元素作函数参数 160
5.6.2 数组名作函数参数 160
5.6.3 多维数组作参数 166
5.7 变量作用域 168
5.7.1 局部变量 168
5.7.2 全局变量 169
5.8 变量存储类别与生存周期 172
5.8.1 静态存储变量 172
5.8.2 动态存储变量 173
5.8.3 全局变量的存储类别 174
5.8.4 变量的生存周期 176
5.9 内部函数和外部函数 176
5.9.1 内部函数 176
5.9.2 外部函数 178
5.10 函数的综合举例 179
习题 188
第6章 指针 190
6.1 指针的概念 190
6.2 指针变量 191
6.2.1 指针变量的定义 191
6.2.2 指针变量的引用 192
6.2.3 指针变量的运算 192
6.2.4 指针变量作为函数参数 199
6.3 数组与指针 201
6.3.1 指针与数组的关系 201
6.3.2 指向数组元素的指针 202
6.3.3 指针与一维数组 202
6.3.4 指针与多维数组 204
6.4 字符串与指针 207
6.5 函数与指针 209
6.5.1 指向函数的指针 209
6.5.2 把指向函数的指针变量作为函数参数 211
6.5.3 返回值为指针的函数 213
6.6 指针数组和指向指针的指针 214
6.6.1 指针数组的概念 214
6.6.2 指向指针的指针 218
6.7 综合举例 219
习题 227
第7章 结构体与共用体 229
7.1 结构体的概念与定义 229
7.1.1 结构体的定义 229
7.1.2 结构体变量的定义 231
7.1.3 结构体变量的引用 232
7.1.4 结构体变量的初始化 234
7.2 结构体数组 236
7.2.1 结构体数组的定义 236
7.2.2 结构体数组的初始化与引用 237
7.3 结构体与指针 241
7.3.1 结构体变量与指针 241
7.3.2 结构体数组与指针 244
7.4 结构体作为函数参数 247
7.4.1 结构体变量作为函数参数 247
7.4.2 指向结构体变量的指针作为函数参数 248
7.5 动态数据结构——链表 250
7.5.1 链表的建立 250
7.5.2 链表的遍历 254
7.5.3 链表的插入与删除 255
7.6 共用体 260
7.6.1 共用体变量的定义 260
7.6.2 共用体变量的引用 262
7.7 位段 266
7.8 用typedef定义类型 268
7.9 综合应用举例 270
习题 275
第8章 文件 277
8.1 文件的概念与定义 277
8.2 文件类型指针 279
8.3 文件的打开与关闭 280
8.3.1 文件的打开(fopen函数) 280
8.3.2 文件的关闭(fclose函数) 281
8.4 文件的读写 282
8.4.1 fputc函数和fgetc函数(putc函数和getc函数) 282
8.4.2 fread()函数和fwrite()函数 285
8.4.3 fprintf函数和fscanf函数 289
8.4.4 其他读写函数 291
8.5 文件的定位 293
8.5.1 rewind()函数 293
8.5.2 fseek()函数和随机读写 293
8.5.3 ftell()函数 295
8.6 综合应用举例 295
习题 297
第9章 编译预处理 298
9.1 宏定义 298
9.2 “文件包含”处理 304
9.3 条件编译 306
习题 309
附录 311
参考文献 334