第1章 计算机的组成与程序设计语言 1
1.1 计算机的组成及工作过程 1
1.2 机器语言程序设计 5
1.3 机器语言的局限性 6
1.4 高级程序设计语言与C语言 7
1.5 C语言程序及其开发 9
本章小结 10
习题 11
第2章 基本数据类型 12
2.1 常量与变量 12
2.2 整型 17
2.3 字符型 22
2.4 实型 26
2.5 typedef类型名 29
本章小结 29
习题 30
第3章 表达式与运算符 33
3.1 表达式与算术运算符 33
3.2 关系运算符 34
3.3 逻辑运算符 36
3.4 自增自减运算符 38
3.5 位运算符 39
3.6 条件运算符 41
3.7 赋值和复合赋值运算符 42
3.8 逗号运算符 44
3.9 内部类型转换 44
本章小结 45
习题 46
第4章 程序流程控制 47
4.1 算法与语句 47
4.1.1 算法及其描述方法 47
4.1.2 C语言的语句分类 49
4.2 顺序结构 49
4.3 选择结构 50
4.3.1 if~else语句 50
4.3.2 switch~case语句 54
4.4 循环结构 56
4.4.1 for语句 56
4.4.2 while语句 59
4.4.3 do~while语句 61
4.4.4 循环嵌套 64
4.5 其他流程控制语句 67
4.5.1 break语句 68
4.5.2 continue语句 68
4.5.3 goto语句 69
本章小结 70
习题 71
第5章 一级指针与一维数组 75
5.1 一级指针类型 75
5.1.1 直接引用与间接引用 75
5.1.2 地址的类型——指针类型 76
5.1.3 指针的基本操作——间接引用 77
5.1.4 指针的基本操作——加减一个整数 78
5.1.5 指针的其他基本操作 79
5.2 一维数组类型 79
5.2.1 一维数组的定义 79
5.2.2 一维数组的初始化 80
5.2.3 一维数组名的双重含义 84
5.3 一级指针变量与一维数组 85
5.3.1 指针变量 85
5.3.2 指针变量定义中的“*”的位置 87
5.3.3 数组指针的基类型和指针变量的基类型相同 87
5.3.4 数组指针的基类型和指针变量的基类型不同 88
5.3.5 一个变量等价于一个长度为1的数组 89
5.3.6 取址运算和间接引用运算互为逆运算 89
5.3.7 “野”指针和void指针 90
5.4 移动下标与移动指针的比较 91
5.5 一维数组应用举例 93
5.5.1 查找一个数据元素 93
5.5.2 插入一个数据元素 94
5.5.3 删除一个数据元素 96
5.5.4 选择法排序 97
本章小结 98
习题 99
第6章 函数 103
6.1 函数定义与调用 103
6.2 函数声明 107
6.3 函数定义与调用举例 108
6.3.1 判断质数 108
6.3.2 求最大公约数 110
6.3.3 在数组中查找一个元素 111
6.3.4 选择法排序 112
6.3.5 冒泡法排序 113
6.4 函数调用与变量的存储类别 115
6.4.1 自动局部变量 115
6.4.2 静态局部变量 117
6.4.3 外部变量 119
6.4.4 寄存器变量 120
6.5 动态空间管理 120
6.5.1 一维动态空间的申请与释放 120
6.5.2 “耗尽”动态空间资源的实验 122
6.5.3 一种“野”指针的实验 122
6.5.4 筛选法求质数 124
6.5.5 约瑟夫环问题 125
6.6 关于函数调用的深入讨论 126
6.6.1 传值与传地址 126
6.6.2 返回值与返回地址 128
6.6.3 返回值与传地址 130
6.7 函数指针 131
6.8 递归 133
本章小结 136
习题 137
第7章 模块化程序设计相关 141
7.1 全局外部函数 141
7.2 静态外部函数 142
7.3 全局外部变量 143
7.4 静态外部变量 144
7.5 const常类型 145
7.5.1 const常量 145
7.5.2 指向const常量的指针 146
7.5.3 const常量指针 148
7.5.4 指向const常量的const常量指针 150
7.6 编译预处理 150
7.6.1 无参宏指令 150
7.6.2 带参宏指令 151
7.6.3 条件编译指令 152
7.6.4 文件包含指令 153
7.7 模块化程序设计方法简介 155
本章小结 156
习题 157
第8章 结构、联合、枚举 159
8.1 结构 159
8.1.1 结构定义 159
8.1.2 结构指针 162
8.1.3 结构数组 162
8.1.4 结构的嵌套 164
8.1.5 结构型返回值和地址调用 166
8.2 结构应用程序举例 166
8.2.1 学生记录排序 166
8.2.2 洗牌 168
8.3 联合 170
8.4 枚举 172
本章小结 173
习题 174
第9章 字符串 177
9.1 字符串的定义与存储 177
9.2 字符串的赋值和输出 178
9.2.1 字符串赋值 178
9.2.2 字符串的输入/输出处理 179
9.3 字符串处理函数的原型 180
9.4 字符串处理函数的实现 181
9.5 字符串应用程序举例 183
9.5.1 数字串转换函数的应用 183
9.5.2 判断回文 185
本章小结 186
习题 187
第10章 二维数组与指针 191
10.1 二维数组的定义与赋值 191
10.2 二维数组与一维数组 194
10.3 二维数组名的双重含义 197
10.4 二维数组与行指针 197
10.5 二维数组与列指针 199
10.6 一维指针数组与二级指针 201
10.7 一维指针数组与二维数组 203
10.8 二维动态空间的申请与释放 205
10.9 二维(数组)指针和一维(数组)指针的相互转化 206
10.10 以二级指针为形参的main函数 207
本章小结 208
习题 209
第11章 流与文件 212
11.1 文件指针 212
11.2 文件的打开与关闭 213
11.3 文件的读写 216
11.3.1 字符的读写 216
11.3.2 字符串的读写 218
11.3.3 无格式读写 219
11.3.4 格式读写 221
11.4 文件的随机访问 223
11.5 文件的复制 224
本章小结 225
习题 226
第12章 高级程序设计 228
12.1 单链表 228
12.1.1 单链表结点结构的定义 229
12.1.2 单链表的建立 229
12.1.3 单链表的遍历 231
12.1.4 单链表的查找 231
12.1.5 单链表的插入 232
12.1.6 单链表的删除 233
12.1.7 单链表的逆置 234
12.1.8 单链表操作的完整程序 235
12.1.9 其他类型的单链表 244
12.2 学生成绩档案管理系统的设计与实现 245
12.2.1 数据类型的定义 246
12.2.2 为结点类型定制的基本操作 247
12.2.3 用二进制文件实现数据的永久保存 248
12.2.4 用两级菜单四层函数实现系统 250
本章小结 260
习题 260
第13章 C++初步 262
13.1 输入/输出 262
13.2 结构 266
13.3 内联函数 266
13.4 默认函数 267
13.5 函数重载 268
13.6 运算符重载 268
13.7 引用 270
13.8 布尔型 272
本章小结 273
习题 274
附录A 常用字符与ASCII 码对照表 275
附录B C语言的关键字 277
附录C Visual C++下各数据类型所占字节数及取值范围 278
附录D C语言运算符的优先级与结合性 279
附录E 常用的ANSI C标准库函数 281
附录F C语言程序设计常见错误及解决方案 286
附录G 命名规则 294
附录H C语言的发展简史 296
附录I 函数printf的格式转换说明符 297
附录J 函数printf的格式修饰符 298
参考文献 299