第1章 程序设计概论 1
1.1问题求解的思维过程 1
1.2算法基础 3
1.2.1算法的概念及其特征 3
1.2.2算法的基本结构 4
1.2.3算法的描述方法 4
1.3数据结构基础 6
1.4程序设计语言概述 8
1.4.1程序设计语言的发展历史 8
1.4.2程序设计范型 11
1.4.3过程型程序设计语言的语法元素 12
1.4.4过程型程序设计语言的基本功能 13
1.5程序设计的一般过程 17
1.6程序的构建与运行 19
习题1 21
第2章 C语言概述 22
2.1 C语言程序的基本结构 22
2.1.1结构单一的C程序 22
2.1.2结构相对完整的C程序 24
2.1.3对C程序的一般认识 26
2.2 C语言的语法元素 26
2.2.1字符集 26
2.2.2标识符 27
2.2.3定界符与间隔符 28
2.3数据类型与数据结构 28
2.3.1数据类型 28
2.3.2变量与常量 30
2.4运算与表达式 33
2.5可执行语句 34
2.6函数 35
2.7输入/输出操作与函数 36
2.7.1格式化输入/输出函数 36
2.7.2字符输入/输出函数 40
2.8在Visual C++6.0下调试C程序 40
习题2 44
第3章 算术运算程序设计 46
3.1变量的深度解析 46
3.1.1变量赋初值 46
3.1.2变量的访问 47
3.2算术表达式求值 48
3.2.1算术运算符 48
3.2.2表达式的书写 50
3.2.3表达式的数据类型 52
3.2.4表达式求值规则 55
3.3案例研究——求解一元二次方程 55
3.4变量地址与指针变量 57
3.4.1变量的地址 57
3.4.2简单指针变量 58
3.4.3指针变量的赋值 59
3.4.4指针变量的引用 60
3.4.5指针变量的初步应用 62
3.5常见错误及其排除方法 64
3.5.1语法错误 64
3.5.2运行错误 66
3.5.3逻辑错误 67
习题3 67
第4章 逻辑运算与流程控制 70
4.1逻辑运算及其表达式 70
4.1.1关系运算及其表达式 70
4.1.2逻辑运算 71
4.1.3各类运算符的优先级 72
4.2流程控制概述 73
4.3选择控制结构 73
4.3.1只有一路选择方案的if语句 73
4.3.2具有两路选择方案的if语句 75
4.3.3多路选择方案与if语句嵌套 76
4.4循环控制结构 81
4.4.1计数循环与for语句 82
4.4.2条件循环与while语句 84
4.4.3条件循环与do-while语句 86
4.4.4标志循环与交互式循环 87
4.4.5流程控制结构的嵌套 89
4.5案例研究 90
4.5.1选举计票问题程序设计 90
4.5.2快递运费计价问题程序设计 92
4.6三个流程控制语句的使用 94
4.6.1 break语句 94
4.6.2 continue语句 95
4.6.3 switch语句 96
4.7流程控制中的常见错误 97
4.7.1等式运算符与赋值运算符的误用 97
4.7.2循环语句中的花括号问题 98
4.7.3 if语句与while语句的混淆问题 98
4.7.4死循环与差1循环错误 99
4.7.5其他常见错误 99
习题4 100
第5章 常用基础算法与程序设计 103
5.1基于迭代策略的问题求解 103
5.1.1用递推法求解问题 104
5.1.2用倒推法求解问题 109
5.1.3用迭代法求解高次方程 110
5.2基于穷举策略的问题求解 112
5.2.1穷举法解方程组 113
5.2.2求解数字与数值问题 115
5.2.3求解逻辑问题 120
5.3程序调试 122
5.3.1常用的调试命令 123
5.3.2动态调试的主要方法 123
习题5 125
第6章 模块化程序设计技术 126
6.1函数的定义及其原型声明 126
6.1.1函数的定义 126
6.1.2函数原型声明 128
6.2数据在函数中的传递方式 130
6.2.1函数的调用方式 130
6.2.2函数参数的传递方式 131
6.2.3函数值的返回方式 132
6.2.4函数中的自动局部变量 133
6.3函数与指针 134
6.3.1用指针作为函数的形式参数 134
6.3.2返回指针值的函数 136
6.3.3指向函数的指针 137
6.4递归问题程序设计 139
6.5模块化程序设计技术 142
6.5.1使用函数的好处 142
6.5.2模块化程序设计方法 143
6.6案例研究——分数运算的解决方案 146
6.7函数编程的常见错误与程序测试 151
6.7.1函数编程的常见错误 151
6.7.2程序测试 152
习题6 153
第7章 批量数据处理程序设计 156
7.1一维数组 156
7.1.1一维数组的定义和引用 156
7.1.2一维数组的初始化与赋值 157
7.1.3指向数组元素的指针 159
7.1.4将一维数组传递给函数 163
7.2一维数组的应用 164
7.2.1集合搜索 164
7.2.2集合中元素的排序 168
7.3二维数组 170
7.3.1二维数组的定义及引用 170
7.3.2二维数组的初始化 171
7.3.3二维数组与指向行元素的指针 172
7.3.4二维数组作为函数参数 176
7.4二维数组的应用 178
7.4.1矩阵的简单运算 179
7.4.2栅格数据处理 182
7.5案例研究——快递费用核算解决方案 185
7.6动态创建数组 189
7.6.1动态创建一维数组 189
7.6.2动态创建二维数组 191
7.7数组下标越界问题 192
习题7 193
第8章 文本信息处理程序设计 199
8.1字符数组与字符串 199
8.1.1字符数组 199
8.1.2字符串 200
8.2字符串的输入/输出 201
8.2.1字符串的格式化输入/输出 201
8.2.2字符串的整行输入/输出 202
8.3对字符串的操作 202
8.3.1两个字符串的相互赋值 203
8.3.2字符串长度的测定 204
8.3.3字符串的比较 204
8.3.4字符串的连接 205
8.3.5字符串的搜索与定位 206
8.4案例研究——文本信息处理 208
8.5字符分析与常见字符串编程错误 213
8.5.1字符分析与转换 213
8.5.2常见字符串编程错误 213
习题8 215
第9章 结构数据类型 218
9.1结构类型及结构体 218
9.1.1结构类型的定义 218
9.1.2结构体的定义及引用 220
9.1.3结构体作为函数的参数及返回值 222
9.1.4结构数组 224
9.1.5指向结构类型的指针 226
9.2对结构类型的操作 229
9.2.1用结构类型表示复数 230
9.2.2对结构体进行输入/输出 232
9.2.3对结构体进行比较运算 233
9.3链表 234
9.3.1链表概述 234
9.3.2动态创建链表 236
9.3.3遍历与查找链表 238
9.3.4向链表中插入结点 239
9.3.5从链表中删除结点 241
9.3.6链表的综合操作 242
9.4案例研究——用结构类型改进快递费用结算方案 244
9.5常见编程错误与共用类型 250
9.5.1结构类型常见编程错误 250
9.5.2共用类型 251
9.5.3枚举类型 254
习题9 256
第10章 在磁盘上存取数据 259
10.1磁盘文件概述 259
10.1.1文件的分类 259
10.1.2文件名 259
10.1.3文件控制块与指针 260
10.1.4文件缓冲区 261
10.2文件的打开与关闭 261
10.3对文本文件的操作 263
10.3.1文本文件的存储格式 263
10.3.2对文本文件的读写操作 263
10.4对二进制文件的操作 267
10.5文件的随机读写 271
10.6案例研究——快递业务简单数据库的建立 273
10.7文件的常见编程错误 280
习题10 281
第11章 位运算 283
11.1按位进行逻辑运算 283
11.1.1位逻辑运算的概念 283
11.1.2位运算的应用 285
11.2移位运算 289
11.2.1移位运算的概念 289
11.2.2移位运算的应用 290
11.3位运算在加密/解密中的应用 290
习题11 293
第12章 编写大型程序 295
12.1复杂问题的抽象与分解 295
12.1.1过程抽象 295
12.1.2数据抽象 296
12.2个人函数库的创建 296
12.2.1头文件 297
12.2.2实现文件 298
12.3变量的存储类别 299
12.3.1 extem声明全局变量 300
12.3.2 auto变量 302
12.3.3 static变量 302
12.3.4 register变量 304
12.4条件编译 305
习题12 307
附录A ASCII字符表 310
附录B C语言库函数 312
参考文献 319