第1篇 基础知识 1
第1章 C语言概述与程序设计基础 1
1.1 C语言发展简史 1
1.2 C语言的特点 1
1.3 简单C语言程序举例 2
1.4 程序设计基础 3
1.4.1 算法概述 4
1.4.2 算法的常用表示方法 4
1.5 Visual C++6.0集成开发环境 6
1.6 需求——消费者积分管理系统 7
小结 7
习题 7
第2章 数据类型、运算符与表达式 8
2.1 C语言的基本符号 8
2.1.1 标识符 8
2.1.2 数据类型 9
2.1.3 常量 10
2.1.4 变量 12
2.2 运算符和表达式 13
2.2.1 赋值运算符和赋值表达式 14
2.2.2 算术运算符和算术表达式 16
2.2.3 关系运算符和关系表达式 17
2.2.4 逻辑运算符和逻辑表达式 18
2.2.5 逗号运算符和逗号表达式 20
2.2.6 条件运算符和条件表达式 21
2.2.7 自增运算和自减运算 21
2.3 数据类型转换 22
2.3.1 不同数据类型的数据间的混合运算 23
2.3.2 强制类型转换 24
2.4 案例——消费者属性数据的描述 25
小结 25
习题 26
第3章 顺序结构程序设计 27
3.1 语句 27
3.2 数据的输入和输出 29
3.2.1 简单格式的输入与输出 29
3.2.2 复杂格式的输入与输出 33
3.2.3 字符数据的输入与输出 36
3.3 顺序结构应用举例 38
3.4 案例——菜单的设计与实现 39
小结 41
习题 41
第4章 选择结构程序设计 42
4.1 if语句 42
4.1.1 if语句的三种形式 42
4.1.2 if语句的嵌套 46
4.2 switch语句 49
4.3 选择结构应用举例 50
4.4 案例——菜单的选择 53
小结 55
习题 55
第5章 循环结构程序设计 57
5.1 while循环语句 57
5.2 do...while循环语句 58
5.3 for循环语句 59
5.4 循环嵌套 62
5.5 break语句与continue语句 64
5.5.1 break语句的使用 64
5.5.2 continue语句的使用 65
5.6 循环结构应用举例 65
5.7 案例——用户菜单的循环选择 68
小结 70
习题 71
第6章 数组及其使用 72
6.1 一维数组 72
6.1.1 一维数组的定义和引用 72
6.1.2 一维数组的初始化 73
6.1.3 一维数组程序举例 74
6.2 二维数组 76
6.2.1 二维数组的定义和引用 76
6.2.2 二维数组的初始化 76
6.2.3 二维数组程序举例 77
6.3 字符数组 79
6.3.1 字符数组的定义 79
6.3.2 字符数组的初始化 79
6.3.3 字符数组的引用 79
6.3.4 字符数组与字符串 80
6.3.5 字符数组的输入和输出 80
6.3.6 字符串处理函数 81
6.3.7 字符数组应用举例 84
6.4 案例——以数组为数据结构的实现 85
6.4.1 消费者清单数据描述 85
6.4.2 “创建消费者清单”模块 87
6.4.2 “浏览消费者”模块 88
6.4.3 “统计积分”模块 88
小结 89
习题 89
第7章 函数及其应用 91
7.1 函数的基本概念 91
7.1.1 函数的概念 91
7.1.2 函数的定义 93
7.1.3 函数的调用 95
7.1.4 函数的参数 97
7.1.5 函数的返回值 98
7.1.6 函数的原型声明 99
7.2 数组作为函数参数 101
7.2.1 数组元素作为函数参数 101
7.2.2 一维数组作为函数参数 102
7.2.3 二维数组作为函数参数 107
7.3 函数的嵌套调用和递归调用 108
7.3.1 函数的嵌套调用 108
7.3.2 函数的递归调用 109
7.4 变量的作用域和存储方法 113
7.4.1 局部变量和全局变量 113
7.4.2 变量的存储方法 116
7.5 预处理命令 120
7.5.1 宏定义 120
7.5.2 文件包含 123
7.5.3 条件编译 124
7.6 函数应用举例 125
7.7 再论C程序组织结构 129
7.7.1 分层和模块化程序设计 129
7.7.2 C程序组织结构 130
7.8 案例——以函数为模块化设计手段改写 131
7.8.1 任务描述 131
7.8.2 接口设计 132
7.8.3 主模块的实现 133
7.8.4 子模块的实现 135
小结 138
习题 139
第8章 指针及其应用 141
8.1 地址和指针的概念 141
8.1.1 地址的概念 141
8.1.2 指针的概念 143
8.2 指针变量 143
8.2.1 指针变量的定义 143
8.2.2 指针变量的操作 144
8.2.3 指针变量作为函数参数 147
8.3 指针指向数组 150
8.3.1 指向数组元素的指针 150
8.3.2 指针的运算 151
8.3.3 通过指针引用数组元素 152
8.3.4 指向二维数组元素的指针 155
8.4 指针指向字符串 155
8.4.1 字符指针与字符串指针 156
8.4.2 字符串的表示形式 156
8.4.3 字符指针作为函数参数 157
8.4.4 对使用字符指针变量和字符数组的讨论 158
8.5 指针数组和二级指针 160
8.5.1 指针数组 160
8.5.2 二级指针 162
8.6 动态内存分配与指向它的指针变量 163
8.6.1 内存的动态分配 164
8.6.2 实现内存的动态分配与释放 164
8.7 指针应用举例 166
8.8 案例——以指针为编程手段改写 168
小结 169
习题 170
第9章 结构体与枚举 172
9.1 结构体类型与结构体变量 172
9.1.1 结构体类型的声明 172
9.1.2 结构体变量的定义 173
9.1.3 结构体变量的引用 174
9.2 结构体数组 175
9.2.1 结构体数组的定义 175
9.2.2 结构体数组的初始化 176
9.2.3 结构体数组的引用 176
9.2.4 结构体数组应用举例 176
9.3 结构体指针 177
9.3.1 指向结构体变量的指针 177
9.3.2 指向结构体数组的指针 178
9.4 结构体类型数据在函数问的传递 178
9.4.1 结构体变量作为函数参数 178
9.4.2 结构体指针变量作为函数参数 179
9.5 枚举类型的使用 180
9.5.1 枚举类型和枚举变量 181
9.5.2 枚举类型变量的赋值和使用 181
9.6 类型定义符typedef 182
9.7 案例——以线性表为数据结构改写 183
9.7.1 数据描述 183
9.7.2 “创建消费者清单”模块 183
小结 188
习题 189
第10章 文件 190
10.1 文件概述 190
10.1.1 文件的概念 190
10.1.2 文件的分类 190
10.1.3 文件缓冲区 191
10.1.4 文件类型指针 191
10.2 文件的打开与关闭 191
10.2.1 打开文件 192
10.2.2 关闭文件 193
10.3 文件的顺序读写 193
10.3.1 格式化读写函数fscanf()和fprintf() 193
10.3.2 字符方式读写函数fgetc()和fputc() 194
10.3.3 数据块读写函数fread()和fwrite() 196
10.3.4 字符串读写函数fgets()和fputs() 198
10.4 文件的定位与随机读写 200
10.4.1 文件指针重定位函数rewind() 201
10.4.2 随机读写函数fseek() 201
10.4.3 其他相关函数 202
10.5 案例——利用文件实现数据的输入与输出 202
10.5.1 数据的输入 202
10.5.2 数据的输出 203
小结 203
习题 204
第2篇 实验指导 205
第11章 实验一般步骤及实验环境 205
11.1 实验的一般步骤 205
11.2 实验环境VC++ 6.0使用指南 206
第12章 学生成绩管理系统实验案例 212
12.1 实验案例分析 212
12.2 实验内容及要求 218
第3篇 习题及参考答案 226
综合练习题及参考答案 226
模拟试题及参考答案 248
附录 255
附录A 常用字符及其ASCII码对照表 255
附录B 关键字 256
附录C 运算符的优先级和结合性 257
附录D 常用库函数 258
附录E 常用格式说明符 262
附录F VC++ 6.0编译错误信息 264
附录G 实验案例源程序 267
参考文献 273