第1章 程序设计基础 1
1.1 程序设计语言简介 1
1.1.1 什么是程序设计语言 1
1.1.2 C语言简介 2
1.1.3 C语言的功能特点 3
1.2 算法及其描述方法 3
1.2.1 算法的概念 3
1.2.2 算法的特征 5
1.2.3 算法的描述方法 5
1.3 简单C程序介绍 10
1.3.1 C程序示例 10
1.3.2 C程序的一般组成 12
1.4 Visual C++6.0简介 13
1.4.1 编辑源程序 13
1.4.2 编译(Compile) 14
1.4.3 连接(Build) 16
1.4.4 执行(Execute) 17
1.4.5 退出 17
1.5 本章小结 18
1.6 习题 18
第2章 数据类型、运算符与表达式 20
2.1 数据类型 20
2.2 变量 20
2.2.1 变量定义 21
2.2.2 整型变量 22
2.2.3 实型变量 24
2.2.4 字符变量 25
2.3 常量 27
2.3.1 整型常量 27
2.3.2 实型常量 28
2.3.3 字符常量 29
2.3.4 字符串常量 30
2.3.5 符号常量 31
2.4 常用运算符及表达式 32
2.4.1 C运算符简介 32
2.4.2 基本算术运算符及表达式 32
2.4.3 关系运算符 34
2.4.4 逻辑运算符与逻辑表达式 35
2.4.5 赋值运算符 36
2.4.6 自增、自减运算符 38
2.4.7 强制类型转换运算符 39
2.4.8 逗号运算符 40
2.5 各种类型数据之间的混合运算 41
2.6 本章小结 41
2.7 习题 42
第3章 简单的C程序设计 44
3.1 C语言的语句 44
3.1.1 C语言的语句 44
3.1.2 变量说明语句 45
3.2 表达式语句 45
3.2.1 赋值语句 46
3.2.2 函数调用语句 46
3.2.3 空语句 46
3.3 复合语句 47
3.4 基本输入/输出操作的实现 47
3.4.1 字符输入/输出 48
3.4.2 格式输入/输出 50
3.5 本章小结 58
3.6 习题 58
第4章 程序的控制结构 62
4.1 顺序结构 62
4.1.1 顺序结构的流程图表示 62
4.1.2 应用程序举例 62
4.2 选择结构 63
4.2.1 应用场合 63
4.2.2 if语句 63
4.2.3 if语句的嵌套 69
4.2.4 switch语句 70
4.3 循环结构 74
4.3.1 应用场合 74
4.3.2 循环语句 74
4.3.3 单重循环应用举例 81
4.3.4 嵌套循环及其应用举例 84
4.4 流程的转移控制 88
4.4.1 goto语句 88
4.4.2 break与continue语句 89
4.4.3 函数exit() 90
4.4.4 应用程序举例 90
4.5 本章小结 91
4.6 习题 92
第5章 函数 98
5.1 模块化程序设计方法简介 98
5.1.1 模块与函数 98
5.1.2 模块设计三个原则 101
5.2 函数的定义与使用 101
5.2.1 函数的分类 101
5.2.2 函数的定义 103
5.2.3 函数的调用、参数和返回值 104
5.2.4 函数main()的特殊性 109
5.3 变量的作用域和存储类型 109
5.3.1 变量的作用域 109
5.3.2 变量的存储类别 111
5.4 递归 115
5.4.1 递归问题的提出 115
5.4.2 递归函数 116
5.5 预处理指令 120
5.5.1 #include 121
5.5.2 #define和#undef 122
5.5.3 条件编译 124
5.6 应用实例 126
5.7 本章小结 129
5.8 习题 129
第6章 数组 136
6.1 数组类型的应用场合 136
6.2 一维数组 136
6.2.1 一维数组的定义 136
6.2.2 一维数组的引用 137
6.2.3 一维数组的存储 138
6.2.4 一维数组的初始化 138
6.2.5 程序实例 138
6.3 二维数组 143
6.3.1 二维数组的说明 143
6.3.2 二维数组的引用 143
6.3.3 二维数组的存储 144
6.3.4 二维数组的初始化 144
6.3.5 程序实例 145
6.4 数组作函数参数 145
6.4.1 数组元素作函数参数 146
6.4.2 一维数组名作函数参数 146
6.4.3 二维数组名作为函数参数 146
6.4.4 程序实例 146
6.5 字符数组与字符串 150
6.5.1 字符数组 150
6.5.2 字符串 151
6.5.3 字符串的输入/输出 152
6.5.4 字符串处理函数 153
6.5.5 程序实例 154
6.6 本章小结 156
6.7 习题 156
第7章 指针 162
7.1 指针概述 162
7.1.1 指针的概念 162
7.1.2 指针变量的定义和赋值 163
7.1.3 指针变量的初始化 165
7.1.4 指针运算 167
7.1.5 为什么引入指针的概念 168
7.2 指针变量作为函数参数 169
7.2.1 参数的对应 169
7.2.2 为什么使用指针变量作为函数参数 170
7.2.3 字符指针作为函数参数 172
7.3 指针和数组 173
7.3.1 一维数组的地址和指针 173
7.3.2 二维数组的地址和指针 175
7.3.3 数组名作函数参数 177
7.4 指针数组 183
7.4.1 指针数组的定义 183
7.4.2 字符串数组 184
7.5 指向指针的指针 185
7.6 指针数组作main函数的形参 186
7.7 动态数组的实现 187
7.7.1 数据在内存的存储分配 187
7.7.2 动态内存分配函数 187
7.7.3 一维动态数组的实现 189
7.7.4 二维动态数组的实现 190
7.8 返回指针值的函数 191
7.9 函数指针 193
7.9.1 指向函数的指针变量 193
7.9.2 用函数指针实现函数的调用 193
7.9.3 用指向函数的指针变量做函数参数 194
7.10 本章小结 194
7.11 习题 195
第8章 结构体与共用体 199
8.1 问题的提出 199
8.2 结构体类型与结构体变量 199
8.2.1 结构体类型的声明 199
8.2.2 结构体变量的定义 200
8.2.3 关键字typedef的用法 202
8.2.4 结构体变量的引用和初始化 204
8.2.5 指向结构体变量的指针 206
8.3 结构体数组 208
8.3.1 结构体数组的定义 208
8.3.2 结构体数组的应用实例 209
8.3.3 结构体数组与指针 212
8.4 链表 213
8.4.1 问题的提出 213
8.4.2 链表的定义 214
8.4.3 链表的特点及操作原理 215
8.4.4 动态链表的建立 216
8.4.5 链表的删除操作 217
8.4.6 链表的插入操作 218
8.5 共用体 222
8.5.1 共用体类型和共用体变量定义 222
8.5.2 共用体类型变量引用方式 225
8.6 本章小结 226
8.7 习题 227
第9章 文件操作 233
9.1 计算机中的流 233
9.2 文件的概念 233
9.2.1 文件 233
9.2.2 文件指针 234
9.3 文件的打开与关闭 235
9.3.1 文件的打开 235
9.3.2 文件的打开方式 236
9.3.3 文件关闭函数 238
9.4 文件的读写 238
9.4.1 字符的读写 238
9.4.2 字符串的读写 239
9.4.3 格式化读/写文件函数 240
9.4.4 数据块读/写文件函数 241
9.5 文件的定位 243
9.6 文件检测函数 245
9.7 本章小结 245
9.8 习题 246
第10章 位运算 251
10.1 计算机内数据的表示方法 251
10.1.1 原码、反码和补码 251
10.1.2 计算机内数据的存储 252
10.2 位运算符 253
10.2.1 按位与(&) 254
10.2.2 按位或(|) 255
10.2.3 按位异或(∧) 256
10.2.4 按位取反(~) 257
10.2.5 左移位(《) 257
10.2.6 右移位(》) 258
10.2.7 位运算与赋值运算符 259
10.2.8 不同长度数据位运算规则 259
10.3 位域 259
10.3.1 位域的定义和位域变量的说明 259
10.3.2 位域的使用 260
10.4 本章小结 261
10.5 习题 261
第11章 常见错误示例及解决方案 264
11.1 C语言程序设计常见错误 264
11.1.1 程序出错的种类 264
11.1.2 程序测试 265
11.2 示例及解决方案 265
11.3 程序的调试 281
11.3.1 打印中间结果,分段排错 282
11.3.2 条件编译 282
11.4 习题 282
附录A 常用字符与ASCII码对照表 286
附录B C语言关键字 288
附录C C语言运算符的优先级与结合性 289
附录D 常用的ANSI C标准库函数 290
参考文献 295