第1章 软件开发综述及C程序初步 1
1.1 软件开发综述 1
1.1.1 计算机工作原理 1
1.1.2 计算机语言 1
1.1.3 软件工程 4
1.1.4 国产软件的现状 5
1.2 C语言程序简介 6
1.2.1 C语言出现的历史背景 6
1.2.2 C语言程序示例 6
1.2.3 C语言中的函数 7
1.2.4 C语言的元素 7
1.2.5 程序的输入、编辑和调试 8
习题和实验 11
第2章 C语言的数据 14
2.1 数据类型 14
2.2 数据的存储 15
2.2.1 字符数据 15
2.2.2 数值数据 16
2.3 数据在程序中的表示 17
2.3.1 常量 17
2.3.2 变量 18
2.4 整型数据 19
2.4.1 整型常数 19
2.4.2 整型变量 20
2.4.3 整型数据的存储与溢出 20
2.5 实型数据 22
2.5.1 实型常量 22
2.5.2 实型变量 22
2.5.3 实型数据的存储和舍入误差 22
2.6 字符型数据 23
2.6.1 字符常量 23
2.6.2 字符变量 24
2.6.3 字符串常量 25
习题和实验 25
第3章 运算符和表达式 28
3.1 算术运算符及算术表达式 28
3.1.1 算术运算符 28
3.1.2 算术表达式 29
3.1.3 数据类型转换 30
3.2 运算符的优先级与结合性 31
3.3 赋值运算符和赋值表达式 32
3.3.1 赋值运算符 32
3.3.2 类型转换 32
3.3.3 复合的赋值运算符 33
3.4 逗号运算符和逗号表达式 34
3.5 位运算 35
习题和实验 36
第4章 顺序结构程序设计 36
4.1 C语句概述 40
4.2 格式输出函数 41
4.3 格式输入函数 43
4.4 其它输入、输出函数 45
4.5 算法及其表示方法 45
4.5.1 算法的五大特性 46
4.5.2 算法的表示方法 46
4.6 顺序结构程序设计举例 48
习题和实验 48
第5章 选择结构程序设计 48
5.1 关系运算符和关系表达式 53
5.1.1 关系运算符及其优先顺序 53
5.1.2 关系表达式 53
5.2 逻辑运算符和逻辑表达式 54
5.2.1 逻辑运算符及其优先顺序 54
5.2.2 逻辑表达式 54
5.3 if语句 56
5.4 条件运算符和条件运算表达式 59
5.5 switch语句 60
习题和实验 61
第6章 循环结构程序设计 61
6.1 循环结构 65
6.2 while语句 65
6.3 do-while语句 67
6.4 for语句 68
6.5 break语句和continue语句 70
习题和实验 71
第7章 循环结构程序应用 71
7.1 循环嵌套 75
7.2 其它应用例子 77
习题和实验 80
第8章 模块化程序设计 83
8.1 模块化程序设计 83
8.2 自定义函数 84
8.2.1 函数定义的一般形式 84
8.2.2 函数的参数和返回值 85
8.2.3 函数的调用 85
8.2.4 定义函数的位置 86
8.2.5 函数之间的通讯 86
8.3 函数应用举例 86
8.4 函数的嵌套和递归调用 88
习题和实验 91
第9章 变量的存储属性和预编译命令 91
9.1 变量的存储属性 93
9.1.1 自动(auto)变量 93
9.1.2 寄存器(register)变量 95
9.1.3 静态(static)变量 95
9.1.4 用extern声明外部变量 97
9.2 编译预处理 98
9.2.1 宏替换 98
9.2.2 文件包含处理 100
习题和实验 101
第10章 数组 104
10.1 数组 104
10.2 一维数组 104
10.2.1 一维数组的定义 104
10.2.2 一维数组的引用 105
10.2.3 一维数组的初始化 106
10.3 排序与查找 107
10.3.1 排序 107
10.3.2 查找 112
习题和实验 113
第11章 二维数组和字符数组 113
11.1 二维数组 117
11.1.1 二维数组的定义 117
11.1.2 二维数组元素的引用 117
11.1.3 二维数组元素的初始化 118
11.1.4 二维数组应用举例 118
11.2 字符数组与字符串 122
11.2.1 字符数组与字符串的相关概念 122
11.2.2 字符数组与字符串的输入和输出 123
11.2.3 字符串函数 124
11.3 数组与函数 125
习题和实验 126
第12章 数组趣味程序 130
12.1 井字棋游戏 130
12.1.1 分析设计 130
12.1.2 编制程序 131
12.2 数字螺旋方阵 134
12.3 猴子选大王 136
习题和实验 138
第13章 指针 142
13.1 地址和指针的概念 142
13.2 指针变量 143
13.2.1 定义方式 143
13.2.2 指针变量的引用方式 143
13.2.3 指向指针的指针 145
13.3 指针与函数 145
13.3.1 用指针当函数参数 145
13.3.2 指针函数 146
13.3.3 指向函数的指针 147
习题和实验 148
第14章 指针与数组 152
14.1 一维数组与指针 152
14.2 二维数组与指针 154
14.2.1 指向二维数组元素的指针变量 154
14.2.2 指向二维数组首元素地址的指针变量 154
14.2.3 指向二维数组中某个一维数组的指针变量 155
14.3 字符串与指针 156
14.4 指针数组 158
习题和实验 159
第15章 结构体与共用体 164
15.1 结构体 164
15.2 结构体数组 166
15.3 指向结构体类型数据的指针 167
15.4 共用体 169
15.5 用typedef定义类型 171
习题和实验 173
第16章 链表 175
16.1 动态存储分配 175
16.2 链表 177
16.2.1 利用结构体变量构成链表 177
16.2.2 访问链表 178
16.2.3 插入和删除结点 180
习题和实验 181
第17章 文件 185
17.1 文件概述 185
17.2 文件类型指针 186
17.3 与文件操作相关的函数 186
17.3.1 打开文件函数 186
17.3.2 关闭文件函数 187
17.3.3 读写文件中字符的函数 187
17.3.4 读写文件中字符串的函数 189
17.3.5 读写文件中数据块的函数 190
17.3.6 对文件格式化读写的函数 191
17.3.7 随机读写文件 192
17.3.8 检测文件的函数 193
习题和实验 194
第18章 编制小型比赛选手计分系统 194
18.1 需求分析 197
18.2 递增式开发 198
18.2.1 设计主控模块 199
18.2.2 设计显示用户菜单的模块 200
18.2.3 设计其它模块 200
习题和实验 205
第19章 二级考试上机试题举例 205
19.1 程序填空题 206
19.2 程序修改题 209
19.3 程序设计题 211
第20章 复杂数据类型应用举例 211
20.1 线性表的实现 215
20.1.1 顺序结构线性表的程序实现 216
20.1.2 线性链表的程序实现 221
20.2 广义表的实现 225
20.3 二叉树的实现 230
附录 232
附录1 部分习题和实验的答案及提示 232
附录2 编制C语言程序时应注意的问题 249
附录3 C语言常用系统函数 258