第1章 程序设计基础 1
1.1计算机系统和工作原理 1
1.1.1计算机系统的组成 1
1.1.2指令与程序 3
1.2信息的表示与存储 5
1.2.1计算机的数字系统 5
1.2.2进位计数制的转换 6
1.2.3数值数据的表示 9
1.2.4非数值数据的表示 13
1.3程序设计语言 14
1.3.1机器语言与汇编语言 14
1.3.2高级语言 15
1.4程序设计概述 16
1.4.1计算机问题求解的基本特点 16
1.4.2算法的定义与特性 17
1.4.3算法的表示 17
1.4.4结构化程序设计 19
1.4.5面向对象程序设计 20
1.4.6程序设计技术前沿 21
1.5 C语言概述 21
1.5.1 C语言的历史与特点 21
1.5.2 C语言基本词法 22
1.5.3简单的C程序 24
1.5.4 C程序基本结构 26
1.5.5 C程序开发步骤 27
1.5.6 C程序编码风格 28
习题 28
第2章 数据类型与表达式 30
2.1数据类型 30
2.1.1整型 31
2.1.2浮点型 32
2.1.3字符型 33
2.2常量 34
2.2.1整型常量 34
2.2.2浮点型常量 35
2.2.3字符常量 35
2.2.4字符串常量 37
2.2.5符号常量 38
2.3变量 39
2.3.1变量的概念 39
2.3.2定义变量 39
2.3.3使用变量 40
2.3.4存储类别 41
2.3.5类型限定 41
2.4运算符与表达式 42
2.4.1运算符与表达式的概念 42
2.4.2算术运算符 45
2.4.3自增自减运算符 46
2.4.4关系运算符 47
2.4.5逻辑运算符 48
2.4.6条件运算符 50
2.4.7位运算符 51
2.4.8赋值运算符 55
2.4.9取长度运算符 57
2.4.10逗号运算符 57
2.4.11圆括号运算符 58
2.4.12常量表达式 58
2.5类型转换 59
2.5.1隐式类型转换 59
2.5.2显式类型转换 61
习题 62
第3章 程序控制结构 64
3.1语句 64
3.1.1简单语句 64
3.1.2复合语句 66
3.1.3注释 67
3.1.4语句的写法 68
3.2输入与输出 69
3.2.1字符输入与输出 69
3.2.2格式化输出 71
3.2.3格式化输入 76
3.3程序顺序结构 79
3.3.1顺序执行 79
3.3.2跳转执行 79
3.4程序选择结构 80
3.4.1 if语句 80
3.4.2 switch语句 84
3.4.3选择结构的嵌套 86
3.4.4选择结构程序举例 90
3.5程序循环结构 92
3.5.1 while语句 92
3.5.2 do语句 94
3.5.3 for语句 96
3.5.4 break语句 97
3.5.5 continue语句 98
3.5.6循环结构的嵌套 99
3.5.7循环结构程序举例 99
习题 103
第4章 函数 106
4.1函数定义 106
4.1.1函数定义的一般形式 106
4.1.2函数返回 109
4.2函数参数 110
4.2.1形式参数 110
4.2.2实际参数 111
4.2.3参数传递机制 111
4.2.4函数调用栈 112
4.2.5 const参数 114
4.2.6可变参数函数 114
4.3函数原型与调用 116
4.3.1函数声明和函数原型 116
4.3.2库函数的调用方法 119
4.3.3标准库函数 120
4.4内联函数 124
4.5函数调用形式 125
4.5.1嵌套调用 125
4.5.2递归调用 128
4.6作用域和生命期 130
4.6.1局部变量 130
4.6.2全局变量 131
4.6.3作用域 132
4.6.4程序映像和内存布局 135
4.6.5生命期 138
4.7对象初始化 141
4.8声明与定义 143
4.9变量修饰小结 145
4.10程序组织结构 146
4.10.1内部函数 146
4.10.2外部函数 146
4.10.3多文件结构 147
4.10.4头文件与工程文件 148
4.10.5提高编译速度 149
4.11函数应用程序举例 151
习题 154
第5章 预处理命令 156
5.1宏定义 156
5.1.1不带参数的宏定义 157
5.1.2带参数的宏定义 159
5.1.3#和##预处理运算 163
5.1.4预定义宏 163
5.2文件包含 164
5.3条件编译 166
5.3.1#def ine定义条件 166
5.3.2#if def、#ifndef 166
5.3.3#if-#elif 167
5.4其他命令 168
习题 169
第6章 数组 171
6.1一维数组的定义和引用 171
6.1.1一维数组的定义 171
6.1.2一维数组的初始化 173
6.1.3一维数组的引用 173
6.2多维数组的定义和引用 175
6.2.1多维数组的定义 175
6.2.2多维数组的初始化 177
6.2.3多维数组的引用 178
6.3数组与函数 181
6.3.1数组作为函数的参数 181
6.3.2数组参数的传递机制 182
6.4字符串 185
6.4.1字符数组 185
6.4.2字符串 187
6.4.3字符串的输入和输出 189
6.4.4字符串数组 190
6.4.5字符串处理函数 191
6.5数组应用程序举例 196
习题 206
第7章 指针 208
7.1指针与指针变量 208
7.1.1地址和指针的概念 208
7.1.2指针变量 209
7.2指针的使用及运算 211
7.2.1获取对象的地址 211
7.2.2指针的间接访问 212
7.2.3指针变量的初始化与赋值 214
7.2.4指针的有效性 216
7.2.5指针运算 217
7.2.6指针的const限定 222
7.3指针与数组 224
7.3.1指向一维数组元素的指针 224
7.3.2指向多维数组元素的指针 228
7.3.3数组指针 232
7.3.4指针数组 234
7.3.5指向指针的指针 236
7.4指针与字符串 238
7.4.1指向字符串的指针 239
7.4.2指针与字符数组的比较 241
7.4.3指向字符串数组的指针 242
7.5指针与函数 244
7.5.1指针作为函数参数 244
7.5.2函数返回指针值 253
7.5.3函数指针 254
7.6动态内存 258
7.6.1动态内存的概念 258
7.6.2动态内存的分配和释放 259
7.6.3动态内存的应用 260
7.7带参数的main函数 264
习题 266
第8章 自定义数据类型 267
8.1结构体类型 267
8.2结构体对象 269
8.2.1结构体对象的定义 269
8.2.2结构体对象的初始化 272
8.2.3结构体对象的使用 272
8.3结构体与数组 274
8.3.1结构体数组 274
8.3.2结构体数组成员 274
8.4结构体与指针 275
8.4.1指向结构体的指针 275
8.4.2指向结构体数组的指针 277
8.4.3结构体指针成员 278
8.5结构体与函数 279
8.5.1结构体对象作为函数参数 279
8.5.2结构体数组作为函数参数 279
8.5.3结构体指针作为函数参数 280
8.5.4函数返回结构体对象或指针 280
8.6共用体 281
8.6.1共用体概念及类型声明 281
8.6.2共用体对象的定义 282
8.6.3共用体对象的使用 282
8.6.4结构体与共用体嵌套 284
8.7枚举类型 284
8.7.1枚举类型的声明 284
8.7.2枚举类型对象 285
8.8位域 285
8.8.1位域的声明 285
8.8.2位域的使用 287
8.9用户自定义类型 288
习题 291
第9章 链表 293
9.1链表概述 293
9.1.1链表的概念 293
9.1.2单链表与双链表 294
9.2链表的创建 295
9.2.1创建单链表 295
9.2.2创建双链表 298
9.3链表的运算 299
9.3.1链表的遍历 299
9.3.2销毁链表 301
9.3.3查找结点 302
9.3.4链表的逆序 304
9.4结点的插入与删除 304
9.4.1单链表插入结点 304
9.4.2单链表删除结点 305
9.4.3双链表插入结点 306
9.4.4双链表删除结点 307
习题 308
第10章 文件 311
10.1文件概述 311
10.1.1文件系统 311
10.1.2流式文件 312
10.1.3文件指针 312
10.2文件打开与关闭 313
10.2.1文件打开 313
10.2.2文件关闭 314
10.2.3文件状态 315
10.2.4文件缓冲 316
10.3文件读写操作 317
10.3.1文件读写操作的基本形式 317
10.3.2读写字符数据 317
10.3.3读写字符串数据 318
10.3.4读写格式数据 319
10.3.5读写数据块 321
10.4文件定位 324
习题 325
第11章 算法 327
11.1算法基本概念 327
11.1.1什么是算法 327
11.1.2算法基本要素 327
11.1.3算法求解过程 328
11.2算法分析 329
11.2.1时间复杂度 329
11.2.2空间复杂度 332
11.3常用算法 332
11.3.1分治法 332
11.3.2动态规划 335
11.3.3贪心算法 338
11.3.4回溯法 341
习题 343
第12章 数据结构 345
12.1数据结构基本概念 345
12.1.1什么是数据结构 345
12.1.2逻辑结构与存储结构 346
12.1.3数据结构与数据类型 346
12.2线性表 347
12.2.1线性表的基本概念 347
12.2.2线性顺序表及其运算 350
12.2.3线性链式表及其运算 355
12.3栈和队列 355
12.3.1栈的定义 355
12.3.2栈的顺序存储及基本运算 356
12.3.3栈的链式存储及基本运算 358
12.3.4队列的定义 358
12.3.5队列的顺序存储及基本运算 359
12.3.6队列的链式存储及基本运算 361
12.4树和二叉树 361
12.4.1树的基本概念 361
12.4.2二叉树及其基本性质 364
12.4.3二叉树的存储结构 367
12.4.4二叉树的遍历 368
习题 370
第13章 高级编程技术 372
13.1配置开发环境 372
13.1.1开发环境的路径参数 372
13.1.2开发环境的路径设置 373
13.1.3开发环境的配置 375
13.1.4函数库的包含和连接 376
13.1.5函数库配置举例 378
13.2界面编程 381
13.2.1 Windows编程的基本概念 381
13.2.2数据定义与数据类型 382
13.2.3消息与消息循环 385
13.2.4资源与资源文件 387
13.2.5 Windows应用程序结构 396
13.2.6 Windows编程框架 402
13.2.7图形输出 409
13.2.8事件处理 425
13.2.9控件与对话框 434
13.3图形编程 441
13.3.1图形编程概述 441
13.3.2 OpenGL简介 442
13.3.3 GLUT编程模式 444
13.3.4 Win32编程模式 449
13.4多媒体编程 456
13.4.1 MCI编程 456
13.4.2 MCIWnd编程 462
13.4.3 MMAPI编程 467
13.5网络编程 472
13.5.1 Winsock简介 472
13.5.2 Winsock编程 473
13.5.3 TCP编程模式 476
13.5.4 UDP编程模式 480
13.6数据库编程 483
13.6.1数据库编程概述 483
13.6.2 ODBC简介 484
13.6.3 ODBC编程 487
13.6.4数据库编程举例 494
习题 497
附录A ASCII码对照表 499
附录B C语言关键字 500
附录C C语言运算符及其优先级、结合性 502
参考文献 504