第1章 程序设计基础 1
1.1 程序设计语言 1
1.1.1 什么是程序 1
1.1.2 语言的分类 1
1.1.3 C语言简介 2
1.1.4 C语言组成 3
1.2 计算机的组成与程序设计的本质 3
1.2.1 计算机系统结构 3
1.2.2 程序设计的本质 4
1.2.3 程序设计的过程 4
1.3 算法的概念和特性 5
1.3.1 什么是算法 5
1.3.2 算法举例 5
1.3.3 算法的特性 6
1.4 算法的表示方法 6
1.4.1 自然语言 7
1.4.2 伪代码 7
1.4.3 传统流程图 7
1.4.4 N-S流程图 7
1.5 结构化的程序设计方法 8
1.5.1 结构化程序设计 8
1.5.2 结构化程序设计方法 9
习题 10
第2章 Visual C++6.0简介 11
2.1 Visual C++6.0简介 11
2.2 VisualC++6.0的安装与启动 11
2.2.1 安装过程 11
2.2.2 Visual C++6.0的启动 12
2.3 Visual C++6.0的集成开发环境 13
2.4 Visual C++6.0的帮助 15
2.5 Visual C++6.0中的C语言程序设计 16
习题 20
第3章 数据类型、运算符与表达式 22
3.1 C语言的数据类型 22
3.2 变量与常量 22
3.2.1 变量 22
3.2.2 常量 25
3.3 整型数据 26
3.3.1 整型常量与变量 26
3.3.2 整型数据的输入和输出 26
3.3.3 整型数据在内存中的存储方式 31
3.4 实型数据 33
3.4.1 实型常量与变量 33
3.4.2 实型数据的输入和输出 33
3.4.3 实型数据在内存中的存储方式 35
3.5 字符型数据 37
3.5.1 字符型常量、转义字符与变量 37
3.5.2 字符型数据的输入和输出 38
3.6 字符串 40
3.7 算术运算符和算术表达式 40
3.7.1 C语言运算符简介 40
3.7.2 算术运算符和表达式 41
3.7.3 自增自减运算符 42
3.7.4 赋值运算符和赋值表达式 44
3.7.5 逗号运算符和表达式 45
3.8 数据类型的转换 46
3.8.1 隐式类型转换 46
3.8.2 强制类型转换运算符 47
习题 48
单元测试 51
第4章 顺序结构程序设计 53
4.1 C语句概述 53
4.2 C程序的注释 54
4.3 顺序结构程序设计 54
4.4 常见的编程错误及其调试 58
4.4.1 语法错误 58
4.4.2 运行时错误 60
4.4.3 未检测到的错误 60
4.4.4 逻辑错误 61
4.4.5 程序调试方法 61
习题 62
单元测试 63
第5章 选择结构程序设计 65
5.1 关系运算与逻辑运算 65
5.1.1 关系运算符和关系表达式 65
5.1.2 逻辑运算符和逻辑表达式 66
5.2 选择结构算法设计 68
5.3 if语句 71
5.4 switch语句 76
5.5 选择结构的嵌套 79
5.6 条件运算符 83
习题 84
单元测试 87
第6章 循环结构程序设计 89
6.1 循环结构概述 89
6.2 当型循环结构 90
6.2.1 当型循环 90
6.2.2 当型循环结构算法设计 90
6.2.3 while语句 92
6.3 直到型循环 95
6.3.1 直到型循环 95
6.3.2 直到型循环结构算法设计 96
6.3.3 do while语句 96
6.4 for循环语句 97
6.5 break语句和continue语句 99
6.6 循环的嵌套 100
6.7 循环结构编程举例 103
6.8 goto语句 113
习题 113
单元测试 119
第7章 数组 121
7.1 一维数组 121
7.1.1 一维数组 121
7.1.2 一维数组程序设计 123
7.2 二维数组 130
7.2.1 二维数组 130
7.2.2 二维数组程序设计 132
7.3 字符数组 138
7.3.1 字符数组的定义和使用 138
7.3.2 字符串数组 139
7.3.3 字符串处理函数 142
7.3.4 字符串处理算法和程序设计 144
习题 147
单元测试 152
第8章 函数 154
8.1 函数的定义和调用 154
8.1.1 函数定义 154
8.1.2 函数调用 155
8.1.3 函数返回值 157
8.1.4 参数的传递 158
8.1.5 对被调用函数的声明 159
8.2 数组作为参数 160
8.2.1 数组元素作为函数参数 160
8.2.2 数组作为函数参数 161
8.2.3 多维数组作为函数参数 164
8.2.4 字符串作为函数参数 165
8.3 函数的嵌套调用 166
8.4 函数的递归调用 167
8.5 变量的作用域 169
8.6 变量的存储类别和生存期 171
8.7 程序的模块化设计 173
习题 175
第9章 编译预处理 182
9.1 宏定义 182
9.1.1 不带参数的宏定义 182
9.1.2 带参数的宏定义 185
9.2 文件包含 187
9.3 条件编译 189
习题 191
第10章 指针 195
10.1 地址和指针 195
10.2 变量的指针和指向变量的指针变量 195
10.2.1 定义指针变量 195
10.2.2 指针变量的引用 196
10.2.3 指针变量作为函数参数 198
10.3 数组的指针和指向数组的指针变量 200
10.3.1 指向数组元素的指针 200
10.3.2 通过指针引用数组元素 200
10.3.3 数组和指向数组的指针变量作函数参数 202
10.3.4 指向多维数组的指针和指针变量 205
10.4 字符串的指针和指向字符串的指针变量 207
10.4.1 字符串的表示形式 207
10.4.2 字符串指针作函数参数 209
10.4.3 字符指针变量和字符数组的讨论 210
10.5 函数的指针和指向函数的指针变量 210
10.5.1 用函数指针变量调用函数 211
10.5.2 用指向函数的指针作函数参数 211
10.6 返回指针值的函数 212
10.7 指针数组和指向指针的指针 213
10.7.1 指针数组 213
10.7.2 指向指针的指针 216
10.7.3 指针数组作main函数的形参 218
习题 219
第11章 其他数据类型 225
11.1 结构体 225
11.1.1 结构体类型的声明 225
11.1.2 定义结构体类型变量 226
11.1.3 结构体变量的引用 228
11.1.4 结构体变量的初始化 228
11.2 结构体数组 230
11.2.1 定义结构体数组 230
11.2.2 结构体数组的初始化 230
11.2.3 结构体数组应用举例 232
11.3 指向结构体类型数据的指针 232
11.3.1 指向结构体变量的指针 233
11.3.2 指向结构体数组的指针 233
11.3.3 用结构体变量和指向结构体的指针作函数参数 234
11.4 链表 236
11.4.1 链表概述 236
11.4.2 处理动态链表所需的函数 237
11.4.3 建立动态链表 239
11.4.4 输出链表 242
11.4.5 删除链表的结点 242
11.4.6 插入链表结点 245
11.4.7 链表的综合操作 249
11.5 共用体 250
11.5.1 共用体的概念 250
11.5.2 共用体变量的引用 251
11.6 枚举类型 254
11.7 用typedef定义类型 255
习题 257
第12章 位运算 263
12.1 位运算符和位运算 263
12.1.1 按位取反(~)运算符 263
12.1.2 按位与(&)运算符 264
12.1.3 按位或(|)运算符 265
12.1.4 按位异或(^)运算符 265
12.1.5 左移(<<)运算符 266
12.1.6 右移(>>)运算符 267
12.1.7 位运算赋值运算符 268
12.1.8 不同长度的运算数之间的运算规则 268
12.2 位运算程序实例 268
习题 270
第13章 文件 272
13.1 文件概述 272
13.2 文件指针 273
13.3 文件的打开与关闭 273
13.3.1 fopen函数 274
13.3.2 fclose函数 275
13.4 文件的读写 275
13.4.1 fputc函数 276
13.4.2 fgetc函数 277
13.4.3 fputs函数 277
13.4.4 fgets函数 278
13.4.5 fprintf函数 279
13.4.6 fscanf函数 280
13.4.7 fwrite函数 280
13.4.8 fread函数 282
13.4.9 rewind函数 282
13.4.10 fseek函数 283
13.4.11 ftell函数 284
13.4.12 feof函数 284
13.4.13 ferror函数 285
习题 285
第14章 综合程序设计 289
14.1 Windows窗体程序设计 289
14.1.1 Windows窗口程序编写 289
14.1.2 卡雷尔机器人 291
14.2 排序算法比较 302
14.3 个人通讯录 306
习题 312
附录Ⅰ Visual C++6.0常见错误提示 313
附录Ⅱ ANSIC常用库函数 315
参考文献 320