第1章 程序设计基础 1
1.1 程序与程序设计语言 1
1.1.1 指令与程序 1
1.1.2 程序设计与程序设计语言 1
1.1.3 语言处理程序 3
1.2 算法 4
1.2.1 算法的概念 4
1.2.2 算法设计举例 5
1.2.3 算法的表示 7
1.3 C程序结构简介 10
1.3.1 简单C程序介绍 10
1.3.2 C源程序概貌 12
1.3.3 程序设计风格 13
1.4 实践活动 15
习题 16
第2章 C语言入门 19
2.1 常量、变量与数据类型 19
2.1.1 标识符 19
2.1.2 常量和变量 20
2.1.3 数据类型 21
2.2 变量声明与初始化 24
2.2.1 变量的声明 24
2.2.2 变量的初始化 24
2.3 运算符与表达式 25
2.3.1 算术运算符和算术表达式 25
2.3.2 运算符的优先级和结合性 26
2.3.3 赋值运算符和赋值表达式 26
2.3.4 数据类型转换 27
2.3.5 逗号运算符和逗号表达式 29
2.4 简单输入输出 29
2.4.1 数据的输入输出及在C语言中的实现 29
2.4.2 常用数据输入输出函数 29
2.5 实践活动 31
习题 31
第3章 基本控制结构 34
3.1 C语句的分类 34
3.2 顺序结构程序设计 35
3.2.1 赋值语句 35
3.2.2 顺序程序举例 35
3.3 选择结构程序设计 37
3.3.1 关系运算符与关系表达式 37
3.3.2 逻辑运算符和逻辑表达式 37
3.3.3 选择结构的实现 38
3.4 循环结构程序设计 46
3.4.1 while语句 46
3.4.2 do-while语句 47
3.4.3 for语句 47
3.4.4 三种循环语句的选用 50
3.4.5 循环结构的嵌套 50
3.4.6 break语句与continue语句 51
3.5 使用库和函数 52
3.5.1 输入输出的概念 52
3.5.2 输入输出函数 52
3.5.3 字符输入输出函数 52
3.5.4 格式输入输出函数 53
3.5.5 其他库函数简介 57
3.6 典型例题 57
3.7 实践活动 61
习题 62
第4章 函数 70
4.1 概述 70
4.1.1 函数的定义 71
4.1.2 函数的返回及返回值 72
4.1.3 函数的声明和调用 75
4.1.4 形式参数与实在参数 77
4.2 带自定义函数的程序设计 78
4.3 变量的作用域与存储类别 80
4.3.1 局部变量和全局变量 80
4.3.2 变量的生存期 82
4.4 典型例题 86
4.5 实践活动 90
习题 92
第5章 数组 97
5.1 一维数组 97
5.1.1 一维数组的声明与引用 97
5.1.2 一维数组的初始化 98
5.1.3 一维数组应用举例 99
5.2 二维数组 101
5.2.1 二维数组的声明与引用 101
5.2.2 二维数组元素的存储方式 102
5.2.3 二维数组元素的初始化 102
5.2.4 二维数组应用举例 103
5.3 字符数组与字符串 105
5.3.1 用一维字符数组存放字符串 105
5.3.2 常用字符串处理函数 107
5.3.3 字符串应用举例 111
5.4 典型算法 112
5.5 实践活动 118
习题 119
第6章 指针 124
6.1 指针的基本概念 124
6.1.1 地址与指针 124
6.1.2 指针变量的声明与引用 126
6.1.3 指针变量的运算 129
6.1.4 指针变量作为函数的参数 130
6.2 使用指针访问一维数组的元素 133
6.2.1 一维数组的指针 133
6.2.2 指向一维数组的指针变量 134
6.2.3 通过指针变量引用一维数组元素举例 135
6.2.4 一维数组名作为函数的参数 137
6.3 用指针处理字符串 140
6.3.1 字符串的表示 140
6.3.2 基于指针的字符串操作 145
6.4 典型例题 148
6.5 实践活动 153
习题 154
第7章 函数进阶和结构化编程 163
7.1 结构化编程 163
7.1.1 自顶向下分析问题 163
7.1.2 模块化设计 164
7.1.3 结构化编码 164
7.2 函数的嵌套调用 166
7.3 递推 169
7.3.1 递推的一般概念 169
7.3.2 递推数列 172
7.3.3 递推算法的程序实现 172
7.4 递归 173
7.4.1 递归函数的执行过程 174
7.4.2 递归问题求解 176
7.5 编译预处理 182
7.5.1 预处理的概念 182
7.5.2 宏定义 182
7.5.3 文件包含 187
7.6 实践活动 189
习题 190
第8章 结构与联合 194
8.1 结构 194
8.1.1 结构类型 194
8.1.2 结构类型的定义 195
8.1.3 结构变量 196
8.2 结构数组 200
8.2.1 结构数组的声明 200
8.2.2 结构数组的初始化 201
8.2.3 结构数组元素的引用 202
8.3 结构指针 203
8.3.1 指向结构变量的指针 203
8.3.2 指向结构数组的指针 206
8.3.3 结构变量做函数参数 207
8.4 结构数组应用举例 209
8.5 联合 215
8.5.1 联合的定义、联合变量的声明及引用 215
8.5.2 使用联合变量应注意的问题 218
8.6 枚举 220
8.6.1 枚举类型的概念及其定义 220
8.6.2 枚举变量的使用 221
8.7 用typedef为类型定义别名 223
8.8 实践活动 224
习题 225
第9章 指针进阶 228
9.1 指针数组 228
9.1.1 指针数组的概念 228
9.1.2 指向指针的指针变量 229
9.1.3 指针数组应用举例 231
9.2 二维数组的指针和指向二维数组的指针变量 233
9.2.1 二维数组的行地址和列地址 233
9.2.2 通过地址引用二维数组的元素 234
9.2.3 指向二维数组的指针变量 235
9.2.4 二维数组名作为函数参数 237
9.3 函数的指针与指向函数的指针变量 238
9.3.1 指向函数的指针变量的声明 238
9.3.2 用指向函数的指针变量调用函数 238
9.4 返回值为指针的函数 239
9.5 链表 240
9.5.1 链表的概念 241
9.5.2 动态内存分配 243
9.5.3 单向链表的常用操作 244
9.6 典型例题 252
9.7 实践活动 255
习题 256
第10章 文件 263
10.1 文件的基本概念 263
10.2 文件类型指针 264
10.3 文件的基本操作 265
10.3.1 文件的打开 265
10.3.2 文件的关闭 266
10.3.3 文件的读写 267
10.4 典型例题 274
10.5 文件定位 279
10.5.1 rewind函数 279
10.5.2 fseek函数 280
习题 283
附录A 常用字符与ASCII代码对照表 287
附录B 关键字表 288
附录C 运算符及其优先级 289
附录D 常用库函数 291
参考文献 297