第1章 程序设计概述 1
1.1 计算机系统 1
1.1.1 硬件系统的组成 1
目录 1
1.1.2 软件系统的组成 3
1.2 问题求解 3
1.3 算法和三种基本程序结构 3
1.3.1 流程图 4
1.3.2 顺序结构 4
1.3.3 选择结构 5
1.3.4 重复结构 6
1.4.2 程序设计语言 9
1.4 程序和程序设计语言 9
1.4.1 程序 9
1.5 程序设计方法 11
1.5.1 结构化程序设计 11
1.5.2 面向对象程序设计 12
习题1 13
第2章 C程序 15
2.1 C语言 15
2.2 C程序结构 15
2.3 字符集和词法符号 17
2.3.1 字符集 17
2.3.3 标识符 18
2.3.2 关键字 18
2.3.4 分隔符 19
2.3.5 注释 19
2.4 C程序的开发过程 19
习题2 20
第3章 数据类型、运算符和表达式 21
3.1 数据类型 21
3.1.1 数据和数据类型 21
3.1.2 C数据类型 21
3.2 C基本数据类型 22
3.3 常量 23
3.3.1 字面常量 23
3.4.1 变量名和存储单元 25
3.4.2 变量的定义 25
3.3.2 符号常量 25
3.4 变量 25
3.4.3 变量的初始化 26
3.5 常用数学库函数 26
3.6 运算符和表达式 27
3.6.1 表达式的概念 27
3.6.2 算术运算符和算术表达式 33
3.6.3 关系运算符和关系表达式 35
3.6.4 逻辑运算符和逻辑表达式 35
3.6.5 条件运算符和条件表达式 37
3.6.6 赋值运算符和赋值表达式 37
3.6.8 位运算符和位运算表达式 38
3.6.7 逗号运算符和逗号表达式 38
3.6.9 有副作用的表达式 40
习题3 41
第4章 顺序结构的程序设计 44
4.1 表达式语句和空语句 44
4.2 赋值语句 45
4.3 块语句 46
4.4 数据的输入输出 46
4.4.1 字符输入输出库函数 46
4.4.2 格式化输出库函数 47
4.4.3 格式化输入库函数 53
4.5 顺序结构的程序设计 56
习题4 60
第5章 选择结构的程序设计 63
5.1 if语句 63
5.1.1 if语句的三种基本格式 63
5.1.2 if语句的嵌套结构 67
5.1.3 if语句的要点 69
5.2 switch语句 71
5.2.1 switch语句的格式 71
5.2.2 switch语句的应用 71
习题5 76
6.1 while语句 79
6.1.1 while语句的格式 79
第6章 重复结构的程序设计 79
6.1.2 while语句的应用 80
6.2 do while语句 81
6.2.1 do while语句的格式 81
6.2.2 do while语句的应用 81
6.3 for语句 82
6.3.1 for语句的格式 82
6.3.2 for语句的应用 83
6.3.3 for语句的基本变形 83
6.3.4 重复结构的嵌套 84
6.4 其他控制语句 86
6.4.1 continue语句 86
6.5.1 递推法 87
6.4.2 break语句 87
6.5 典型算法示例 87
6.5.2 迭代法 91
6.5.3 枚举法 92
6.5.4 取整数的各位数字 93
6.5.5 其他问题 95
习题6 98
第7章 函数 103
7.1 函数概念 103
7.2 函数定义 104
7.3 函数调用 108
7.3.1 函数调用机制 108
7.3.2 函数调用格式 109
7.4 实参与形参 110
7.5 函数嵌套调用 110
7.6 函数递归调用 112
7.6.1 递归算法概念 112
7.6.2 递归函数 113
7.6.3 非数值处理 115
7.7 存储类别和变量的作用域 117
7.7.1 程序在内存的分布区域 117
7.7.2 局部变量和存储类别 118
7.7.3 全局变量和存储类别 120
7.8 外部函数和内部函数 122
习题7 123
第8章 编译预处理 129
8.1 包含命令#include 129
8.2 宏定义命令#define 129
8.2.1 不带参数宏 129
8.2.2 带参数宏 130
8.3 条件编译命令#if 131
习题8 132
第9章 数组 133
9.1 一维数组 133
9.1.1 一维数组定义 133
9.1.2 一维数组元素 134
9.1.4 一维数组的操作 135
9.1.3 一维数组的初始化 135
9.1.5 数组名作为函数的形参 136
9.1.6 排序 137
9.1.7 查找 141
9.2 二维数组 144
9.2.1 二维数组定义 144
9.2.2 二维数组元素 146
9.2.3 二维数组的初始化 146
9.2.4 二维数组的操作 147
9.2.5 二维数组的应用 148
9.3 字符串 153
9.3.1 字符串定义 153
9.3.2 字符串的输入输出 154
9.3.3 字符串处理函数 157
9.3.4 字符串的应用 159
习题9 165
第10章 指针 173
10.1 指针和指针运算 173
10.1.1 直接访问和间接访问 173
10.1.2 指针定义和初始化 174
10.1.3 指针的运算 176
10.2 指针与数组 180
10.2.1 指针与一维数组 180
10.2.2 指针与二维数组 182
10.2.3 指针数组 186
10.2.4 指向一维数组的指针 188
10.2.5 多级指针 189
10.3 指针与函数 191
10.3.1 指针作为函数形参 191
10.3.2 指针作为函数的返回值类型 194
10.3.3 函数指针 195
10.4 指针与字符串 197
10.4.1 字符串的表示方法 197
10.4.2 字符串处理函数的实现 198
10.4.3 字符型指针数组 201
10.5 带参数的main函数 203
习题10 205
11.1.1 结构类型定义 216
第11章 结构和其他类型 216
11.1 结构 216
11.1.2 结构变量定义和结构成员 217
11.1.3 结构的操作 218
11.2 结构与指针 220
11.3 结构数组 222
11.3.1 结构数组的定义和初始化 222
11.3.2 结构数组的分量 223
11.3.3 结构数组排序 226
11.4 单向链表 230
11.4.1 堆内存空间的开辟和释放 230
11.4.2 单向链表结构 231
11.4.3 单向链表的建立和输出 232
11.4.4 单向链表的删除 236
11.4.5 单向链表的插入 239
11.4.6 单向链表的其他操作 242
11.5 联合 247
11.5.1 联合类型定义和变量定义 247
11.5.2 联合成员 248
11.5.3 联合的操作 248
11.6 枚举类型 248
11.6.1 枚举类型定义和变量定义 248
11.6.2 枚举类型的操作 249
习题11 251
12.1 文件概述 263
第12章 文件 263
12.2 打开文件和关闭文件 265
12.2.1 打开文件函数 265
12.2.2 关闭文件函数 266
12.3 读写函数 266
12.3.1 fputc函数和fgetc函数 266
12.3.2 fputs函数和fgets函数 268
12.3.3 fprintf函数和fscanf函数 270
12.3.4 fwrite函数和fread函数 273
12.3.5 fseek函数和二进制随机文件 276
习题12 280
附录A 标准ASCII码表 287
参考文献 290