第1章 程序设计与算法 1
1.1 计算机语言和程序 1
1.1.1 计算机语言的概念 1
1.1.2 C语言的特点 1
1.1.3 程序的概念 2
1.2 算法 2
1.2.1 算法的概念 2
1.2.2 算法的特性 3
1.2.3 算法的设计 3
1.2.4 算法的描述方法 4
1.3.2 数学模型 6
1.3.1 概述 6
1.3 数据结构 6
1.3.3 数据结构的概念 7
1.4 程序设计 8
1.4.1 程序设计的概念 8
1.4.2 养成良好的编程习惯 8
1.4.3 程序设计概述 8
1.4.4 程序设计的基本过程和原则 8
1.5 C语言的程序结构 9
1.5.1 基本程序结构 9
1.5.2 源程序的基本结构特点与书写规则 12
1.5.3 函数库和链接 12
1.5.4 开发一个C程序的步骤 13
习题 14
2.1 基本字符、标识符和关键字 15
2.1.1 基本字符 15
第2章 数据类型、运算符与表达式 15
2.1.2 名字(标识符)的构成 16
2.1.3 关键字 16
2.2 数据类型与变量 17
2.2.1 数据类型 17
2.2.2 变量 18
2.3 基本类型与数据表示 19
2.3.1 整数类型和整数的表示 19
2.3.2 实数类型和实数的表示 21
2.3.3 字符类型和字符的表示 22
2.4 运算符与表达式 24
2.3.4 数据的外部表示及内部表示 24
2.4.1 算术运算 25
2.4.2 关系运算与逻辑运算 28
2.4.3 赋值运算 31
2.4.4 逗号运算 32
2.4.5 条件运算 33
2.5 计算和类型 34
2.5.1 类型对计算的限制 34
2.5.2 混合类型计算和类型转换 35
2.5.3 强制类型转换 36
习题 37
3.2.1 scanf()函数 39
3.2 数据的输入/输出 39
3.1 程序的三种基本结构 39
第3章 程序控制语句 39
3.2.2 printf()函数 43
3.2.3 getchar()函数与putchar()函数 46
3.2.4 数据输入/输出程序应用 47
3.3 条件控制语句 48
3.3.1 if语句 48
3.3.2 switch语句 54
3.3.3 条件控制语句程序应用 56
3.4 循环控制语句 58
3.4.1 while语句 58
3.4.2 do...while语句 60
3.4.3 for语句 61
3.4.4 break与continue语句 65
3.4.5 程序控制语句程序应用 66
习题 69
第4章 数组 74
4.1 一维数组 75
4.1.1 一维数组的说明 75
4.1.2 一维数组元素的引用 76
4.1.3 一维数组元素的初始化 79
4.1.4 一维数组的应用 80
4.2 二维数组 85
4.2.1 二维数组的说明 85
4.2.2 二维数组元素的引用 87
4.2.3 二维数组的初始化 88
4.2.4 二维数组的应用 90
4.3 字符数组 92
4.3.1 字符数组的说明和引用 93
4.3.2 字符数组的输入/输出 93
4.3.3 字符串处理函数与字符串数组 95
43.4 字符数组应用 97
4.4 多维数组 98
4.5 数组应用程序举例 99
习题 103
第5章 函数 105
5.1 函数的分类 105
5.1.1 库函数和用户自定义函数 105
5.2 函数的定义 106
5.1.3 无参函数和有参函数 106
5.1.2 有返回值函数和无返回值函数 106
5.2.1 无参函数定义的一般形式 107
5.2.2 有参函数定义的一般形式 107
5.2.3 函数说明与返回值 108
5.3 函数的作用域规则 113
5.3.1 局部变量 113
5.3.2 全局变量 114
5.3.3 动态存储变量 115
5.3.4 静态存储变量 116
5.4 函数的参数与调用 117
5.4.1 形式参数与实际参数 117
5.4.2 赋值调用与引用调用 118
5.4.3 函数的调用形式 119
5.4.5 数组作为函数参数 120
5.4.4 函数的值 120
5.4.6 用全局变量实现参数互传 124
5.4.7 函数的嵌套调用 125
5.5 函数的递归调用 126
5.5.1 递归调用 126
5.5.2 递归说明 128
5.5.3 递归应用举例 128
5.6 函数库和文件 129
5.6.1 程序文件的大小 129
5.7.1 C语言的预处理程序 130
5.7.2 #define 130
5.7 C语言的预处理程序与注释 130
5.6.2 分类组织文件 130
5.7.3 #include 132
5.7.4 注释 132
5.8 函数程序应用举例 133
习题 136
第6章 指针 138
6.1 指针与指针变量 138
6.1.1 内存、变量地址与指针 138
6.1.2 指针变量的定义与引用 141
6.1.3 指针变量的运算 143
6.1.4 指针变量作函数的参数 146
6.2 指针与数组 147
6.2.1 指针与一维数组 147
6.2.3 指针与二维数组 150
6.2.2 指针变量在数组中的几种运算方式 150
6.2.4 数组指针作函数的参数 153
6.2.5 指针与字符数组 156
6.3 指针的地址分配 157
6.4 指针数组 158
6.4.1 指针数组的定义 158
6.4.2 指针数组的应用 158
6.5 指向指针的指针 163
6.5.1 引入指向指针的指针 163
6.5.2 多级指针 163
6.6 main()函数的参数 166
6.6.1 带参数的main()函数 166
6.6.2 main()函数的调用 167
6.7 指针程序应用举例 169
习题 171
第7章 结构体与共用体 174
7.1 结构体类型变量的定义和引用 174
7.1.1 结构体类型变量的定义 176
7.1.2 结构体类型变量的引用 176
7.1.3 结构体类型变量的初始化 177
7.2 结构体数组的定义和引用 179
7.2.1 结构体数组的定义 179
7.2.2 结构体数组的引用 179
7.3 结构体指针的定义和引用 185
7.3.1 指向结构体类型变量的使用 185
7.3.2 指向结构体类型数组的指针的使用 186
7.4 链表的概念及简单应用 187
7.4.1 单链表 188
7.4.2 单链表的删除与插入 190
7.5 共用体 197
7.5.1 共用体的定义 197
7.5.2 共用体变量的引用 198
7.6 结构体和共用体应用举例 201
习题 203
第8章 输入输出和文件系统 206
8.1 文件及其分类 206
8.1.1 ANSI C的缓冲文件系统 206
8.1.2 流式文件 207
8.1.3 文件分类与读写概念 207
8.2 缓冲文件系统 207
8.2.1 文件的打开与关闭 207
8.2.2 文件的读写 212
8.2.3 随机读写文件 227
8.3 非缓冲文件系统 230
8.4 文件系统应用举例 231
习题 234
第9章 程序设计例解 236
9.1 过滤问题例解 236
9.2 寻找最长子串例解 238
9.3 统计问题例解 240
9.4 链表排序例解 242
9.5 寻找最佳解问题例解 245
9.6 寻找最少解决问题步骤例解 247
9.7 寻找交换最少次数问题例解 251
A.1 ASCII表(0~127基本) 255
附录A ASCII表 255
A.2 ASCII表(128~255扩展) 256
附录B Turbo C(V2.0)错误信息 257
B.1 编译错误信息 257
B.1.1 致命错误英汉对照及处理方法 257
B.1.2 一般错误信息英汉对照及处理方法 257
B.2 浮点连接错误 262
附录C 查找、排除编译和运行中的错误 264
C.1 查找、排除程序编译中的错误(主要是语法错误) 264
C.1.1 查找程序编译中的错误 264
C.1.2 排除程序中的语法错误 264
C.1.4 如何看待编译警告 265
C.2 查找、排除程序运行中发现的错误(debugging) 265
C.1.3 排除程序中的上下文关系错误 265
C.2.1 违规型的错误 266
C.2.2 逻辑型的错误 266
C.3 查找连接错误 266
附录D 运算符表 268
附录E 常用函数表 270
E.1 数学函数 270
E.2 字符函数和字符串函数 271
E.3 输入/输出函数 273
E.3.1 printf()函数 273
E.3.2 scanf()函数 273
E.3.3 其他输入/输出函数 274
E.4 时间函数 277