基础篇 1
第1章 C语言概述 1
1.1 程序设计与算法简介 1
1.1.1 计算机语言与程序设计的概念 1
1.1.2 算法简介 2
1.1.3 结构化程序设计 4
1.1.4 面向对象程序设计 5
1.2 C语言的发展与特点 5
1.2.1 C语言的出现与发展 5
1.2.2 C语言的特点 6
1.3 C程序的基本构成与格式 7
1.4 C语言程序的开发过程 9
1.5 C语言程序的上机步骤 9
1.5.1 Visual C++ 6.0上机指南 9
1.5.2 打开C程序文件 13
习题 14
第2章 基本数据类型与基本运算符 16
2.1 基本数据类型 16
2.2 标识符 17
2.2.1 系统定义标识符 17
2.2.2 用户定义标识符 18
2.3 常量和变量 18
2.3.1 常量 18
2.3.2 变量 22
2.4 基本运算符与表达式 22
2.4.1 算术运算符和算术表达式 23
2.4.2 赋值运算符和赋值表达式 25
2.4.3 关系运算符和关系表达式 26
2.4.4 逻辑运算符和逻辑表达式 26
2.4.5 条件运算符和条件表达式 28
2.4.6 逗号运算符和逗号表达式 29
2.4.7 其他运算符 29
2.5 基本位运算 30
2.5.1 按位与 30
2.5.2 按位或 31
2.5.3 按位异或 32
2.5.4 按位取反 33
2.5.5 按位左移 34
2.5.6 按位右移 34
2.5.7 位运算复合赋值运算符 35
2.6 数据类型的转换 35
2.6.1 自动类型转换 35
2.6.2 强制类型转换 36
2.7 基本输入和输出函数 36
2.7.1 字符输入输出函数 36
2.7.2 格式输入输出函数 38
2.8 顺序结构程序举例 41
习题 42
第3章 控制流语句 45
3.1 顺序语句 45
3.1.1 银行存款本息结算 45
3.1.2 基本语句定义 45
3.2 条件分支语句 46
3.2.1 if分支(单分支语句) 46
3.2.2 if-else分支(双分支语句) 48
3.2.3 else if结构 49
3.2.4 if语句的嵌套 51
3.3 开关分支语句 53
3.4 while循环语句 55
3.5 do-while循环语句 57
3.6 for循环语句 59
3.7 循环的嵌套 61
3.8 循环的中途退出 62
3.8.1 break语句 62
3.8.2 continue语句 63
3.9 语句标号与goto语句 64
3.9.1 语句标号 64
3.9.2 goto语句 65
3.10 典型程序分析与设计 67
3.10.1 穷举算法和迭代算法 67
3.10.2 整数的拆分与组合 69
3.10.3 方程根求解 71
3.10.4 其他问题 73
习题 74
第4章 数组 88
4.1 问题的提出与数组的概念 88
4.2 一维数组 88
4.2.1 一维数组的定义 88
4.2.2 一维数组元素的引用 89
4.2.3 一维数组的初始化 90
4.2.4 一维数组应用举例 90
4.3 二维数组 97
4.3.1 二维数组的定义 97
4.3.2 二维数组元素的引用 97
4.3.3 二维数组的初始化 98
4.3.4 二维数组应用举例 99
4.4 字符数组与字符串 101
4.4.1 字符串与字符数组的概念 101
4.4.2 用一维字符数组存放字符串 102
4.4.3 字符串的输入和输出 104
4.4.4 字符串数组 105
4.4.5 用于字符串处理的函数 106
4.4.6 字符数组与字符串应用举例 109
4.5 典型程序分析与设计 112
4.5.1 数组元素的插入、删除与移动 112
4.5.2 子串与单词的查找与替换 115
习题 118
第5章 模块化程序设计与函数 124
5.1 模块化程序设计思想 124
5.1.1 模块化程序设计的基本思想和特点 124
5.1.2 C语言对模块化程序设计的支持 125
5.2 函数概述 125
5.2.1 函数的基本知识 125
5.2.2 C语言函数分类 125
5.3 函数定义与调用 125
5.3.1 函数定义 125
5.3.2 函数调用和返回值 126
5.3.3 函数参数 131
5.4 函数的嵌套调用与递归调用 134
5.4.1 函数嵌套调用 134
5.4.2 函数递归调用 135
5.5 函数中变量作用域与生存期 138
5.5.1 作用域与生存期 138
5.5.2 局部变量及其作用域和生存期 139
5.5.3 全局变量及其作用域和生存期 142
5.6 编译预处理 145
5.6.1 文件包含 146
5.6.2 宏定义 146
5.6.3 条件编译 149
5.7 典型程序设计与分析 151
习题 155
提高篇 162
第6章 指针 162
6.1 指针的概念 162
6.2 指向变量的指针 163
6.2.1 两变量地址值交换 163
6.2.2 指针变量的定义与引用 167
6.3 指向一维数组的指针 168
6.3.1 指针输出一维数组元素 169
6.3.2 一维数组指针的使用 172
6.4 指向二维数组的指针 173
6.4.1 指针输出二维数组元素 173
6.4.2 二维数组指针的使用 175
6.5 指向字符串的指针 177
6.5.1 典型案例与实现 177
6.5.2 指向字符串指针的使用 182
6.6 指向函数的指针 183
6.7 返回指针值的函数 186
6.8 指针数组与指向指针的指针 188
6.8.1 指针数组 188
6.8.2 指向指针的指针 190
6.9 典型程序分析与设计 192
习题 195
第7章 结构体与共用体 200
7.1 结构体 200
7.1.1 结构体类型的定义 200
7.1.2 结构体变量的定义 201
7.1.3 结构体变量的初始化 203
7.1.4 结构体变量的引用 204
7.2 结构体数组 206
7.2.1 结构体数组的定义 206
7.2.2 结构体数组的初始化 207
7.2.3 结构体数组的应用 207
7.3 指向结构体类型数据的指针 209
7.3.1 指向结构体变量的指针 210
7.3.2 指向结构体数组的指针 211
7.3.3 结构体变量作函数参数 212
7.3.4 结构体指针作函数参数 212
7.4 结构体与链表 214
7.4.1 链表概述 214
7.4.2 链表的建立 215
7.4.3 链表的插入 217
7.4.4 链表的删除 219
7.4.5 链表的应用举例 222
7.5 共用体 223
7.5.1 共用体类型的定义 223
7.5.2 共用体变量的定义 224
7.5.3 共用体变量的引用 225
7.6 枚举 227
7.6.1 枚举类型和枚举型变量的定义 227
7.6.2 枚举型变量的使用 229
7.7 用typedef定义类型 230
习题 231
第8章 文件 235
8.1 C语言文件概述 235
8.1.1 文件的分类 235
8.1.2 文件的操作方式 235
8.1.3 文件类型指针 236
8.2 文件操作 237
8.2.1 文件的打开—fopen()函数 237
8.2.2 文件的关闭—fclose()函数 238
8.2.3 常用的文件读写操作函数 239
8.3 文件操作的其他函数应用 249
8.3.1 rewind函数 249
8.3.2 fseek函数 250
8.3.3 ftel1函数 251
8.3.4 出错检测函数 251
8.4 文件的应用 252
8.4.1 带参数的main函数 252
8.4.2 文件应用举例 253
习题 258
应用拓展篇 263
第9章 C语言程序设计项目实践 263
9.1 软件开发过程 263
9.1.1 可行性与需求分析 263
9.1.2 系统设计 264
9.1.3 软件编码 266
9.1.4 软件测试 267
9.2 《学生成绩管理系统》的设计与开发 267
9.2.1 项目需求分析 267
9.2.2 项目系统设计 268
9.2.3 功能模块设计 269
9.2.4 小结与思考 286
附录A ASCII码表 287
附录B C语言的关键字及含义 288
附录C C语言运算符优先级和结合性 289
附录D C语言常用库函数 290
主要参考文献 293