基础篇 3
第1章 C语言概述 3
1.1 计算机与程序设计语言 4
1.1.1 计算机及发展 4
1.1.2 计算机系统结构 4
1.1.3 程序设计语言的发展及特点 5
1.1.4 C语言的特点 6
1.2 C语言程序的基本结构 7
1.2.1 C语言程序的基本结构 7
1.2.2 C语言程序结构特点 10
1.3 C语言编程流程 11
1.3.1 如何学好C语言程序设计 11
1.3.2 编写C语言程序流程 11
1.4 C语言编程环境 13
1.4.1 在Turbo C中编程 13
1.4.2 在Visual C++中编程 13
1.5 小结 17
第2章 基本语法——语言描述与数据存储的简单方法 18
2.1 C语言程序基本元素 19
2.1.1 基本字符集 19
2.1.2 C语言的词类 21
2.2 数据类型的含义与常用类型 21
2.2.1 数据类型的含义 21
2.2.2 整型 23
2.2.3 实型 25
2.2.4 字符型 25
2.3 常量与变量 26
2.3.1 常量 26
2.3.2 变量 31
2.4 运算符与表达式 33
2.4.1 算术运算符与算术表达式 34
2.4.2 赋值运算符与赋值表达式 35
2.4.3 自增与自减运算符 37
2.4.4 逗号运算符与sizeof运算符 38
2.4.5 数据类型转换与强制类型转换符 39
2.5 小结 41
第3章 编程语句——简单程序构建的方法 43
3.1 C语言的语句及分类 44
3.2 基本输入/输出函数 46
3.2.1 字符输入/输出函数 47
3.2.2 格式输入/输出函数 50
3.3 典型例题解析 57
3.4 小结 60
第4章 算法——程序设计的核心 62
4.1 程序设计与算法概述 63
4.2 程序设计思想 65
4.2.1 结构化程序设计思想 66
4.2.2 面向对象的程序设计思想 67
4.3 程序基本结构 68
4.3.1 顺序结构 68
4.3.2 选择结构 68
4.3.3 循环结构 69
4.4 算法特性与描述方法 69
4.4.1 算法的特性 70
4.4.2 算法描述方法 71
4.4.3 算法分析与评价 75
4.5 小结 76
第5章 判断与循环——一般复杂问题程序设计方法 77
5.1 条件描述与选择结构程序设计 78
5.1.1 程序中限定条件的表示 79
5.1.2 逻辑型变量 83
5.1.3 程序中问题条件选择的处理——if-else语句 83
5.2 重复操作问题与循环语句 91
5.2.1 循环问题导引 91
5.2.2 while语句 92
5.3 典型例题解析 96
5.4 小结 101
第6章 再论程序设计基本结构 102
6.1 再论条件语句 103
6.2 再论循环语句 107
6.2.1 do-while语句和for语句 107
6.2.2 循环嵌套 113
6.2.3 流程转移控制语句 116
6.3 典型应用举例 123
6.4 小结 126
提高篇 129
第7章 复杂数据类型——数据描述与扩展存储方法 129
7.1 数组 131
7.1.1 一维数组 131
7.1.2 二维数组 141
7.2 字符串与字符数组 145
7.2.1 字符串概述 146
7.2.2 字符串的初始化 146
7.2.3 字符串长度与字符数组长度 147
7.2.4 有关字符串的系统函数 148
7.3 指针 153
7.3.1 指针的基本概念 153
7.3.2 指针与一维数组 157
7.3.3 指针与字符串 162
7.3.4 指向二维数组的指针 164
7.4 枚举类型 167
7.4.1 定义枚举类型和变量 167
7.4.2 枚举类型变量的赋值和使用 168
7.5 结构体类型 169
7.5.1 结构体类型的定义 169
7.5.2 结构体类型变量的定义和存储 170
7.5.3 结构体变量的使用 171
7.5.4 结构体变量的初始化 174
7.5.5 结构体数组的定义 174
7.5.6 结构体指针变量的定义和使用 175
7.6 共用体类型 177
7.6.1 共用体类型的定义 178
7.6.2 共用体变量的定义、存储和成员变量的访问 178
7.7 类型定义符typedef 182
7.8 小结 183
第8章 函数——复杂程序的实现方法 184
8.1 函数定义和调用 185
8.1.1 函数定义 185
8.1.2 函数的返回值 186
8.1.3 函数的调用 186
8.1.4 定义和调用函数举例 187
8.1.5 函数原型和函数声明 191
8.2 函数的嵌套调用和递归调用 192
8.2.1 函数的嵌套调用 192
8.2.2 函数的递归调用 194
8.3 函数与数组 197
8.4 函数与指针 201
8.5 函数与结构体 204
8.5.1 结构变量作函数参数 204
8.5.2 结构指针变量作函数参数 204
8.6 再论说明语句 206
8.6.1 作用域 206
8.6.2 变量的生存期 210
8.6.3 变量的作用域和生存期小结 213
8.7 小结 213
第9章 文件——数据独立存储的方法 215
9.1 文件概述 216
9.1.1 文件的概念 216
9.1.2 文件的分类 217
9.1.3 文件缓冲区 218
9.1.4 文件型指针 219
9.2 文件的打开与关闭 219
9.2.1 文件的打开 220
9.2.2 文件的关闭 221
9.3 文件的读/写操作 222
9.3.1 读写“单”字符函数——fputc与fgetc函数 222
9.3.2 读写一个字符串的函数——fgets与fputs函数 226
9.3.3 格式化读写函数——fscanf与fprintf函数 228
9.3.4 按数据块方式读写——fwrite与fread函数 230
9.3.5 字输入/输出函数——getw函数putw函数 232
9.4 文件定位函数 233
9.5 文件状态检查函数 236
9.6 小结 238
扩展篇 241
第10章 编译预处理——程序设计的一般策略 241
10.1 宏定义 242
10.2 文件包含 248
10.3 条件编译 250
10.4 小结 252
第11章 位运算——直接控制硬件的方法 253
11.1 位运算符与位运算表达式 254
11.2 复合位运算赋值 259
11.3 位段 260
11.4 典型例题解析 262
11.5 小结 265
第12章 再论指针——C语言的灵魂之处 266
12.1 指针数组 267
12.2 指向指针的指针 271
12.3 带参数的主函数 272
12.4 指向函数的指针和指针函数 274
12.4.1 指向函数的指针 274
12.4.2 指针函数 277
12.5 动态数组的实现 278
12.5.1 C语言程序的内存映像 278
12.5.2 动态内存分配函数 279
12.5.3 动态函数应用举例 283
12.6 使用const修饰指针变量 283
12.7 小结 284
第13章 典型案例程序剖析 285
13.1 万年历 286
13.1.1 系统概要 286
13.1.2 主要知识点 286
13.1.3 系统设计思路 287
13.1.4 程序代码 288
13.2 学生成绩管理 292
13.2.1 系统概要 292
13.2.2 主要知识点 293
13.2.3 系统设计思路 293
13.2.4 程序代码 293
13.3 俄罗斯方块游戏 304
13.3.1 系统概要 304
13.3.2 主要知识点 305
13.3.3 系统设计思路 307
13.3.4 程序代码 307
第14章 典型算法介绍 312
14.1 递归与迭代法 313
14.1.1 递归法 313
14.1.2 迭代法 316
14.1.3 递归的消除 318
14.2 贪心法 321
14.2.1 货币兑付问题 321
14.2.2 背包问题 323
14.2.3 最小生成树问题 326
第15章 趣谈C语言 332
15.1 计算机发展65年 333
15.2 C语言史话 335
15.3 IT英雄榜 336
15.4 一个程序员的成长之路 341
附录 345
附录A ASC II表 345
附录B 关键字 346
附录C 运算符 348
附录D 数据类型 350
附录E 常用库函数 351
附录F C语言编程代码规范 356
附录G 常用编译错误及处理 359
参考文献 365