第1篇C语言编程基础 3
第1章 C语言程序设计概述 3
1.1 程序与程序设计语言 3
1.1.1 程序的基本概念 3
1.1.2 程序设计语言 3
1.2 C语言的发展及特点 4
1.2.1 C语言的发展概况 4
1.2.2 C语言的特点 4
1.3 简单的C语言程序 5
1.4 C语言字符集、标识符与关键字 7
1.4.1 C语言字符集 7
1.4.2 系统定义标识符 7
1.4.3 用户定义标识符 8
1.5 Microsoft Visual C +++2010学习版简介 8
1.5.1 概述 8
1.5.2 运行C语言程序的步骤 8
1.5.3 Microsoft Visual C ++++2010学习版的开发环境布局 15
1.6 算法及其描述 16
1.6.1 算法的概念 16
1.6.2 算法的描述方法 17
1.6.3 3种基本结构的流程图 18
1.7 程序的排版格式 19
1.8 本章小结及易错问题 21
1.8.1 本章知识点小结 21
1.8.2 本章常见错误小结 21
习题1 21
第2章 C语言的基本数据类型与表达式 23
2.1 C语言的基本数据类型 23
2.1.1 数据类型概述 23
2.1.2 整型数据 24
2.1.3 实型数据 25
2.1.4 字符型数据 27
2.2 变量与常量 28
2.2.1 变量 28
2.2.2 常量 31
2.3 运算符与表达式 33
2.3.1 C语言运算符简介 33
2.3.2 算术运算符与算术表达式 34
2.3.3 赋值运算符与赋值表达式 36
2.3.4 逗号运算符和求字节运算符 38
2.4 数据类型转换 39
2.4.1 类型自动转换 39
2.4.2 赋值转换 40
2.4.3 强制类型转换 42
2.5 实例 43
实例 计算总分和平均分 43
2.6 本章小结及易错问题 44
2.6.1 本章知识点小结 44
2.6.2 本章常见错误小结 45
习题2 45
第3章 顺序结构程序设计 48
3.1 C语言基本语句 48
3.2 赋值语句 51
3.3 数据的输入/输出语句 53
3.3.1 格式的输入与输出 53
3.3.2 字符的输入与输出 63
3.4 实例 65
实例1 求直角三角形的斜边长及面积 65
实例2 鸡兔同笼 66
3.5 本章小结及易错问题 67
3.5.1 本章知识点小结 67
3.5.2 本章常见错误小结 67
习题3 68
第4章 选择结构程序设计 70
4.1 选择结构程序举例 70
4.2 关系运算和逻辑运算 71
4.2.1 关系运算符和关系表达式 71
4.2.2 逻辑运算符和逻辑表达式 73
4.3 if语句 74
4.3.1 单分支if语句 75
4.3.2 双分支if语句 76
4.3.3 多分支if语句 77
4.3.4 if语句的嵌套 80
4.4 switch语句 80
4.5 条件运算符及其表达式 84
4.6 实例 85
实例1 求最大值 85
实例2 四则运算器 89
4.7 本章小结及易错问题 91
4.7.1 本章知识点小结 91
4.7.2 本章常见错误小结 91
习题4 93
第5章 循环结构程序设计 95
5.1 循环结构概述 95
5.2 while语句 95
5.3 do-while语句 99
5.4 for语句 100
5.5 循环嵌套 101
5.5.1 循环嵌套 101
5.5.2 循环嵌套的组合形式 102
5.6 break语句与continue语句 104
5.6.1 break语句 105
5.6.2 continue语句 106
5.7 goto语句 107
5.8 循环结构类型的选择及转换 108
5.8.1 循环结构类型的选择 109
5.8.2 循环结构的相互转化 109
5.9 实例 112
实例1 百钱百鸡问题 112
实例2 九九乘法表的输出 113
实例3 余弦函数cos(x)曲线 114
5.10 本章小结及易错问题 116
5.10.1 本章知识点小结 116
5.10.2 本章常见错误小结 116
习题5 117
第6章 数组 123
6.1 一维数组 123
6.1.1 一维数组的定义 123
6.1.2 一维数组的存储结构 124
6.1.3 一维数组的初始化 124
6.1.4 一维数组元素的引用 125
6.2 二维数组 126
6.2.1 二维数组的定义 126
6.2.2 二维数组的存储结构 127
6.2.3 二维数组的初始化 127
6.2.4 二维数组的引用 128
6.3 字符数组 129
6.3.1 字符数组的定义 129
6.3.2 字符数组的初始化 130
6.3.3 字符数组的引用 130
6.3.4 字符串和字符串结束标志 132
6.3.5 字符数组的输入/输出 133
6.3.6 字符串处理函数 135
6.4 实例 140
实例1 斐波那契数列 140
实例2 杨辉三角形 141
6.5 本章小结及易错问题 142
6.5.1 本章知识点小结 142
6.5.2 本章常见错误小结 143
习题6 143
第7章 函数 147
7.1 函数的概述 147
7.2 函数的定义 149
7.2.1 无参函数定义的一般形式 150
7.2.2 有参函数定义的一般形式 150
7.3 函数的参数和函数的返回值 151
7.3.1 形参和实参 151
7.3.2 函数的返回值 152
7.4 函数的调用 153
7.4.1 函数调用的一般格式 153
7.4.2 函数调用的3种表示形式 157
7.4.3 被调函数的声明和函数原型 157
7.5 函数的嵌套调用 158
7.6 函数的递归调用 160
7.7 数组作为函数参数 162
7.7.1 数组元素作函数实参 162
7.7.2 数组名作函数参数 163
7.8 局部变量和全局变量 168
7.8.1 局部变量 168
7.8.2 全局变量 169
7.9 变量的存储类别 170
7.9.1 动态存储方式与静态存储方式 170
7.9.2 auto变量 171
7.9.3 static声明的局部变量 171
7.9.4 register变量 172
7.10 实例 173
实例 小型运算器 173
7.11 本章小结及易错问题 175
7.11.1 本章知识点小结 175
7.11.2 本章常见错误小结 175
习题7 176
第8章 编译预处理 177
8.1 编译预处理的特点 177
8.2 宏定义 177
8.2.1 不带参数的宏定义 177
8.2.2 带参数的宏定义 179
8.3 文件包含 182
8.4 本章小结及易错问题 182
8.4.1 本章知识点小结 182
8.4.2 本章常见错误小结 183
习题8 183
第2篇C语言编程进阶 187
第9章 指针 187
9.1 计算机中的内存 187
9.1.1 内存地址 187
9.1.2 变量的地址 187
9.2 指针与指针变量 188
9.3 指针变量的定义和引用 188
9.3.1 访问变量的方法 188
9.3.2 指针变量的定义 188
9.3.3 指针变量的赋值 189
9.3.4 零指针与空类型指针 192
9.3.5 指针变量的引用 192
9.3.6 指针运算 193
9.4 指针与数组 194
9.4.1 数组的指针 194
9.4.2 指向数组的指针 196
9.4.3 指向多维数组的指针 199
9.5 指针与字符串 203
9.5.1 字符串的表示 203
9.5.2 字符串的引用 203
9.6 多级指针 205
9.7 指针与函数 207
9.7.1 指向函数的指针变量 207
9.7.2 指针函数 209
9.7.3 动态内存管理 210
9.8 实例 212
实例1 求二维数组中的最大值 212
实例2 梁山好汉排座次 214
9.9 本章小结及易错问题 215
9.9.1 本章知识点小结 215
9.9.2 本章常见错误小结 216
习题9 216
第10章 结构体、共用体和枚举 225
10.1 结构体类型的定义 225
10.2 定义结构体类型变量的方法 226
10.3 结构体变量的引用 228
10.4 结构体变量的初始化 229
10.5 结构体数组 231
10.5.1 结构体数组的定义 231
10.5.2 结构体数组的初始化 233
10.6 结构体指针 236
10.6.1 结构体指针的定义 236
10.6.2 结构体指针引用结构体变量中的成员 236
10.6.3 结构体指针指向结构体数组 238
10.6.4 结构体指针作函数参数 240
10.7 用指针处理链表 241
10.7.1 链表概述 241
10.7.2 建立静态链表 242
10.7.3 建立动态链表 243
10.7.4 链表结点的删除 247
10.7.5 链表结点的插入 250
10.8 共用体 253
10.8.1 共用体的概念 253
10.8.2 共用体变量的定义 253
10.8.3 共用体变量的引用方式 254
10.9 枚举类型 257
10.9.1 枚举类型的定义 258
10.9.2 枚举类型变量的定义 258
10.9.3 枚举类型变量的引用方式 259
10.10 用typedef定义类型 260
10.11 实例 261
实例1 求平面上两点的距离 261
实例2 设计通讯录 262
10.12 本章小结及易错问题 264
10.12.1 本章知识点小结 264
10.12.2 本章常见错误小结 265
习题10 265
第11章 位运算 270
11.1 位运算概述 270
11.2 位逻辑运算符 270
11.2.1 按位取反运算 271
11.2.2 按位与运算 271
11.2.3 按位或运算 271
11.2.4 按位异或运算 272
11.3 移位运算 273
11.3.1 按位左移运算 273
11.3.2 按位右移运算 274
11.4 位运算的复合赋值 275
11.5 实例 275
实例1 奇偶判断 275
实例2 两个整数的交换 276
11.6 本章小结及易错问题 277
11.6.1 本章知识点小结 277
11.6.2 本章常见错误小结 277
习题11 277
第12章 文件 279
12.1 文件概述 279
12.1.1 文件的分类 279
12.1.2 文件缓冲区 280
12.2 文件的基本操作 280
12.2.1 文件指针 280
12.2.2 文件的打开与关闭 280
12.2.3 文件的读/写 283
12.2.4 文件的随机读/写 292
12.3 实例 294
实例 存储并修改学生成绩 294
12.4 本章小结及易错问题 297
12.4.1 本章知识点小结 297
12.4.2 本章常见错误小结 297
习题12 298
第3篇综合实例 303
第13章 学生成绩管理系统 303
13.1 概述 303
13.2 需求分析 303
13.3 系统设计 304
13.3.1 系统目标 304
13.3.2 开发及运行环境 304
13.3.3 界面设计 304
13.3.4 数据结构设计 305
13.4 编码实现 306
13.4.1 主函数 306
13.4.2 输入学生记录 309
13.4.3 插入学生记录 312
13.4.4 修改学生记录 315
13.4.5 删除学生记录 316
13.4.6 查询学生记录 318
13.4.7 排序 320
13.4.8 显示学生记录 322
13.4.9 统计学生记录 323
13.4.10 保存学生记录 325
13.4.11 其他函数 326
13.5 测试 331
13.6 小结 332
附录 333
附录A 在Dev-C+++环境下运行C语言程序的方法 333
附录B 运算符和结合性 336
附录C ASCII字符表 337
附录D 常用的C语言库函数 339
参考文献 344