引言 1
第1章 走马观花看编程 4
1.1 程序的概念 4
1.2 计算机解题过程 5
1.3 编制程序的全过程 6
1.4 程序的构成 7
1.4.1 程序的构成成分之一——数据 7
1.4.2 程序的构成成分之二——程序语句 10
1.4.3 程序的构造框架——程序结构 11
1.4.4 程序的构造方法——算法 12
1.5 算法是如何设计出来的 15
1.5.1 算法与计算机算法 15
1.5.2 算法的通用性 16
1.5.3 算法的全面性 20
1.5.4 算法的验证 24
1.6 简单的C程序介绍 24
1.7 本章小结 32
习题 32
第2章 程序中的数据 34
2.1 数据的类型 34
2.2 从存储的角度看数据 35
2.2.1 数据的存储尺寸由类型决定 35
2.2.2 基本类型的分类及特点 35
2.2.3 数据在内存中的存储形式 37
2.3 从运行的角度看数据 40
2.3.1 常量 40
2.3.2 变量 42
2.4 数据的运算 47
2.4.1 算术运算 48
2.4.2 赋值运算 49
2.4.3 增1和减1运算 49
2.4.4 关系运算 52
2.4.5 逻辑运算 53
2.4.6 条件表达式 54
2.4.7 数据的类型转换 55
2.4.8 数据运算中的出界问题 57
2.5 数据的输入/输出 58
2.5.1 数据的输出 59
2.5.2 数据的输入 63
2.5.3 数据输入/输出的常见问题 65
2.6 本章小结 68
习题 68
第3章 程序语句 70
3.1 程序的语句与结构 70
3.2 顺序结构 71
3.3 选择结构 73
3.3.1 二选一结构——if语句 73
3.3.2 多选一结构——switch语句 80
3.4 循环结构 90
3.4.1 当型循环——while语句 92
3.4.2 直到型循环——do-while语句 100
3.4.3 另一种当型循环——for循环语句 104
3.4.4 无条件转移——goto语句 107
3.4.5 快速结束循环——break和continue语句 108
3.5 本章小结 114
习题 116
第4章 数组 120
4.1 数组概念的引入 120
4.2 数组和普通变量的类比 122
4.3 如何把数组存入机器中 123
4.3.1 数组的定义 123
4.3.2 数组的初始化 124
4.3.3 数组的存储 124
4.3.4 数组存储空间的查看方法 126
4.4 对数组的操作 130
4.4.1 数组的赋值方法 130
4.4.2 一维数组的元素引用 132
4.4.3 对多个一维数组的操作 135
4.4.4 对二维数组的操作 138
4.4.5 对字符数组的操作 144
4.4.6 利用数组对字符串进行处理 154
4.4.7 字符串处理函数简介 157
4.5 本章小结 158
习题 158
第5章 函数 161
5.1 由程序规模增加引发的问题 161
5.2 模块化的设计思想 162
5.2.1 工程计划 163
5.2.2 工程施工 163
5.2.3 函数定义形式的设计 164
5.2.4 函数调用形式的设计 167
5.2.5 函数间配合运行的机制设计 168
5.3 函数在程序中的三种形式 170
5.4 主函数与子函数的比较 171
5.5 函数框架设计要素 172
5.6 函数间信息如何传递 180
5.6.1 C函数实际参数与形式参数的关系 181
5.6.2 函数间信息传递的实际例子 182
5.6.3 函数间信息传递的总结 193
5.6.4 共享数据的使用限制 194
5.7 函数设计的综合例子 195
5.8 函数的嵌套调用 199
5.9 函数的递归调用 201
5.10 作用域问题 203
5.10.1 变量的“寿命”问题 204
5.10.2 内存分区与存储分类 206
5.10.3 变量的有效范围问题 206
5.10.4 变量重名问题 207
5.10.5 是否用全局变量的考量 214
5.11 本章小结 214
习题 215
第6章 指针 218
6.1 地址和指针的关系 218
6.2 指针的定义 220
6.3 指针变量的运算 221
6.3.1 指针运算符 221
6.3.2 指针的运算 225
6.4 指针口数组的关系 226
6.4.1 指针与一维数组 226
6.4.2 指向指针的指针 233
6.4.3 数组的指针和指针数组 235
6.5 指针在函数中的应用 237
6.5.1 函数的参数是指针 237
6.5.2 函数的返回值是指针 246
6.6 本章小结 253
习题 254
第7章 复合的数据类型 256
7.1 结构概念的引入 256
7.2 结构体的描述与存储 259
7.2.1 结构体的类型定义 259
7.2.2 结构体变量定义及初始化 260
7.2.3 结构体成员引用方法 262
7.2.4 结构变量的空间分配及查看方法 262
7.3 结构的使用 268
7.4 结构体与函数的关系 281
7.5 共用体 289
7.6 枚举 293
7.7 typedef声明新的类型名 295
7.8 本章小结 296
习题 296
第8章 文件 299
8.1 问题的引入 299
8.2 文件的概念 299
8.3 内存和外存的数据交流 301
8.4 程序如何操作文件 302
8.4.1 打开文件 303
8.4.2 关闭文件 304
8.4.3 文件的读写 305
8.4.4 文件位置的确定 309
8.5 关于文件读写的讨论 310
8.6 程序调试与数据测试文件 317
8.7 本章小结 320
习题 320
第9章 编译预处理 322
9.1 宏定义 322
9.1.1 简单的宏定义 322
9.1.2 带参数的宏定义 324
9.2 文件包含 325
9.3 条件编译 326
9.4 本章小结 329
习题 330
第10章 程序调试及测试 331
10.1 程序开发流程 332
10.2 如何让程序运行 333
10.3 Visual C++6.0集成环境的使用 334
10.4 程序错误 340
10.5 软件测试与软件调试的概念 341
10.6 在IDE中调试程序 343
10.6.1 进入调试程序环境 344
10.6.2 调试命令 344
10.6.3 程序运行状态的查看 345
10.6.4 断点设置 347
10.6.5 程序调试的例子 347
10.6.6 有关联机帮助 350
10.7 程序测试 350
10.8 本章小结 353
习题 354
附录A 运算符的优先级和结合性 359
附录B ASCII码表 360
附录C C语言常用库函数 361
附录D 常用转义字符表 368
附录E 位运算简介 369
附录F 在工程中加入多个文件 371
附录G VS2008操作界面简介 377
参考文献 380