第1章 机器语言简介 1
1.1 计算机组成及工作过程 1
1.2 计算机硬件和软件 4
1.3 机器语言程序 5
1.4 汇编语言 8
1.5 存储和算法的深入探讨 9
习题 10
第2章 基本数据类型 11
2.1 变量与字面值常量 11
2.2 整型 17
2.3 字符型 18
2.4 实型 21
2.5 基本数据类型的深入探讨 22
习题 23
第3章 操作符和表达式 24
3.1 表达式 24
3.2 关系操作符 25
3.3 逻辑操作符 25
3.4 自增自减操作符 27
3.5 赋值和复合赋值操作符 27
3.6 条件操作符 28
3.7 逗号操作符 29
3.8 复合表达式 29
3.9 内部类型转换 29
3.9.1 赋值兼容性 29
3.9.2 表达式计算中的类型转换过程 30
3.9.3 强制类型转换 30
习题 31
第4章 程序流程控制 32
4.1 选择结构 32
4.1.1 if-else语句 32
4.1.2 switch-case语句 36
4.2 循环结构 37
4.2.1 for语句 38
4.2.2 while语句 39
4.2.3 do-while语句 42
4.2.4 循环嵌套 43
4.3 其他流程控制语句 44
4.3.1 break语句 44
4.3.2 continue语句 45
习题 45
第5章 指针和数组 49
5.1 指针 49
5.1.1 间接引用和指针 49
5.1.2 指针的算术运算 52
5.1.3 指针的其他基本操作 53
5.1.4 void型指针 53
5.2 数组 53
5.2.1 数组和数组指针 54
5.2.2 变量和长度为1的数组 56
5.2.3 数组和指针的相互依存 57
5.3 指针和数组的应用设计举例 58
5.3.1 数组元素求和 58
5.3.2 选择最小元素 59
5.3.3 选择排序 59
5.3.4 顺序查找 61
5.4 指针和数组的深入探讨 61
5.4.1 指针、数组、表达式和左值 61
5.4.2 数组变量指针和数组指针 62
5.4.3 指针的深入探讨——类型与bit 62
习题 63
第6章 函数 65
6.1 函数定义与调用 65
6.2 值传递和指针传递 69
6.3 返回值与指针传递 70
6.4 函数声明(原型) 70
6.5 函数应用设计举例 72
6.5.1 判断质数 72
6.5.2 求最大公约数 73
6.5.3 选择排序 73
6.5.4 起泡排序 74
6.5.5 数制转换 75
6.5.6 顺序查找 76
6.5.7 折半查找 77
6.5.8 划分数组元素 77
6.5.9 删除重复数据 79
6.6 函数调用与变量的存储类别 80
6.6.1 自动局部变量 80
6.6.2 静态局部变量 84
6.6.3 外部变量 84
6.6.4 寄存器变量 85
6.7 动态空间管理 85
6.7.1 动态空间的申请与释放 86
6.7.2 筛法求质数 88
6.7.3 Josephus问题 89
6.8 函数指针 90
6.9 递归 91
6.10 输入/输出函数 94
6.10.1 Printf和scanf 94
6.10.2 getchar和putchar 98
6.11 函数的深入探讨 100
6.11.1 作为函数退出点的return语句 100
6.11.2 自变量指针不能作为返回值 100
6.11.3 函数表达式和左值 101
6.11.4 移动下标与移动指针 101
6.11.5 数组和指针参数 102
习题 102
第7章 模块化程序设计 105
7.1 全局外部函数 105
7.2 静态外部函数 106
7.3 全局外部变量 107
7.4 静态外部变量 108
7.5 const限定修饰符 109
7.5.1 const型变量 109
7.5.2 间接const型指针和函数 109
7.5.3 const型指针 111
7.5.4 全const型指针 111
7.6 编译预处理 111
7.6.1 无参宏指令 111
7.6.2 带参宏指令 112
7.6.3 条件编译指令 114
7.6.4 文件包含指令 115
7.7 模块化应用设计举例——数组的输入/输出、排序和查找 116
习题 118
第8章 字符串 119
8.1 字符串常量和字符串赋值 119
8.2 字符串基本操作函数声明 121
8.3 字符串基本操作函数实现 122
字符串应用设计举例 125
8.4.1 判断回文 125
8.4.2 删除空格字符 126
8.5 字符串基本操作函数的补充 127
8.5.1 求子串 127
8.5.2 子串插入 128
8.5.3 子串删除 130
8.5.4 字符查找 131
8.5.5 子串查找 132
8.6 字符串的深入探讨 133
8.6.1 特殊字符串 133
8.6.2 再论字符串常量 134
第9章 结构、联合、枚举 135
9.1 结构 135
9.1.1 结构定义 135
9.1.2 结构变量和typedef名字 136
9.1.3 结构变量的初始化和赋初值 136
9.1.4 结构数组 137
9.1.5 结构的嵌套 139
9.1.6 结构返回值和指针传递 140
9.2 联合 141
9.3 枚举 142
9.4 结构应用设计举例 143
9.4.1 模拟洗牌 143
9.4.2 Date结构 145
9.4.3 三天打鱼,两天晒网 148
习题 149
第10章 流与文件 152
10.1 文件指针 152
10.2 文件的打开与关闭 153
10.3 文件的读写 155
10.3.1 字符的读写 155
10.3.2 字符串的读写 157
10.3.3 无格式读写 158
10.3.4 格式读写 160
10.4 文件的随机访问 161
习题 162
第11章 二维数组和指针 163
11.1 二维数组与二维数组指针 163
11.2 二维数组与一维数组 168
11.3 指针数组与二级指针变量(指针的指针) 171
11.4 指针数组与二维数组 173
11.5 二级指针指向的动态数组空间 174
11.6 以二级指针为形参的main函数 175
11.7 二维数组和指针应用设计举例——马鞍点 176
11.8 二维数组和指针的深入探讨——一级和二级指针与一维和二维指针 178
习题 178
第12章 高级综合程序设计 180
12.1 顺序表 180
12.1.1 顺序表结构 180
12.1.2 顺序表方法的实现 182
12.1.3 删除顺序表重复数据 185
12.2 单向链表 187
12.2.1 单向链表结构 187
12.2.2 单向链表方法的实现 189
12.2.3 逆置 192
12.3 结构串 194
12.3.1 结构串结构 194
12.3.2 结构串方法的实现 196
12.4 综合设计——文本统计 197
12.5 C语言高级程序设计的深入探讨——展望C++ 201
12.6 从C到C++的基本内容 203
12.6.1 变量和类型 203
12.6.2 输入/输出 205
12.6.3 内联函数 207
12.6.4 操作符重载 208
12.6.5 函数重载 209
12.6.6 引用型 211
12.6.7 提取符和插入符重载 214
12.6.8 默认参数 215
12.7 顺序表从C到C++ 216
12.7.1 C顺序表结构和C++顺序表类 216
12.7.2 C++顺序表类的实现 220
12.7.3 new和delete操作符 221
12.7.4 复制构造函数和复制赋值操作符函数 222
12.7.5 构造函数与初始化 223
习题 224
附录A 命名规则 225
附录B 常用的ANSI C标准库函数 226
附录C 语言操作符的优先级与结合性 231
附录D Visual C++6.0环境介绍 232
参考文献 239