第1章 机器语言程序简介 1
1.1 计算机组成及工作过程 1
1.2 机器语言程序设计 4
1.3 子程序调用过程 5
1.4 多级存储结构 7
习题 7
第2章 基本数据类型 8
2.1 引入变量 8
2.2 整型 14
2.3 字符型 16
2.4 实型 18
2.5 字面值常量 20
习题 21
第3章 表达式与操作符 23
3.1 表达式 23
3.2 关系操作符 24
3.3 逻辑操作符 25
3.4 自增自减操作符 26
3.5 赋值和复合赋值操作符 27
3.6 条件操作符 28
3.7 逗号操作符 28
3.8 复合表达式 29
3.9 内部类型转换 29
习题 30
第4章 程序流程控制 32
4.1 选择结构 32
4.1.1 if-else语句 32
4.1.2 switch-case语句 35
4.2 循环结构 37
4.2.1 for语句 37
4.2.2 while-do语句 39
4.2.3 do-while语句 42
4.2.4 循环嵌套 43
4.3 其他流程控制语句 45
4.3.1 break语句 45
4.3.2 continue语句 46
习题 46
第5章 一级指针和一维数组 50
5.1 一级指针类型 50
5.1.1 直接引用与间接引用 50
5.1.2 类型化的地址——指针类型 51
5.1.3 指针的基本操作——间接引用 52
5.1.4 指针的基本操作——加减一个整数 53
5.1.5 指针的其他基本操作 55
5.2 一维数组类型 55
5.2.1 一维数组的定义 55
5.2.2 一维数组的初始化 57
5.2.3 一维数组名的双重含义 59
5.3 一级指针变量与一维数组 60
5.4 移动下标与移动指针的比较 64
5.5 一维数组应用举例 65
5.5.1 数组元素求和 65
5.5.2 选择最小元素 65
5.5.3 选择法排序 66
习题 67
第6章 函数 69
6.1 函数定义与调用 69
6.2 函数声明 73
6.3 函数举例 75
6.3.1 判断质数 75
6.3.2 求最大公约数 75
6.3.3 选择法排序 76
6.3.4 数制转换 77
6.4 函数调用与变量的存储类别 78
6.4.1 自动局部变量 78
6.4.2 静态局部变量 81
6.4.3 外部变量 82
6.4.4 寄存器变量 84
6.5 动态空间管理 84
6.5.1 一维动态空间的申请与释放 84
6.5.2 筛法求质数 87
6.6 关于函数调用的深入讨论 88
6.6.1 值调用和地址调用 89
6.6.2 返回数值和返回地址 90
6.6.3 返回值与地址调用 90
6.7 函数指针 91
6.8 递归 93
6.9 输入输出函数 95
6.9.1 scanf 95
6.9.2 getchar和putchar 99
习题 101
第7章 模块化程序设计 104
7.1 全局外部函数 104
7.2 静态外部函数 105
7.3 全局外部变量 106
7.4 静态外部变量 107
7.5 const常类型 108
7.5.1 const常量 108
7.5.2 指向const常量的指针 109
7.5.3 const常量指针 112
7.5.4 指向const常量的const常量指针 113
7.6 编译预处理 113
7.6.1 无参宏指令 113
7.6.2 带参宏指令 114
7.6.3 条件编译指令 116
7.6.4 文件包含指令 117
习题 119
第8章 字符串 120
8.1 字符串赋值和输出 120
8.2 字符串处理函数原型 123
8.3 字符串处理函数实现 124
8.4 判断回文 125
习题 126
第9章 结构、联合与枚举 127
9.1 结构 127
9.1.1 结构定义和typedef名字 127
9.1.2 结构指针 130
9.1.3 结构数组 131
9.1.4 结构的嵌套 132
9.1.5 结构型返回值和地址调用 134
9.2 联合 135
9.3 枚举 136
习题 138
第10章 流与文件 141
10.1 文件指针 141
10.2 文件打开与关闭 142
10.3 文件的读写 145
10.3.1 字符的读写 145
10.3.2 字符串的读写 146
10.3.3 无格式读写 147
10.3.4 格式读写 150
10.4 文件的随机访问 151
习题 153
第11章 C综合设计实例 154
11.1 起泡排序 154
11.2 划分数组元素 155
11.3 折半查找 156
11.4 删除重复数据 157
11.5 Josephus问题 157
11.6 洗牌 158
11.7 三天打鱼,两天晒网 160
习题 161
第12章 二维数组和指针 163
12.1 二维数组的定义与赋值 163
12.2 二维数组与一维数组 165
12.3 二维数组名的双重含义 169
12.4 二维数组与指针变量 169
12.5 一维指针数组与二级指针 173
12.6 一维指针数组与二维数组 175
12.7 二维动态空间的申请与释放 177
12.8 以二级指针为参量的main函数 177
12.9 指针和数组小结 179
习题 179
第13章 高级程序设计 181
13.1 基本顺序表 181
13.1.1 基本顺序表的声明 182
13.1.2 基本顺序表的实现 184
13.2 单项链表 189
13.2.1 单向结点结构的声明 189
13.2.2 单向结点结构的实现 191
13.2.3 逆置 192
13.2.4 循环链表 194
13.2.5 实例:Josephus算法 195
习题 196
附录A 常用的ANSI C标准库函数 198
A.1 数学函数(include<math.h>) 198
A.2 字符判别和转换函数(include<ctype.h>) 199
A.3 字符串处理函数(include<string.h>) 200
A.4 内存管理函数(include<stdlib.h>) 200
A.5 类型转换函数(include<stdlib.h>) 201
A.6 输入输出函数(include<stdio.h>) 201
A.7 其他常用函数 203
附录B Visual C++ 6.0环境介绍 204
B.1 进入Visual C++ 6.0开发环境主界面 204
B.2 建立工程(项目) 205
B.3 添加文件 207
B.3.1 添加源文件 207
B.3.2 添加记事本文件 208
B.4 打开工程(项目) 210
参考文献 211