绪论 1
第1章 顺序结构程序设计 5
1.1显示信息 5
1.1.1初识C语言程序 5
1.1.2 C语言程序的结构 6
1.2整数算术运算 6
1.2.1整数的加法、减法和乘法 6
1.2.2整数的除法 10
1.2.3整数的求余运算 10
1.2.4溢出 12
1.2.5运算符的优先级和结合性 12
1.3实数的算术运算 12
1.3.1实数的四则运算 12
1.3.2乘方、开方与取对数 13
1.4字符类型 14
1.4.1字符常量 15
1.4.2字符变量 15
1.4.3字符数据的存储方式 15
1.4.4字符数据与整数通用 16
1.5表达式 17
1.5.1算术表达式 17
1.5.2多种类型数据的混合运算 17
1.6赋值运算 18
1.6.1赋值运算符 18
1.6.2赋值表达式 18
1.6.3赋值语句 19
1.7顺序结构程序设计 19
1.7.1顺序结构的流程框图 19
1.7.2顺序结构综合应用 20
1.8语法小结 28
1.8.1标识符 28
1.8.2二进制数、八进制数与十六进制数 28
1.8.3数据类型 32
1.8.4常量与变量 33
1.8.5运算符与优先级 34
1.8.6语句 35
1.8.7输入/输出格式 35
习题1 36
第2章 选择结构程序设计 38
2.1两路分支与关系运算 38
2.1.1问题的引入 38
2.1.2关系运算符与关系表达式 40
2.1.3两路分支控制语句的标准格式 41
2.1.4空语句与短式if语句 43
2.1.5 if语句的应用 44
2.2复杂条件与逻辑运算 47
2.2.1数值表示逻辑值 47
2.2.2复杂条件 48
2.2.3逻辑运算符与逻辑表达式 48
2.2.4逻辑运算符的优先级 50
2.3 if嵌套与多路分支 50
2.3.1 if嵌套结构 51
2.3.2两层嵌套处理三路分支 51
2.3.3四路及多路分支 53
2.3.4用if嵌套分解复杂条件 56
2.3.5关于else与if匹配 57
2.4 switch语句 58
2.4.1 switch语句的标准格式 58
2.4.2 switch语句的应用 59
2.5条件运算 61
2.6选择结构程序设计 62
2.6.1选择结构只是程序的一部分 62
2.6.2选择结构的几种情况 63
2.6.3选择结构综合练习 63
2.7语法小结 66
2.7.1运算符 66
2.7.2语句 66
2.7.3等价if-else语句与等价条件 66
2.7.4分解两路分支 67
习题2 67
第3章 循环结构程序设计 69
3.1循环结构的3种语句 69
3.1.1 while语句 69
3.1.2 do-while语句 73
3.1.3 for语句 74
3.2用循环结构处理的几类问题 76
3.2.1累加问题 76
3.2.2累乘问题 80
3.2.3统计问题 81
3.2.4求最大值和最小值 83
3.2.5遍历问题 83
3.2.6无穷级数求和问题 86
3.2.7迭代问题 88
3.3多重循环 91
3.3.1二重循环 91
3.3.2三重循环 95
3.4循环结构程序设计 96
3.5语法小结 98
习题3 100
第4章 数组 101
4.1一维数组 101
4.1.1一维数组的定义 101
4.1.2一维数组的使用 102
4.1.3一维数组的初始化 102
4.1.4一维数组的应用 104
4.2二维数组 114
4.2.1二维数组的定义 114
4.2.2二维数组的使用 115
4.2.3二维数组的存储方式 115
4.2.4二维数组的初始化 116
4.2.5二维数组的应用 117
4.2.6高维数组 120
4.3字符数组 120
4.3.1字符串 121
4.3.2字符数组的定义 121
4.3.3字符数组的初始化 121
4.3.4字符数组的输入/输出 122
4.3.5处理字符串的库函数 123
4.4语法小结 126
习题4 127
第5章 函数 129
5.1函数的相关概念 129
5.1.1子程序与主程序 129
5.1.2 C语言中函数的作用 129
5.1.3函数的例子 130
5.1.4函数的分类 131
5.1.5函数的定义 131
5.1.6函数的调用 133
5.2自定义函数的编写 135
5.2.1从主函数中分离函数 135
5.2.2新编函数 140
5.3递归 142
5.3.1递归定义与递归公式 142
5.3.2递归函数与递归调用 142
5.3.3递归函数的应用 143
5.3.4递归的优缺点 146
5.4函数的两种参数 147
5.4.1变量作函数的形参 147
5.4.2数组作函数的形参 148
5.5使用专家编写的函数 152
5.5.1解线性代数方程组 152
5.5.2求行列式的值 155
5.5.3求非奇异方阵的逆矩阵 157
5.5.4使用包含文件 161
5.6语法小结 161
5.6.1关于return语句 161
5.6.2大型源程序的组织 162
5.6.3函数的声明 162
5.6.4局部变量与全局变量 163
5.6.5变量的存储类型 165
5.6.6修饰符extern与static对全局变量和函数的修饰作用 165
5.6.7程序员的函数库 166
习题5 166
第6章 指针 167
6.1内存管理 167
6.2指针常量与指针变量 167
6.2.1指针变量的定义 168
6.2.2指针变量的简单应用 169
6.3用指针处理数组 172
6.3.1数组的指针与数组元素的指针 172
6.3.2用指针表示数组元素 173
6.3.3用指针处理数组元素 173
6.3.4 指针变量指向数组 174
6.3.5用指向数组的指针变量处理数组 174
6.3.6指针变量作函数的形参 175
6.4用指针处理字符串 178
6.4.1字符指针代替字符数组名 178
6.4.2字符指针处理字符串的优势 178
6.4.3字符指针数组处理多个字符串 180
6.5用指针调用函数 180
6.6语法小结 184
习题6 184
第7章 结构 186
7.1结构类型 186
7.1.1结构类型的定义 186
7.1.2结构类型变量的定义 188
7.1.3结构类型变量的使用 190
7.1.4结构数组 193
7.1.5指向结构类型数据的指针 195
7.2链表简介 198
7.2.1两种重要的存储结构 198
7.2.2链表的结点 198
7.2.3建立一个简单的链表 199
7.3用指针处理链表 201
7.3.1分配结点空间 202
7.3.2建立链表的函数 203
7.3.3输出链表的函数 204
7.3.4删除结点的函数 205
7.3.5插入结点的函数 206
7.3.6调用上述函数的主函数 208
7.4语法小结 209
7.4.1关于结构类型 209
7.4.2几个运算符 209
习题7 210
第8章 文件 211
8.1文件的打开与关闭 211
8.1.1打开文件 212
8.1.2关闭文件 213
8.2对文件的操作 214
8.2.1字符的读/写函数 214
8.2.2格式读/写函数 215
8.2.3读/写数据块函数 217
习题8 220
附录A 语法补遗 222
A.1数据类型 222
A.2位运算 224
A.3编译预处理 226
A.4其他 227
附录B 关键字 229
附录C 运算符的优先级与结合性 231
附录D 常用库函数 232
附录E ASCII表 234
参考文献 235