第1章 程序设计基础 1
1.1 引例 1
1.1.1 软硬件基础 1
1.1.2 编写程序 1
1.2 算法 3
1.2.1 算法及其特性 3
1.2.2 算法的表示方法 4
1.2.3 算法设计的基本方法 7
1.3 程序与程序设计 12
1.3.1 程序与程序设计语言 12
1.3.2 程序设计语言处理过程 13
1.3.3 计算机解题过程 15
1.3.4 程序设计方法 17
1.4 案例——“学生成绩管理系统”需求分析与模块图的绘制 19
本章小结 21
探究性题目:使用RAPTOR进行程序设计 22
第2章 C语言概述 23
2.1 引例 23
2.2 C语言出现的历史背景 23
2.3 C语言的特点 24
2.4 C程序结构和代码书写规则 25
2.4.1 C程序结构 25
2.4.2 代码书写规则 28
2.5 C程序的实现 31
2.5.1 C程序的实现步骤和调试 31
2.5.2 VC++6.0的使用 34
本章小结 38
探究性题目:C语言应用领域及其应用前景的分析 39
第3章 数据类型与表达式 40
3.1 引例 40
3.2 C语言的数据类型 40
3.3 常量与变量 41
3.3.1 常量 41
3.3.2 变量 43
3.3.3 常变量 44
3.3.4 标识符 44
3.4 基本数据类型 45
3.4.1 整型数据 45
3.4.2 浮点型数据 48
3.4.3 字符型数据 50
3.4.4 如何确定常量的类型 52
3.5 运算符和表达式 53
3.5.1 运算符和表达式简介 53
3.5.2 算术运算符和算术表达式 53
3.5.3 赋值运算符和赋值表达式 55
3.5.4 逗号运算符和逗号表达式 56
3.5.5 位运算符与位运算表达式 56
3.6 类型转换 59
3.6.1 隐含类型转换 59
3.6.2 强制类型转换 60
3.6.3 赋值过程中的类型转换 60
3.7 案例——“学生成绩管理系统”中学生属性数据的描述 62
本章小结 63
探究性题目:VC++6.0中浮点型数据存储形式 64
第4章 顺序结构程序设计 65
4.1 引例 65
4.2 C语句概述 66
4.3 数据输入/输出 68
4.3.1 字符数据的输入和输出 68
4.3.2 格式输入与输出函数 69
4.4 顺序结构程序设计 74
4.5 使用scanf()函数常见的问题 79
4.6 案例——“学生成绩管理系统”中用户菜单的设计与实现 84
本章小结 86
探究性题目:常用缓冲和非缓冲输入库函数使用方法的剖析 87
第5章 选择结构程序设计 88
5.1 引例 88
5.2 关系运算和逻辑运算 90
5.2.1 关系运算 90
5.2.2 逻辑运算 90
5.3 if语句 93
5.3.1 if语句的3种基本形式 93
5.3.2 if语句的嵌套 96
5.4 条件运算符 97
5.5 switch语句 98
5.6 选择结构程序设计举例 100
5.7 案例——“学生成绩管理系统”中用户菜单的选择 107
本章小结 109
探究性题目:C编译器对逻辑运算的优化 110
第6章 循环结构程序设计 111
6.1 引例 111
6.2 概述 111
6.2.1 C语言中实现循环的5种机制 111
6.2.2 goto语句以及用goto语句构成循环 111
6.3 循环语句 113
6.3.1 while语句 113
6.3.2 do-while语句 114
6.3.3 for语句 115
6.3.4 几种循环的比较 116
6.4 循环的嵌套 118
6.5 break语句和continue语句 119
6.5.1 break语句 119
6.5.2 continue语句 120
6.6 循环结构程序举例 122
6.7 案例——“学生成绩管理系统”中用户菜单的循环选择 130
本章小结 132
探究性题目:算法中循环结构的时间复杂度分析 133
第7章 数组 134
7.1 引例 134
7.2 一维数组的定义和引用 135
7.2.1 一维数组的定义 135
7.2.2 一维数组的引用 136
7.2.3 一维数组的初始化 136
7.2.4 一维数组应用举例 137
7.3 二维数组的定义和引用 146
7.3.1 二维数组的定义 146
7.3.2 二维数组的引用 147
7.3.3 二维数组的初始化 148
7.3.4 二维数组应用举例 149
7.4 字符数组 152
7.4.1 字符数组的定义与引用 153
7.4.2 字符数组与字符串 153
7.4.3 字符数组的初始化 154
7.4.4 字符数组的输入/输出 154
7.4.5 字符串处理函数 156
7.4.6 字符数组应用举例 159
7.5 案例——以数组为数据结构实现“学生成绩管理系统” 160
本章小结 163
探究性题目:高精度计算 164
第8章 函数 165
8.1 引例 165
8.2 函数的分类和定义 166
8.2.1 函数的分类 166
8.2.2 函数定义的一般形式 167
8.3 函数的调用 168
8.3.1 函数调用概述 168
8.3.2 形式参数和实际参数 169
8.3.3 函数的返回值 171
8.3.4 函数原型 172
8.4 数组作为函数参数 173
8.4.1 数组元素作函数实参 173
8.4.2 数组名作函数参数 174
8.4.3 多维数组名作函数参数 177
8.5 函数的嵌套调用和递归调用 178
8.5.1 函数的嵌套调用 178
8.5.2 函数的递归调用 180
8.6 变量的作用域 184
8.6.1 局部变量 184
8.6.2 全局变量 184
8.6.3 同名变量的作用域重合问题 186
8.7 变量的存储类别 188
8.7.1 动态存储方式与静态存储方式 188
8.7.2 auto变量和register变量 189
8.7.3 用extern声明外部变量 189
8.7.4 static变量 191
8.8 内部函数和外部函数 192
8.9 预处理命令 192
8.10 再论C程序组织结构 197
8.11 案例——以函数为模块化设计手段改写“学生成绩管理系统” 200
本章小结 206
探究性题目:C语言中函数调用机理的探讨 207
第9章 指针 208
9.1 引例 208
9.2 地址和指针的概念 209
9.2.1 地址和指针 209
9.2.2 内存单元的地址与内存单元的值 210
9.2.3 直接访问与间接访问 210
9.3 指针变量 210
9.3.1 指针变量的定义 210
9.3.2 指针变量的引用 211
9.3.3 指针变量作为函数参数 212
9.4 指针与数组 214
9.4.1 一维数组与指针 214
9.4.2 二维数组与指针 219
9.5 字符串与指针 223
9.5.1 通过指针访问字符串常量 223
9.5.2 通过指针访问字符数组 224
9.5.3 字符指针作函数参数 224
9.5.4 使用字符指针变量和字数组的比较 225
9.6 指针与函数 226
9.6.1 用函数指针变量调用函数 226
9.6.2 返回指针值的函数 227
9.7 指针数组和指向指针的指针 228
9.7.1 指针数组的概念 228
9.7.2 指向指针的指针 230
9.7.3 指针数组作main函数的形参 231
9.8 动态内存分配 233
9.8.1 C程序存储空间布局 233
9.8.2 动态内存分配函数 233
9.9 案例——以指针为编程手段改写“学生成绩管理系统” 236
本章小结 240
探究性题目:使用C语言实现动态数组 241
第10章 结构体与共用体 242
10.1 引例 242
10.2 结构体类型与结构体变量 243
10.2.1 结构体类型的声明 243
10.2.2 结构体变量的定义 245
10.2.3 结构体变量的引用和初始化 246
10.3 结构体数组 250
10.3.1 结构体数组的定义和初始化 250
10.3.2 结构体数组应用举例 251
10.4 指向结构体类型数据的指针 252
10.4.1 指向结构体变量的指针 252
10.4.2 指向结构体数组的指针 254
10.4.3 结构体变量和指向结构体的指针作函数参数 255
10.5 线性表 259
10.5.1 线性表概述 259
10.5.2 线性表的顺序表示和实现 259
10.5.3 线性表的链式表示和实现 261
10.6 共用体 265
10.6.1 共用体的概念 265
10.6.2 共用体变量的引用方式 266
10.6.3 共用体的数据类型的数据特征 267
10.7 枚举类型 268
10.8 用typedef声明新类型名 269
10.9 案例——以线性表为数据结构改写“学生成绩管理系统” 270
本章小结 275
探究性题目:用C语言实现Excel中多字段排序 276
第11章 文件 277
11.1 引例 277
11.2 C文件概述 277
11.2.1 文件 277
11.2.2 文件标识 278
11.2.3 文件的分类 278
11.2.4 文件缓冲区 279
11.2.5 文件类型指针 280
11.2.6 C语言中文件操作的基本步骤 281
11.3 文件的打开与关闭 282
11.3.1 文件的打开 282
11.3.2 文件的关闭 283
11.4 文件的顺序读写 283
11.4.1 字符的读写 283
11.4.2 字符串的读写 285
11.4.3 格式化读写 288
11.4.4 数据块的读写 289
11.5 文件的随机读写 291
11.6 文件读写的出错检测 293
11.7 案例——“学生成绩管理系统”中学生数据文件的输入与输出 294
本章小结 297
探究性题目:汉字点阵字库中汉字点阵的提取与显示操作初探 298
附录A C语言中的关键字 299
附录B C运算符的优先级与结合性 300
附录C 常用ASCII字符表 301
附录D 常用库函数 302
参考文献 306