第1章 程序设计概述 1
1.1 程序设计的概念 1
1.1.1 程序与程序设计 1
1.1.2 程序设计的过程 2
1.2 数据结构与算法 3
1.2.1 数据结构 3
1.2.2 算法 3
1.3 程序设计方法 5
1.3.1 结构化程序设计方法 5
1.3.2 面向对象的程序设计方法 6
1.4 程序设计语言 7
1.4.1 程序设计语言分类 7
1.4.2 C语言概述 7
习题一 11
第2章 数据类型与数据运算 12
2.1 数据类型 12
2.2 常量 12
2.2.1 整型常量 12
2.2.2 实型常量 13
2.2.3 字符型常量 13
2.2.4 字符串常量 15
2.2.5 符号常量 15
2.3 变量 16
2.3.1 变量的概念 16
2.3.2 变量的定义与初始化 16
2.3.3 变量的存储与变量的取值范围 18
2.4 数据运算 19
2.4.1 赋值运算 20
2.4.2 算术运算 21
2.4.3 关系运算 23
2.4.4 逻辑运算 23
2.4.5 位运算 24
2.4.6 其他运算 26
习题二 29
第3章 顺序结构程序设计 31
3.1 C语句概述 31
3.1.1 控制语句 31
3.1.2 顺序结构的语句 31
3.2 输入/输出和头文件的概念 32
3.2.1 C语言的输入与输出 32
3.2.2 C程序的头文件 33
3.3 字符数据的输出和输入 33
3.3.1 字符输出函数putchar() 33
3.3.2 字符输入函数getchar() 34
3.4 格式输出和格式输入 35
3.4.1 格式输出函数printf() 35
3.4.2 格式输入函数scanf() 38
3.5 顺序结构程序举例 42
习题三 44
第4章 选择结构程序设计 48
4.1 if语句 48
4.1.1 单选择结构 48
4.1.2 双选择结构 49
4.1.3 选择结构的嵌套 50
4.2 switch语句 53
4.3 选择结构程序举例 55
习题四 58
第5章 循环结构程序设计 61
5.1 循环控制语句 61
5.1.1 goto语句及其构成的循环 61
5.1.2 while语句 62
5.1.3 do...while语句 63
5.1.4 for语句 64
5.1.5 break语句和continue语句 66
5.2 循环的控制方法 68
5.2.1 计数控制 68
5.2.2 条件控制 70
5.2.3 结束标志控制 70
5.3 算法的常用设计方法 71
5.3.1 穷举法 71
5.3.2 迭代法 72
5.3.3 递推法 73
5.4 循环嵌套结构 74
5.5 循环结构程序举例 75
习题五 80
第6章 编译预处理 84
6.1 宏定义 84
6.1.1 不带参数的宏定义 84
6.1.2 带参数的宏定义 85
6.2 文件包含 90
6.3 条件编译 91
习题六 92
第7章 函数 95
7.1 函数定义与函数调用 95
7.1.1 函数定义 95
7.1.2 函数调用 98
7.1.3 函数与带参宏的区别 103
7.2 函数的嵌套调用与递归调用 104
7.2.1 函数的嵌套调用 104
7.2.2 函数的递归调用 106
7.3 变量的存储类型与作用域 108
7.3.1 变量的存储类型 108
7.3.2 变量的作用域 109
7.4 内部函数与外部函数 116
7.4.1 内部函数 116
7.4.2 外部函数 117
7.4.3 运行一个多文件的程序 117
7.5 函数设计程序举例 120
习题七 123
第8章 数组 128
8.1 一维数组 128
8.1.1 一维数组的定义和初始化 128
8.1.2 数组元素的引用和基本操作 129
8.1.3 数组名作为函数的参数 131
8.1.4 一维数组应用举例 133
8.2 二维数组 138
8.2.1 二维数组的定义与初始化 138
8.2.2 二维数组元素的引用 140
8.2.3 二维数组应用举例 140
8.3 字符数组 143
8.3.1 字符数组的存储和初始化 144
8.3.2 字符数组的输入与输出 145
8.3.3 常用的字符串处理函数 146
8.3.4 字符数组应用举例 149
习题八 153
第9章 指针 156
9.1 指针和指针变量的概念 156
9.1.1 直接存取变量 156
9.1.2 间接存取变量 157
9.1.3 变量的指针 157
9.1.4 指针变量 157
9.2 指向变量的指针变量 157
9.2.1 指针变量的定义 157
9.2.2 指针变量的引用 158
9.2.3 指针变量的初始化 159
9.2.4 指针变量作为函数参数 161
9.3 一维数组与指针变量 164
9.3.1 指向一维数组的指针变量 164
9.3.2 通过指针变量引用数组元素 165
9.3.3 指向数组元素的指针变量允许的运算 167
9.3.4 数组名作为函数参数 168
9.3.5 字符串与指针变量 170
9.4 多级指针与指针数组 172
9.4.1 多级指针 172
9.4.2 指针数组 173
9.4.3 main()函数的命令行参数 175
9.5 二维数组与指针变量 176
9.5.1 二维数组元素及其地址的表示方法 176
9.5.2 二维数组元素的引用 177
9.6 指向函数的指针变量 181
9.6.1 指向函数的指针变量的定义 181
9.6.2 指向函数的指针变量的引用 182
9.6.3 指向函数的指针变量作为函数参数 183
9.6.4 返回指针值的函数 183
9.7 存储空间的动态分配与释放 184
9.7.1 动态分配存储空间的概念 184
9.7.2 用于动态分配存储单元的函数 184
9.8 指针应用举例 186
习题九 190
第10章 结构体与共用体 194
10.1 结构体类型 194
10.1.1 结构体类型的定义 194
10.1.2 结构体类型的变量 196
10.1.3 结构体类型的数组 199
10.1.4 结构体类型的指针变量 200
10.1.5 位段结构体 203
10.1.6 链表 204
10.2 共用体类型 211
10.2.1 共用体类型的定义 212
10.2.2 共用体类型的变量 212
10.3 枚举类型 216
10.3.1 枚举类型的定义 216
10.3.2 枚举类型的变量 216
10.4 用typedef定义类型标识符 219
习题十 220
第11章 数据文件 224
11.1 文件的概念 224
11.2 文件类型的指针变量 225
11.3 文件的打开与关闭 225
11.3.1 打开文件函数fopen() 225
11.3.2 关闭文件函数fclose() 226
11.4 文件的读/写 227
11.4.1 字符读/写函数 227
11.4.2 格式化读/写函数 229
11.4.3 字符串读/写函数 232
11.4.4 数据块读/写函数 232
11.5 文件的定位 233
11.5.1 rewind()函数 233
11.5.2 fseek()函数 233
11.5.3 ftell()函数 234
习题十一 234
参考文献 236
附录A 常用字符与ASCII码对照表 237
附录B 运算符的优先级和结合性 238
附录C 常用库函数 239