第1章 概述 1
1.1 计算机运算过程 1
1.1.1 冯·诺依曼结构 1
1.1.2 核心部件功能和指令执行过程 2
1.2 计算机语言与程序设计 10
1.2.1 机器语言与程序设计 10
1.2.2 汇编语言与程序设计 13
1.2.3 高级语言与程序设计 15
1.3 C语言的特点与发展过程 19
1.3.1 C语言的特点 19
1.3.2 C语言的发展过程 21
1.4 C语言的学习内容 22
1.4.1 了解C语言的背景知识 22
1.4.2 掌握C语言语句 23
1.4.3 掌握算法设计过程 24
1.4.4 掌握程序设计过程 24
1.4.5 培养计算思维能力 24
1.5 C语言程序的开发过程 24
1.5.1 编辑 24
1.5.2 编译 25
1.5.3 连接 25
1.5.4 运行 26
1.5.5 集成开发环境 26
本章小结 27
习题1 28
第2章 变量与表达式 29
2.1 数值编码 29
2.1.1 整型数 29
2.1.2 实数 32
2.1.3 对C语言数值表示的几点说明 36
2.2 字符编码 36
2.2.1 ASCII 37
2.2.2 C语言中字符的表示方式 38
2.3 变量的含义及类型 39
2.3.1 变量的含义 39
2.3.2 标识符 39
2.3.3 变量的类型 40
2.3.4 对变量的几点说明 44
2.4 运算符和表达式 45
2.4.1 算术运算符和算术表达式 45
2.4.2 赋值运算符和赋值表达式 48
2.4.3 逗号运算符和逗号表达式 55
2.4.4 位运算符和位运算表达式 56
2.5 语句和程序 64
2.5.1 语句 64
2.5.2 程序 65
2.5.3 输入/输出函数 66
2.6 变量与表达式的启示 68
本章小结 69
习题2 70
第3章 选择和循环结构 72
3.1 控制语句的作用 72
3.1.1 实现选择结构控制语句的功能 72
3.1.2 实现循环结构控制语句的功能 73
3.2 条件和表示条件的表达式 73
3.2.1 关系运算符和关系表达式 74
3.2.2 逻辑运算符和逻辑表达式 76
3.3 if语句 79
3.3.1 if语句的3种形式 79
3.3.2 if语句的嵌套 81
3.3.3 条件运算符 83
3.4 switch语句 85
3.4.1 switch语句的格式 85
3.4.2 完整程序举例 86
3.5 循环结构 87
3.5.1 while语句 88
3.5.2 do…while语句 89
3.5.3 for语句 90
3.5.4 循环嵌套 91
3.5.5 continue语句和break语句 92
3.5.6 例题解析 94
3.6 程序设计实例 96
3.6.1 机器猜数游戏 96
3.6.2 找出100~200的所有素数 99
3.6.3 穷举法举例 100
3.6.4 统计无符号数中1的位数 102
3.7 选择和循环结构的启示 104
本章小结 106
习题3 106
第4章 函数 109
4.1 C语言程序结构 109
4.1.1 模块化结构 109
4.1.2 函数的调用和返回 110
4.1.3 函数的含义 111
4.1.4 模块化结构的好处 111
4.2 C语言函数的定义和调用过程 112
4.2.1 C语言函数的描述和定义过程 112
4.2.2 C语言函数的调用方式和返回过程 114
4.2.3 例题解析 118
4.2.4 程序设计举例 119
4.3 函数的递归调用 122
4.3.1 递归调用的定义 122
4.3.2 汉诺塔问题 123
4.4 输入/输出函数 127
4.4.1 格式输出函数printf 127
4.4.2 格式输入函数scanf 133
4.4.3 对格式输入/输出函数的几点说明 141
4.5 局部变量和全局变量 143
4.5.1 局部变量 143
4.5.2 全局变量 144
4.6 static、extern和register 146
4.6.1 static 147
4.6.2 extern 149
4.6.3 register 150
4.6.4 定义和声明的区别 151
4.7 递归程序 152
4.7.1 问题描述 152
4.7.2 算法设计 152
4.7.3 程序设计 152
4.8 函数的启示 153
本章小结 154
习题4 155
第5章 数组 159
5.1 数组的存储结构和作用 159
5.1.1 数组的存储结构 159
5.1.2 数组的作用 160
5.2 一维数组 160
5.2.1 一维数组的定义和引用 161
5.2.2 排序 164
5.2.3 折半查找 167
5.2.4 数组与算法 171
5.3 二维数组 171
5.3.1 二维数组的定义和引用 171
5.3.2 二维数组的应用实例 174
5.4 字符数组与字符串 175
5.4.1 字符数组的定义和引用 176
5.4.2 字符串 176
5.4.3 字符串输入/输出函数 177
5.4.4 字符串处理函数 179
5.4.5 程序设计举例 182
5.5 数组的启示 185
本章小结 186
习题5 186
第6章 指针 189
6.1 指针变量与间接访问 189
6.1.1 变量的属性 189
6.1.2 存储单元地址与存储地址的存储单元 190
6.1.3 间接访问过程与指针的含义 190
6.1.4 C语言中的直接访问和间接访问 192
6.2 指针变量的定义和引用 193
6.2.1 指针变量的定义 193
6.2.2 指针变最的赋值与取址运算符 194
6.2.3 指针变量的引用 195
6.2.4 指针输出 197
6.2.5 对指针变量的几点说明 198
6.3 指针与函数 201
6.3.1 数据交换方式 201
6.3.2 地址传递方式 202
6.3.3 指针作为函数返回值 205
6.3.4 例题解析 207
6.4 指针与数组 207
6.4.1 指针与一维数组 207
6.4.2 指针与二维数组 216
6.4.3 对数组名的几点说明 227
6.5 指针与字符串 228
6.5.1 指针变量的定义和引用 228
6.5.2 函数的调用与返回 230
6.5.3 对字符串的几点说明 232
6.5.4 例题解析 234
6.5.5 旋转字符串程序设计 236
6.6 指针数组和指向指针的指针 239
6.6.1 指针数组 239
6.6.2 指向指针的指针 244
6.7 指向函数的指针 248
6.7.1 间接调用函数 248
6.7.2 指向函数的指针变量作为函数参数 250
6.8 指针的启示 252
本章小结 253
习题6 255
第7章 结构体与共用体 259
7.1 结构体的作用和类型声明 259
7.1.1 结构体的作用 259
7.1.2 结构体的类型声明 259
7.2 结构体变量的定义和引用 265
7.2.1 结构体变量的定义过程 265
7.2.2 结构体变量的引用和赋值方式 267
7.3 结构体数组 270
7.3.1 结构体数组的定义过程 270
7.3.2 结构体数组的初始化过程 271
7.3.3 排序程序 272
7.4 指向结构体的指针 274
7.4.1 指向结构体的指针的含义 274
7.4.2 指向结构体的指针变量的定义过程 274
7.4.3 对指向结构体的指针变量的几点说明 276
7.5 结构体与函数调用 278
7.5.1 结构体变量作为函数参数 279
7.5.2 指向结构体的指针变量作为函数参数 280
7.5.3 结构体类型数据作为函数返回值 281
7.6 结构体与链表 283
7.6.1 链表的含义 283
7.6.2 链表结点的创建和删除 284
7.6.3 链表的操作 288
7.7 共用体 295
7.7.1 共用体的含义和特性 296
7.7.2 共用体变量的定义和引用过程 298
7.7.3 共用体与函数调用 302
7.8 枚举类型 303
7.8.1 枚举类型的声明和变量的定义过程 303
7.8.2 枚举类型变量的应用举例 305
7.9 用typedef声明新的类型名 306
7.9.1 为基本数据类型声明新的类型名 306
7.9.2 为自定义数据类型声明简洁的类型名 307
7.9.3 为数组声明简洁的类型名 308
7.9.4 为指针声明简洁的名称 308
7.9.5 用typedef声明新的类型名 309
7.9.6 对typedef声明新类型名的几点说明 310
7.10 结构体的启示 310
本章小结 311
习题7 311
第8章 预处理命令 315
8.1 预处理命令的含义和作用 315
8.1.1 预处理命令的含义 315
8.1.2 预处理命令的作用 316
8.2 宏定义 316
8.2.1 不带参数的宏定义 317
8.2.2 带参数的宏定义 321
8.3 文件包含 324
8.3.1 #include命令的格式 324
8.3.2 文件包含的过程 325
8.3.3 对文件包含的几点说明 325
8.4 条件编译 326
8.4.1 条件编译的作用 326
8.4.2 条件编译命令 326
8.5 预处理命令的启示 328
本章小结 329
习题8 329
第9章 文件 331
9.1 文件与输入/输出 331
9.1.1 输入/输出过程 331
9.1.2 文件概述 333
9.2 文件的操作过程 337
9.2.1 打开与关闭文件 337
9.2.2 字符读/写操作 340
9.2.3 字符串读/写操作 344
9.2.4 格式读/写操作 346
9.2.5 数据块读/写操作 348
9.2.6 文件与标准输入/输出设备 357
9.3 文件的启示 359
本章小结 360
习题9 360
附录A Visual C++6.0使用教程 363
A.1 Visual C++6.0基本介绍 363
A.2 Visual C++6.0窗口 363
A.3 新建工程 365
A.4 新建文件 366
A.5 编译 367
A.6 连接 368
A.7 运行 369
A.8 调试 369
A.9 调试命令简介 373
A.10 编译和连接过程中常见的错误 373
附录B C语言中的关键字 375
附录C 运算符的优先级和结合性 376
附录D 数学函数 378
参考文献 380