第0章 绪论 1
0.1 程序设计语言的发展 1
0.1.1 汇编语言 1
0.1.2 高级语言 2
0.2 C语言 3
0.2.1 C语言的发展史 3
0.2.2 C语言的特点 5
0.2.3 C语言的应用 6
0.2.4 C语言的发展 7
0.3 如何学习C语言 7
0.4 C语言程序上机操作步骤 8
0.4.1 操作步骤 8
0.4.2 C语言程序上机操作环境 9
习题 13
第1章 程序设计 14
1.1 程序设计的基本概念 14
1.2 数据结构 17
1.3 算法 19
1.3.1 算法的概念 19
1.3.2 算法的特性 21
1.3.3 算法的描述 22
1.4 程序设计方法 24
1.4.1 结构化程序设计 24
1.4.2 模块化设计 27
习题 30
第2章 数据类型、运算符与表达式 31
2.1 C语言的字符集和保留字 31
2.1.1 C语言的字符集 31
2.1.2 保留字和词法约定 32
2.2 基本的数据类型 33
2.2.1 C语言的数据类型 33
2.2.2 C语言的基本数据类型 34
2.3 常量 35
2.3.1 常量和符号常量 35
2.3.2 整型常量 36
2.3.3 实型常量 37
2.3.4 字符常量 37
2.3.5 字符串常量 38
2.4 变量 39
2.4.1 整型变量及其在内存中的存储形式 39
2.4.2 实型变量及其在内存中的存储形式 41
2.4.3 字符型变量及其在内存中的存储形式 42
2.4.4 变量的初始化 43
2.5 基本运算符和表达式 43
2.5.1 算术运算符和算术表达式 44
2.5.2 类型转换 47
2.5.3 赋值运算符和赋值表达式 49
2.5.4 逗号运算符和逗号表达式 51
习题 51
第3章 简单的C语言语句——顺序程序设计 54
3.1 C语言语句 54
3.2 赋值语句 56
3.3 格式输出与输入 56
3.3.1 格式输出:printf函数 56
3.3.2 格式输入 62
3.4 字符输入/输出函数 64
3.4.1 字符输出函数 64
3.4.2 字符输入函数 64
习题 65
第4章 选择结构 68
4.1 关系运算 68
4.1.1 关系运算符 68
4.1.2 关系表达式 69
4.2 逻辑运算 69
4.2.1 逻辑运算符 70
4.2.2 逻辑表达式 70
4.3 if语句 71
4.3.1 if语句的三种形式 72
4.3.2 if语句的嵌套 76
4.4 switch语句 77
4.5 条件运算符 80
习题 81
第5章 循环结构 84
5.1 while语句 84
5.2 do...while语句 86
5.3 for语句 88
5.4 continue语句和break语句 90
5.4.1 continue语句 90
5.4.2 break语句 91
5.5 循环的嵌套 92
5.6 goto语句 94
5.7 常用的算法 95
5.7.1 列举法 95
5.7.2 递推法 96
习题 96
第6章 数组 100
6.1 一维数组的定义和引用 100
6.1.1 一维数组的定义 100
6.1.2 一维数组的引用 100
6.1.3 一维数组的初始化 101
6.2 二维数组的定义和引用 102
6.2.1 二维数组的定义 102
6.2.2 二维数组的引用 103
6.2.3 二维数组的初始化 103
6.3 字符数组 105
6.3.1 字符数组的定义 105
6.3.2 字符数组的初始化 106
6.3.3 字符数组的输入、输出 107
6.4 字符串处理函数 108
6.5 常用算法 110
6.5.1 排序 110
6.5.2 数组中元素的插入和删除 113
习题 114
第7章 函数 117
7.1 函数的定义 117
7.1.1 C程序的模块化结构 117
7.1.2 函数定义 119
7.2 函数间的数据传送 120
7.2.1 形参与实参 120
7.2.2 函数的返回值 122
7.2.3 void函数 123
7.3 函数调用 123
7.3.1 函数调用的一般形式 123
7.3.2 函数原型 124
7.3.3 数组作为函数参数 125
7.3.4 嵌套调用 129
7.3.5 递归调用 132
7.4 变量的作用范围 134
7.4.1 局部变量 135
7.4.2 全局变量 136
7.5 变量的存储类别 138
7.5.1 自动变量 138
7.5.2 静态变量 139
7.5.3 寄存器变量 140
7.5.4 外部变量 141
7.6 内部函数和外部函数 142
7.6.1 内部函数 142
7.6.2 外部函数 142
习题 143
第8章 预处理 146
8.1 宏定义 146
8.1.1 不带参数的宏定义 146
8.1.2 带参数的宏定义 148
8.2 文件包含 149
8.3 条件编译 150
8.4 常见错误分析 152
习题 152
第9章 指针 154
9.1 地址和指针的概念 154
9.2 指向变量的指针变量 156
9.2.1 指针变量的定义 156
9.2.2 指针变量的引用 157
9.2.3 指针变量作函数参数 158
9.3 指针与一维数组 160
9.3.1 指向数组元素的指针变量的定义和引用 160
9.3.2 通过指针引用数组元素 161
9.3.3 数组名与指针变量作函数参数 163
9.4 指针与字符串 168
9.4.1 指向字符串的指针变量 169
9.4.2 字符串指针作函数参数 170
9.4.3 字符串指针与字符数组的区别 171
9.5 返回指针值的函数 171
9.6 指针数组 173
9.7 指针与多维数组 174
9.7.1 指向二维数组的元素的指针变量的定义和使用 174
9.7.2 指向二维数组中一维数组的指针变量的定义和使用 177
9.8 命令行参数 178
习题 179
第10章 结构体与共用体 182
10.1 结构体类型的定义 182
10.1.1 结构体类型定义的一般形式 182
10.1.2 结构体类型定义的注意事项 183
10.2 结构体类型变量 184
10.2.1 结构体变量的定义 184
10.2.2 结构体变量的初始化 185
10.2.3 结构体变量的引用 185
10.3 结构体数组 186
10.3.1 结构体数组的定义 186
10.3.2 结构体数组的初始化 187
10.3.3 结构体数组的引用 187
10.4 指向结构体变量的指针变量 188
10.4.1 指向结构体变量的指针变量的定义 188
10.4.2 指向结构体变量的指针变量的引用 189
10.5 指向结构体数组的指针变量 189
10.6 结构体变量和指向结构体的指针作函数参数 190
10.7 用指针处理链表 192
10.7.1 链表的组成 192
10.7.2 用结构体类型描述节点 193
10.7.3 动态申请和释放内存单元的函数 193
10.7.4 链表建立操作 194
10.7.5 链表插入操作 196
10.7.6 链表删除操作 200
10.8 共用体 203
10.8.1 共用体的概念 203
10.8.2 共用体变量的定义和引用 203
10.8.3 共用体变量与结构体变量的区别 204
10.9 枚举类型 205
习题 206
第11章 文件 208
11.1 文件概述 208
11.2 文件的打开与关闭 209
11.2.1 文件类型指针 209
11.2.2 文件的打开 209
11.2.3 文件的关闭 212
11.3 文件的读写 212
11.3.1 函数fputc()、函数fgetc() 212
11.3.2 函数fgets()、函数fputs() 214
11.3.3 函数fprintf()、函数fscanf() 216
11.3.4 函数fwrite()、函数fread() 217
11.4 文件的其他常用函数 219
11.4.1 函数rewind() 219
11.4.2 函数fseek() 219
11.4.3 函数ftell() 220
11.4.4 函数feof() 220
习题 221
参考文献 223