目 录 1
第1章C程序设计基础知识 1
1.1程序语言与编程方法的发展 1
1.1.1机器语言 2
1.1.2汇编语言 3
1.1.3高级语言 4
1.1.4程序语言集成开发工具 6
1.1.5程序语言的分代与编程方法的演变 7
1.1.6指令、程序与软件 9
1.2 C语言的历史发展与特点 10
1.2.1 C语言的历史发展 10
1.2.2 C语言的特点 11
1.3.1 二进制、八进制、十六进制 13
1.3计算机中的信息存储 13
1.3.2整数与实数的存储格式 16
1.3.3 字符编码 22
1.3.4磁盘文件 23
1.4语法、数据结构与算法 24
1.4.1 语法 24
1.4.2数据结构 26
1.4.3算法 26
习题 31
第2章C源程序基本语法与顺序结构简单程序设计 33
2.1 C语源程序的组成与结构 33
2.1.1 C源程序的语义字符 34
2.1.2 C语言的标识符与关键字 34
2.1.3 C语言的句法单位 36
2.1.5 C源程序的一般结构 39
2.1.4 C语言的函数 39
2.1.6 C源程序风格与书写规范 40
2.2调试第一个C程序 40
2.2.1 Windows的“MS-DOS方式” 41
2.2.2用Turbo C2.0调试C程序 43
2.2.3 用Turbo C++3.0或Borland C++3.1调试C程序 47
2.2.4用Visual C++6.0调试C程序 48
2.3 C语言的基本数据类型、常量与变量 50
2.3.1 C语言的基本数据类型 50
2.3.2 C语言的常量 53
2.3.3 C语言的变量 57
2.4 C语言的运算符与表达式 59
2.4.1 算术运算符、数学库函数与数学表达式 59
2.4.2二进制位运算符与位运算表达式 64
2.4.3关系、逻辑运算符及关系、逻辑表达式 68
2.4.4类型强制运算符与求存储长度运算符 70
2.4.5赋值运算符与赋值表达式 71
2.4.6条件运算符和逗号运算符 72
2.4.7运算符的优先级与结合性 73
2.4.8表达式数据类型的计算转换规则 73
2.4.9表达式应用举例 75
2.5 C程序的输入与输出 76
2.5.1单个字符的输入与输出函数 76
2.5.2格式化输出函数printf 78
2.5.3格式化输入函数scanf 82
2.6顺序结构简单程序设计 86
习题 88
3.1.1 if语句 91
3.1选择结构 91
第3章选择结构与循环结构 91
3.1.2 switch语句 97
3.2循环结构 99
3.2.1 while循环语句 100
3.2.2 do…while循环语句 103
3.2.3 for循环语句 104
3.2.4多重循环 106
3.2.5循环体中的break语句与continue语句 107
3.3 goto语句 110
习题 110
第4章基本程序设计技术 114
4.1计数(统计)问题 114
4.2求最大值与最小值 116
4.3递推迭代(数列求和与求积) 118
4.4字符图形 125
4.5搜索(穷举)求解 129
4.6数论有关问题 131
习 题 135
第5章数组 138
5.1一维数组 138
5.1.1 一维数组的定义 138
5.1.2访问一维数组的元素 138
5.1.3一维数组的初始化 139
5.2二维数组 140
5.2.1 二维数组的定义 140
5.2.2访问二维数组的元素 141
5.2.3 二维数组的初始化 141
5.3.1 多维数组的定义与元素访问 144
5.3多维数组 144
5.3.2多维数组的初始化 145
习题 146
第6章指针初步 148
6.1指针的概念与基本操作 148
6.1.1指针的概念 148
6.1.2指针常量与变量 149
6.1.3指针的基本运算与操作 151
6.2指针与一维数组 155
6.2.1一维数组名 155
6.2.2元素等价形式与地址等价形式 156
6.2.3一维动态数组 158
6.3 字符串处理 160
6.3.1 字符串的存储格式 160
6.3.2程序中存储字符串与访问字符串的方法 161
6.3.3字符串的输入与输出 162
6.3.4字符串操作常用库函数 162
6.3.5 字符串处理程序设计举例 164
6.4数组整体拷贝 167
习题 168
第7章函数 170
7.1函数的定义与调用 170
7.1.1 定义函数的语法格式 170
7.1.2函数调用 173
7.2函数的参数传递 176
7.2.1 实参表达式向形参变量传值 176
7.2.2指针变量作形参 177
7.2.3一维数组作形参 180
7.2.4二维数组作形参 182
7.2.5多维数组作形参 183
7.3变量的特性 184
7.3.1全局变量 184
7.3.2局部变量 185
7.3.3变量的存储类型 186
7.3.4变量的生存期与变量的初始化 187
7.3.5全局(外部)变量说明 189
7.4外部函数与内部函数 190
7.4.1 外部函数与内部函数的概念 190
7.4.2外部函数说明 190
7.4.3 工程文件 191
7.5返回值为指针类型的函数 192
7.6.1选择排序 195
7.6排序与查找 195
7.6.2插入排序 196
7.6.3冒泡排序 198
7.6.4索引排序 200
7.6.5顺序查找 201
7.6.6折半查找 202
7.7递归 203
7.7.1递归程序设计 203
7.7.2递归程序分析 207
习题 211
第8章编译预处理 216
8.1宏定义 216
8.1.1 不带参数的宏定义 216
8.1.2带参数的宏定义 217
8.1.3宏名字的作用域 218
8.2包含文件 219
8.3条件编译 220
习题 222
第9章指针深入 223
9.1多级指针与指针数组 223
9.1.1 多级指针 223
9.1.2指针数组 224
9.2指向数组的指针 226
9.2.1 定义指向m维数组的指针变量 227
9.2.2指向数组的指针类型名、类型强制与指针运算 227
9.2.3m维数组与指向数组的指针 230
9.2.4 m维动态数组 233
9.2.6指向数组的指针作函数的返回值 235
9.2.5指向数组的指针作函数的形参 235
9.2.7指向数组的指针作数组元素 236
9.3函数指针 236
9.3.1 定义函数指针变量 236
9.3.2 函数指针变量的初始化、赋值操作与函数调用 237
9.3.3 函数指针作函数的形参 238
9.3.4 函数指针作函数的返回值 238
9.3.5 函数指针作数组元素 239
9.4带参数的main函数 240
习题 241
第1O章派生数据类型 243
10.1枚举类型 243
10.2结构体 245
10.2.1定义结构体 246
10.2.2结构体的成员变量 247
10.2.3结构体成员变量的输入与输出 248
10.2.4结构体类型作函数形参与返回值 250
10.3联合体 251
10.4位段 252
10.4.1位段的定义与存储结构 252
10.4.2位段型成员变量的使用 253
10.5类型定义 254
10.6链表 255
10.6.1链表的图形表示与结点数据结构 255
10.6.2链表的基本操作 257
10.6.3链表算法程序举例 262
10.6.4静态链表 270
10.7.1二叉树的基本概念 271
10.7.2二叉树结点结构与数据类型 271
10.7二叉树 271
10.7.3遍历二叉树 272
10.7.4建立二叉树 274
10.7.5删除二叉树 274
10.7.6 二叉树算法程序举例 275
习题 279
第11章文件操作 283
11.1 C语言文件操作基本知识 283
11.2 C语言文件操作数据结构 284
11.3 C语言文件操作函数 284
11.3.1 文件的打开与关闭函数 285
11.3.2文件读写函数 286
11.3.3文件的读写位置指针与操作函数 288
11.3.4 字符文件操作与二进制文件操作的区别 290
11.3.5操作系统文件操作命令函数 290
11.4字符文件应用 291
11.5二进制文件应用 295
习题 297
第12章算法与C程序综合举例 301
12.1约瑟夫问题 301
12.2打印万年历 302
12.3排列问题与组合问题 306
12.3.1排列问题 306
12.3.2组合问题 311
12.4汉诺塔问题 313
12.5八皇后问题 315
12.6数值计算方法举例 316
12.6.1 用辛普森法求定积分 316
12.6.2用高斯消元法解线性方程组 318
12.6.3用高斯-塞德尔(Gauss-Seidel)迭代法求解线性方程组 322
12.6.4用二分法求方程的根 324
12.6.5用截弦法求方程的根 325
12.6.6用牛顿迭代法求方程的根 326
12.7产生随机数 327
12.7.1均匀分布随机数 327
12.7.2正态分布随机数 329
12.7.3指数分布随机数 330
12.7.4泊松分布随机数 330
习题 331
附录Ⅰ 标准ASCII码表 334
附录Ⅱ C语言常用库函数 335
附录Ⅲ C语言向C++语言过渡 339
附录Ⅳ C++的new和delete操作符 341
参考文献 343