第1章 引言 1
1.1 一个C语言程序 2
1.2 程序与程序设计语言 3
1.2.1 程序与指令 3
1.2.2 程序设计语言的功能 5
1.2.3 程序设计语言的语法 6
1.2.4 程序的编译与编程环境 10
1.3 C语言的发展历史与特点 10
1.4 实现问题求解的过程 12
习题1 14
第2章 用C语言编写程序 16
2.1 在屏幕上显示“Hello World”! 17
2.2 求华氏温度100°F对应的摄氏温度 18
2.2.1 程序解析 18
2.2.2 常量、变量和数据类型 19
2.2.3 算术运算和赋值运算 20
2.2.4 格式化输出函数printf() 21
2.3 计算分段函数 22
2.3.1 程序解析 22
2.3.2 关系运算 23
2.3.3 if-else语句 24
2.3.4 格式化输入函数scanf() 25
2.3.5 常用数学库函数 25
2.4 输出华氏-摄氏温度转换表 27
2.4.1 程序解析 27
2.4.2 for语句 29
2.4.3 指定次数的循环程序设计 30
2.5 生成乘方表与阶乘表 34
2.5.1 程序解析 34
2.5.2 结构化程序设计思想 36
习题2 38
第3章 分支结构 40
3.1 统计输入的一批字符中各类字符的数量 40
3.1.1 程序解析 40
3.1.2 字符类型 41
3.1.3 字符型数据的输入和输出 42
3.1.4 逻辑运算 43
3.1.5 else-if语句 44
3.2 查询自动售货机中商品的价格 46
3.2.1 程序解析 46
3.2.2 switch语句 48
3.3 分支结构程序设计 52
3.3.1 二分支结构和基本的if语句 52
3.3.2 多分支结构与嵌套的if语句和switch语句 55
习题3 56
第4章 循环结构 58
4.1 用格里高利公式求π的近似值 58
4.1.1 程序解析 58
4.1.2 while语句 59
4.1.3 统计输入的一批学生的平均成绩 61
4.2 统计一个整数的位数 62
4.2.1 程序解析 62
4.2.2 do-while语句 63
4.2.3 循环语句的选择 64
4.3 判断素数 64
4.3.1 程序解析 64
4.3.2 break语句和continue语句 65
4.4 求1!+2!+…+100! 67
4.4.1 程序解析 67
4.4.2 嵌套循环 68
4.5 循环结构程序设计 70
习题4 76
第5章 函数 78
5.1 计算圆柱体积 78
5.1.1 程序解析 78
5.1.2 函数的定义 79
5.1.3 函数的调用 82
5.2 使用函数编写程序 84
5.3 变量与函数 86
5.3.1 局部变量和全局变量 86
5.3.2 变量生命周期和静态局部变量 88
习题5 90
第6章 数据类型和表达式 92
6.1 数据的存储和基本数据类型 93
6.1.1 数据的存储 93
6.1.2 基本数据类型 94
6.2 常量和变量 96
6.2.1 常量 96
6.2.2 变量 99
6.3 数据的输入和输出 100
6.3.1 整型数据的输入和输出 100
6.3.2 实型数据的输入和输出 102
6.3.3 字符型数据的输入和输出 103
6.4 类型转换 104
6.4.1 自动类型转换 104
6.4.2 强制类型转换 105
6.5 表达式 106
6.5.1 算术表达式 106
6.5.2 赋值表达式 108
6.5.3 关系表达式 109
6.5.4 逻辑表达式 110
6.5.5 条件表达式 113
6.5.6 逗号表达式 114
6.5.7 位运算 114
6.5.8 其他运算 116
6.5.9 程序解析 117
习题6 118
第7章 数组 119
7.1 排序问题 119
7.1.1 程序解析 119
7.1.2 一维数组的定义和引用 121
7.1.3 一维数组的初始化 122
7.1.4 使用一维数组编程 122
7.2 找出矩阵中最大值所在的位置 128
7.2.1 程序解析 128
7.2.2 二维数组的定义和引用 129
7.2.3 二维数组的初始化 130
7.2.4 使用二维数组编程 131
7.3 进制转换 134
7.3.1 程序解析 134
7.3.2 一维字符数组 135
7.3.3 字符串 136
习题7 139
第8章 指针 141
8.1 寻找保险箱密码 141
8.1.1 程序解析 141
8.1.2 地址和指针 143
8.1.3 指针变量的定义 144
8.1.4 指针的基本运算 145
8.1.5 指针变量的初始化 149
8.2 狸猫换太子 150
8.2.1 程序解析 150
8.2.2 指针作为函数的参数 152
8.3 冒泡排序 155
8.3.1 程序解析 155
8.3.2 指针、数组和地址间的关系 157
8.3.3 数组名作为函数的参数 159
8.3.4 冒泡排序算法分析 162
8.4 加密问题 163
8.4.1 程序解析 163
8.4.2 字符串和字符指针 164
8.4.3 常用的字符串处理函数 166
8.5 任意个整数求和问题 170
8.5.1 程序解析 170
8.5.2 用指针实现内存动态分配 171
习题8 173
第9章 结构 175
9.1 构建手机通讯录 176
9.1.1 程序解析 176
9.1.2 结构的概念与定义 178
9.1.3 结构的嵌套定义 179
9.2 结构变量 180
9.2.1 结构变量的定义和初始化 180
9.2.2 结构变量的使用 182
9.3 结构数组 184
9.4 结构指针 186
9.4.1 结构指针的概念 186
9.4.2 结构指针作为函数参数 187
习题9 189
第10章 函数与程序结构 191
10.1 函数的组织 191
10.1.1 程序解析 191
10.1.2 函数的嵌套调用 194
10.1.3 文件包含 195
10.1.4 全局变量与程序文件模块 197
10.1.5 寄存器变量和外部变量 197
10.1.6 函数与程序文件模块 198
10.2 递归函数 198
10.2.1 程序解析 198
10.2.2 递归函数基本概念 199
10.2.3 递归程序设计 202
10.3 宏定义 204
10.3.1 宏基本定义 204
10.3.2 带参数的宏定义 206
10.4 编译预处理 207
习题10 208
第11章 指针进阶 210
11.1 布袋中的彩色球 210
11.1.1 程序解析 210
11.1.2 指针数组的概念 211
11.1.3 指向指针的指针 213
11.1.4 用指针数组处理多个字符串 216
11.1.5 命令行参数 220
11.2 解密藏头诗 223
11.2.1 程序解析 223
11.2.2 指针作为函数的返回值 224
11.2.3 指向函数的指针 225
11.3 学生信息管理的链表实现 227
11.3.1 程序解析 227
11.3.2 链表的概念 231
11.3.3 单向链表的常用操作 232
习题11 236
第12章 文件 238
12.1 将短句“Hello World!”写入文件 238
12.1.1 程序解析 238
12.1.2 文件的概念 239
12.1.3 文本文件和二进制文件 240
12.1.4 缓冲文件系统 240
12.1.5 文件结构与文件类型指针 241
12.2 读取学生成绩文件 243
12.2.1 程序解析 243
12.2.2 打开文件 244
12.2.3 关闭文件 246
12.3 文件复制 247
12.3.1 程序解析 247
12.3.2 字符方式文件读写函数fgetc()和fputc() 248
12.3.3 字符串方式文件读写函数fgets()和fputs() 250
12.3.4 格式化文件读写函数fscanf()和fprintf() 251
12.3.5 数据块读写函数fread()和fwrite() 252
12.3.6 其他相关函数 253
12.4 文件综合应用:个人小金库的管理 255
12.4.1 顺序文件和随机文件 255
12.4.2 个人小金库的管理 255
习题12 258
附录1 C语言基本语法 259
附录2 ASCII码集 283
参考文献 285