第1章 计算机工作的基本原理 1
1.1计算的基本概念 1
1.1.1什么是计算 1
1.1.2什么是可计算性 1
1.2数制系统 2
1.2.1数的进位制 2
1.2.2不同进制数字转换 4
1.3整数的二进制原码、反码和补码 7
1.3.1原码 8
1.3.2反码 8
1.3.3补码 8
1.3.4利用补码作加、减法运算 9
1.4浮点数的编码 10
1.5计算机工作原理 10
1.5.1内存储器 11
1.5.2运算器 12
1.5.3控制器 12
1.5.4指令系统 12
1.5.5一个简单的模型计算机 14
习题 15
第2章C语言程序设计基础 16
2.1C语言程序概述 16
2.1.1 C语言程序入门例子 16
2.1.2 C语言程序组成特点 18
2.2标识符与关键字 19
2.2.1标识符命名规则 19
2.2.2关键字 20
2.3数据类型 20
2.3.1基本数据类型 21
2.3.2数据类型修饰符(*) 22
2.4常量 23
2.4.1字面常量 23
2.4.2符号常量 23
2.5变量 24
2.5.1变量定义语句 24
2.5.2变量定义语句的工作过程(*) 24
2.6简单输入输出 25
2.6.1简单输出函数 25
2.6.2简单输入函数 27
2.7运算符和表达式 28
2.7.1赋值运算符 28
2.7.2算术运算符 30
2.7.3增量运算符 31
2.7.4关系运算符 32
2.7.5逻辑运算符 33
2.7.6复合赋值运算符 34
2.7.7表达式的数据类型及类型转换 35
2.7.8表达式求值过程(*) 36
2.7.9逗号表达式(*) 37
2.8格式化输入输出函数高级用法(*) 38
2.8.1格式化输出 38
2.8.2格式化输入 40
2.9关于数据类型的高级问题(*) 41
2.9.1类型长度运算符 41
2.9.2类型重定义 42
习题 42
第3章 程序基本结构 45
3.1程序语句 45
3.1.1语句概述 45
3.1.2结构化程序设计 46
3.2顺序结构 47
3.3选择结构 48
3.3.1选择结构的基本语法格式 48
3.3.2选择结构举例 50
3.3.3选择结构的嵌套 51
3.3.4条件运算符 54
3.3.5多分支选择结构 55
3.3.6浮点数的相等性比较 60
3.4循环结构 60
3.4.1 for循环结构 61
3.4.2 while循环结构 62
3.4.3 do.while循环结构 63
3.4.4循环辅助语句 63
3.4.5三种基本循环结构的比较 64
3.4.6循环嵌套 67
3.4.7 goto语句(*) 69
3.5函数的定义与使用 69
3.5.1函数定义 71
3.5.2函数调用 72
3.5.3形式参数与实际参数 72
3.5.4函数原型说明 73
3.5.5函数应用举例 74
3.6数据存储特性(*) 77
3.6.1变量作用域 77
3.6.2静态变量 79
3.6.3变量的生存期 80
3.7预处理指令 82
3.7.1文件包含指令 82
3.7.2宏定义指令 82
3.8综合编程实例 84
习题 89
第4章 程序设计基本方法 96
4.1算法与程序设计方法学 96
4.1.1算法的概念 96
4.1.2算法设计原则 99
4.1.3几种基本的算法设计方法和策略 100
4.1.4编程解决问题的一般步骤 100
4.2穷举法程序设计 100
4.3穷举法求解逻辑推理问题 103
4.4整数相关算法 107
4.4.1素数 107
4.4.2最大公约数和最小公倍数 109
4.4.3歌德巴赫猜想(*) 111
4.4.4穷举法求解整数相关问题实例 112
4.5递推与迭代算法Ⅰ 116
4.5.1斐波那契级数 117
4.5.2整数拆分 118
4.5.3非线性方程求根 119
习题 122
第5章 数组 125
5.1一维数组 125
5.1.1定义格式 125
5.1.2一维数组的使用 127
5.2二维及多维数组 130
5.2.1定义格式 130
5.2.2二维数组初始化 130
5.2.3二维数组的使用 131
5.3数组与函数 134
5.3.1数组元素作函数参数 134
5.3.2一维数组名作为函数参数 135
5.3.3多维数组作函数参数 140
5.4程序阅读与理解 142
5.5排序算法程序设计 145
5.5.1插入排序 145
5.5.2选择排序 148
5.5.3冒泡排序 150
5.6查找算法程序设计 151
5.6.1顺序查找算法 151
5.6.2二分查找算法 152
5.7集合运算程序设计 154
5.7.1集合的表示 154
5.7.2求两个集合的并集算法 154
5.7.3求两个集合的交集算法 157
5.8矩阵程序设计 158
5.8.1矩阵乘法 158
5.8.2矩阵鞍点 158
5.8.3螺旋矩阵 161
5.8.4魔方矩阵 164
5.9递推与迭代算法Ⅱ 166
5.9.1沙漠储油点 166
5.9.2约瑟夫环 168
习题 170
第6章 指针 178
6.1指针的概念 178
6.1.1指针和内存地址 178
6.1.2指针变量的定义 179
6.1.3变量地址与间接寻址 180
6.2指针的运算 182
6.2.1指针赋值运算 182
6.2.2指针加、减运算 183
6.2.3指针比较运算 185
6.3指针与数组的关系 185
6.3.1指针与一维数组 185
6.3.2指针与多维数组(*) 187
6.3.3指针数组 191
6.4多级指针 192
6.4.1多级指针概念 192
6.4.2多级指针的间接访问 193
6.5动态存储分配 194
6.5.1 malloc函数与free函数 195
6.5.2动态内存分配实现可变长一维数组 195
6.5.3动态内存分配实现可变长二维数组 197
6.6指针作为函数参数 200
6.6.1函数传值调用 200
6.6.2函数传地址调用 201
6.7函数返回值为指针 205
6.8指向函数的指针 207
6.8.1问题的提出 207
6.8.2指向函数的指针 208
6.9 void型指针(*) 211
6.9.1 void指针概念 211
6.9.2用void指针实现通用排序程序 212
习题 215
第7章 字符串 218
7.1字符数据 218
7.1.1字符常量 218
7.1.2转义字符 218
7.1.3字符型变量 219
7.2字符串 219
7.2.1字符串概念及字符串常量 219
7.2.2字符串的存储 220
7.2.3字符串的结束标志 220
7.2.4字符串的表示 220
7.3字符串数组 224
7.3.1字符型二维数组表示字符串数组 224
7.3.2字符型指针数组表示字符串数组 225
7.4字符串的输入和输出 226
7.4.1字符串输入 226
7.4.2字符串输出 227
7.5处理字符串的基本库函数 228
7.5.1求字符串长度 228
7.5.2字符串拷贝 230
7.5.3字符串比较 230
7.5.4字符串连接 231
7.5.5从字符串中查找字符 232
7.5.6在字符串中查找子串 232
7.5.7整数与字符串互相转换 233
7.6字符串基本运算的编程实现 233
7.7应用举例 236
7.7.1字符串插入 236
7.7.2字符串逆置 238
7.7.3数制转换 239
7.7.4单词分离 241
7.8大整数的数学运算(*) 243
7.8.1大整数的表示 243
7.8.2大整数的算术运算 244
7.8.3大整数应用 249
习题 250
第8章 文件系统 253
8.1文件系统的使用方式 254
8.2文件打开和关闭 255
8.2.1文件打开 255
8.2.2文件关闭 256
8.2.3使用文件的一般模式 256
8.3文件读写 256
8.3.1字符读写函数 257
8.3.2字符串读写函数 258
8.3.3二进制读写函数 258
8.3.4格式化读写函数fscanf和fprintf 259
8.4标准流 261
8.5文件定位操作 261
8.6命令行参数 262
习题 264
第9章 结构体、链表 266
9.1结构体 266
9.1.1问题提出 266
9.1.2结构体类型声明及变量定义 266
9.2结构体变量的使用 270
9.2.1结构体作为整体使用 270
9.2.2使用结构体成员 270
9.3结构体与函数 273
9.4联合体 274
9.4.1联合体类型声明、变量定义及成员引用 274
9.4.2联合体变量的特点 275
9.5枚举类型 276
9.6链表 277
9.6.1链表概念 278
9.6.2链表的基本运算 280
9.6.3单链表的插入排序 285
9.6.4链表的逆置(*) 289
9.6.5其他类型链表(*) 290
习题 291
第10章 位处理 293
10.1整数的计算机表示 293
10.2位运算符 294
10.2.1位逻辑运算 294
10.2.2移位运算 296
10.2.3位运算赋值运算符 296
10.3位域 297
10.3.1位域的定义 298
10.3.2位域的使用 299
10.4位运算的应用(*) 299
10.4.1利用位运算实现整数值交换 299
10.4.2二进制GCD算法 300
10.4.3均匀二分查找 301
习题 302
第11章 函数递归调用及应用 304
11.1函数递归调用 304
11.1.1函数调用原理 304
11.1.2递归调用 305
11.2函数递归调用的应用 309
11.2.1算法设计的分治法策略(汉诺塔问题) 309
11.2.2算法设计的回溯法策略(八皇后问题) 311
习题 315
附录A ASCII码表 316
附录B C语言保留字(关键字) 318
附录C C语言运算符优先级 320
附录D C语言主要标准库函数 322
参考文献 327