程序设计基础篇 1
第1章 C语言概述 1
1.1 程序设计语言的发展过程 1
1.1.1 机器语言(第一代语言) 1
1.1.2 汇编语言(第二代语言) 1
1.1.3 高级语言 1
1.2 C语言简介 2
1.2.1 C语言的发展 2
1.2.2 C语言的特点 2
1.2.3 C语言和C++语言 3
1.3 C语言程序的结构 3
1.3.1 简单的C语言程序 3
1.3.2 C语言程序的结构 6
1.4 C语言程序的运行步骤和集成开发环境 7
1.4.1 C语言程序的运行步骤 7
1.4.2 C语言的集成开发环境 8
小结 9
习题1 9
第2章 数据类型、运算符与表达式 11
2.1 C语言数据类型概述 11
2.2 常量 12
2.2.1 常量的概念 12
2.2.2 符号常量 12
2.2.3 整型常量 13
2.2.4 实型常量 14
2.2.5 字符常量 15
2.2.6 字符串常量 17
2.3 变量 18
2.3.1 变量的概念及其应用 18
2.3.2 整型变量 18
2.3.3 实型变量 20
2.3.4 字符型变量 22
2.4 算术运算符和算术表达式 24
2.4.1 运算符概述 24
2.4.2 算术运算符和算术表达式 25
2.5 赋值运算符和赋值表达式 27
2.5.1 赋值运算符 27
2.5.2 赋值表达式及其值 27
2.5.3 复合赋值运算符 28
2.6 逗号运算符和逗号表达式 29
2.7 数据类型转换 30
2.7.1 数据类型的自动转换 30
2.7.2 数据类型的强制转换 32
小结 33
习题2 33
第3章 顺序结构程序设计 36
3.1 结构化程序设计方法 36
3.1.1 自顶向下、逐步求精、模块化的结构化程序设计方法 36
3.1.2 程序的结构 36
3.2 C语句概述 37
3.2.1 表达式语句 38
3.2.2 函数调用语句 39
3.2.3 控制语句 39
3.2.4 复合语句 39
3.2.5 空语句 40
3.3 程序的注释 40
3.4 数据的输入和输出 40
3.4.1 输入和输出的基本概念 40
3.4.2 输入和输出的实现 41
3.5 字符数据输入和输出函数 41
3.5.1 字符输入函数getchar() 41
3.5.2 字符输出函数putchar() 42
3.6 格式输入和输出函数 42
3.6.1 格式输入函数scanf() 42
3.6.2 格式输出函数printf() 46
3.7 顺序结构程序设计举例 50
小结 54
习题3 54
第4章 选择结构程序设计 57
4.1 关系运算符和关系表达式 57
4.1.1 关系运算符及其优先级和结合性 57
4.1.2 关系表达式 57
4.1.3 使用关系运算符应注意的问题 58
4.2 逻辑运算符和逻辑表达式 59
4.2.1 逻辑运算符及其优先级和结合性 59
4.2.2 逻辑表达式 60
4.2.3 使用逻辑运算符应注意的问题 60
4.3 if语句 61
4.3.1 选择结构引例 61
4.3.2 if-else双分支结构 62
4.3.3 if单分支结构 66
4.3.4 if语句嵌套形成多分支结构 68
4.4 条件运算符和条件表达式 74
4.4.1 条件运算符 74
4.4.2 条件表达式和求值规则 74
4.5 switch语句 76
4.5.1 switch语句的一般形式 76
4.5.2 switch语句的功能 76
4.5.3 switch语句使用说明 78
4.6 选择结构程序设计举例 79
4.7 switch语句与多分支if语句的比较 84
小结 84
习题4 84
第5章 循环结构程序设计 89
5.1 循环结构的引入 89
5.2 三种实现循环结构的语句 89
5.2.1 while语句 89
5.2.2 do-while语句 92
5.2.3 for语句 93
5.3 break语句和continue语句 100
5.3.1 break语句 100
5.3.2 continue语句 101
5.4 循环嵌套 102
5.4.1 循环嵌套的概念 102
5.4.2 循环嵌套常见的形式 102
5.4.3 循环嵌套的执行过程 102
5.4.4 使用注意事项 103
5.5 综合程序设计 104
5.5.1 穷举法 104
5.5.2 递推法 108
5.5.3 迭代法 110
小结 114
习题5 114
第6章 数组 118
6.1 数组的引入 118
6.1.1 问题的提出 118
6.1.2 数组的基本概念 119
6.1.3 数组的分类 120
6.2 一维数组 120
6.2.1 一维数组的定义 120
6.2.2 一维数组的引用 120
6.2.3 一维数组的存储 121
6.2.4 一维数组的初始化 121
6.2.5 一维数组的应用举例 123
6.3 多维数组 131
6.3.1 二维数组的定义 131
6.3.2 二维数组的引用 132
6.3.3 二维数组的存储 133
6.3.4 二维数组的初始化 133
6.3.5 二维数组应用举例 133
6.4 字符数组 138
6.4.1 字符数组的定义与初始化 138
6.4.2 字符数组的输入和输出 139
6.4.3 常用的字符串处理函数 141
6.4.4 字符数组的应用举例 144
小结 147
习题6 147
第7章 函数 151
7.1 函数引入 151
7.2 函数定义 154
7.2.1 函数定义的一般形式 154
7.2.2 函数定义的说明 155
7.3 函数调用 156
7.3.1 函数调用的方法 157
7.3.2 函数调用的数据传递 159
7.3.3 函数调用的过程 160
7.3.4 函数的返回值 161
7.4 函数声明 162
7.4.1 函数声明的形式 163
7.4.2 函数声明的位置 163
7.5 函数的嵌套调用和递归调用 165
7.5.1 函数的嵌套调用 165
7.5.2 函数的递归调用 166
7.6 数组作为函数参数 170
7.6.1 问题的提出 170
7.6.2 数组作为函数参数的形式 171
7.7 变量的作用域及存储类别 180
7.7.1 变量的作用域 180
7.7.2 变量的存储类别 184
7.7.3 变量的作用域和存储类别小结 188
7.8 多文件程序 189
小结 191
习题7 191
第8章 预处理命令 195
8.1 宏定义 195
8.2 文件包含 200
8.3 条件编译 201
小结 202
习题8 202
程序设计进阶篇 206
第9章 指针 206
9.1 指针的概念 206
9.2 访问变量的地址 207
9.3 定义及初始化指针变量 208
9.3.1 定义指针变量 208
9.3.2 初始化指针变量 209
9.4 通过指针访问变量 210
9.5 指针的运算 213
9.5.1 指针表达式 213
9.5.2 指针增加和比例因子 215
9.6 指针和数组 215
9.6.1 指针和一维数组 215
9.6.2 用指针引用数组元素 216
9.6.3 指针和二维数组 219
9.7 指针和字符串 222
9.7.1 指向字符的指针 222
9.7.2 指向字符串的指针 223
9.8 指针与函数 224
9.8.1 用指针变量作为函数参数 224
9.8.2 用指针变量作为函数返回值 226
9.8.3 指向函数的指针变量 227
9.9 二级指针和指针数组 229
9.9.1 二级指针 229
9.9.2 指针数组 230
小结 234
习题9 234
第10章 结构体与共用体 243
10.1 结构体引入 243
10.2 结构体变量的使用 244
10.2.1 结构体变量的定义 244
10.2.2 结构体变量的引用 246
10.2.3 结构体变量的初始化 247
10.2.4 结构体变量的使用 248
10.3 结构体数组 249
10.4 结构体变量作为函数的参数和返回值 251
10.5 结构体和指针 255
10.5.1 指向结构体变量的指针 255
10.5.2 指向结构体数组的指针 256
10.5.3 指向结构体变量的指针作为函数参数 258
10.5.4 函数返回值为指向结构体变量的指针 259
10.6 动态内存分配与链表 260
10.6.1 动态内存函数 261
10.6.2 用指针处理链表 262
10.6.3 链表的定义 264
10.6.4 链表的基本操作 264
10.7 共用体类型 270
10.7.1 共用体类型的定义 270
10.7.2 共用体变量的定义 270
10.7.3 共用体变量的使用 271
10.7.4 共用体实例 272
10.8 枚举类型 273
10.8.1 枚举类型的定义 273
10.8.2 枚举变量的定义 274
10.8.3 枚举变量的赋值和使用 274
10.9 自定义类型 275
小结 276
习题10 276
第11章 位运算 280
11.1 位运算符概述 280
11.1.1 与运算 280
11.1.2 或运算 282
11.1.3 异或运算 284
11.1.4 取反运算 285
11.1.5 移位运算 285
11.2 位运算赋值运算符 287
11.3 位域(位段) 287
11.3.1 位域的定义和位域变量的说明 287
11.3.2 位域的使用 288
小结 291
习题11 291
第12章 文件 293
12.1 文件概述 293
12.2 文件指针的定义 293
12.3 文件的基本操作 294
12.3.1 文件打开函数 294
12.3.2 文件关闭函数 295
12.3.3 文件检测函数 296
12.3.4 文件定位函数 296
12.3.5 字符读写函数 297
12.3.6 字符串读写函数 301
12.3.7 格式化读写函数 302
12.3.8 数据块读写函数 304
12.4 综合程序设计 305
小结 314
习题12 314
附录A 常用字符与ASCII码对照表 317
附录B 扩展ASCII码对照表 318
附录C C语言关键字 319
附录D C语言的9种控制语句 320
附录E C语言运算符的优先级与结合性 321
附录F 常用的ANSI C标准库函数 323
参考文献 328