第1章 C语言概述 1
1.1 计算机语言的发展简介 1
1.1.1 计算机语言的种类以及发展阶段 1
1.1.2 C语言的诞生以及发展过程 3
1.2 简单C程序的编辑、调试以及运行 4
1.2.1 源程序、目标程序以及可执行程序 4
1.2.2 C程序的错误类型以及纠错方法 8
1.3 简单C程序的构成 12
1.3.1 函数和语句 12
1.3.2 库函数printf()简介 15
1.3.3 scanf()函数简介 16
1.3.4 printf()函数和scanf()函数的结合使用 17
1.4 第一个项目——小学生四则运算测试系统 18
1.4.1 项目开发流程简介 19
1.4.2 小学生四则运算测试系统简介 20
习题与上机实验 22
第2章 C的基本数据类型以及有关运算 23
2.1 C的基本数据类型 23
2.1.1 常量与变量 23
2.1.2 整型数据以及整型变量 27
2.1.3 实型数据以及实型变量 29
2.1.4 字符型数据以及字符型变量 32
2.1.5 字符串 36
2.2 运算符和表达式 38
2.2.1 算术运算符和算术表达式 38
2.2.2 比较运算符和比较表达式 39
2.2.3 逻辑运算符和逻辑表达式 41
2.2.4 赋值运算符和赋值表达式 42
2.2.5 自增(++)和自减(--)运算符 43
2.2.6 条件运算符和条件表达式 44
2.2.7 逗号运算符和逗号表达式 45
2.2.8 混合数据运算以及类型转换 45
2.3 整型数据在内存的表示形式以及运算溢出 46
2.3.1 整型数据的补码表示方法 46
2.3.2 数据的溢出以及舍入误差 47
2.4 附加——格式化输入输出 48
2.4.1 在printf语句中规定输出位数 48
2.4.2 scanf()函数的格式化输入 50
2.5 四则运算测试系统——以不同的数据类型接受用户输入 53
习题与上机实验 55
第3章 选择(分支)结构程序设计 57
3.1 顺序程序结构 57
3.2 用if语句进行选择 59
3.2.1 if语句的3种使用形式 59
3.2.2 if语句的嵌套使用 65
3.3 用switch语句进行选择 67
3.3.1 switch语句的使用形式 67
3.3.2 switch语句的使用举例 68
3.3.3 使用switch语句的注意事项 70
3.3.4 选择结构综合举例 70
3.4 小学生四则运算测试系统 73
3.4.1 对用户输入的判断 73
3.4.2 随机试题的生成 74
习题与上机实验 76
第4章 循环结构程序设计 77
4.1 循环引例 77
4.1.1 问题分析 77
4.1.2 循环体以及循环条件 79
4.2 构成循环的语句 79
4.2.1 用while语句实现循环 79
4.2.2 用do...while语句实现循环 83
4.2.3 用for语句实现循环 86
4.2.4 3种循环形式的相互转换 90
4.3 循环的嵌套 93
4.3.1 嵌套的应用分析 94
4.3.2 循环以及循环嵌套注意事项 97
4.4 其他与循环有关的语句 99
4.4.1 break和continue语句 99
4.4.2 用goto构成循环 101
4.5 循环综合举例 101
4.6 完善小学生四则运算测试系统 104
习题与上机实验 107
第5章 数组 108
5.1 一维数组 108
5.1.1 问题提出与分析 108
5.1.2 一维数组的定义与初始化 109
5.1.3 一维数组的使用 110
5.1.4 一维数组元素的排序 114
5.2 二维数组 120
5.2.1 二维数组的定义与初始化 120
5.2.2 二维数组的应用 121
5.2.3 二维数组与一维数组的关系 127
5.3 字符数组与字符串 128
5.3.1 逐元素使用字符数组 128
5.3.2 以字符串的形式使用字符数组 130
5.3.3 常用的字符串处理函数 132
5.3.4 字符数组的应用 133
5.4 数组综合举例 136
5.4.1 问题提出 136
5.4.2 问题分析 136
5.4.3 代码实现 136
5.5 项目案例——简易学生成绩管理系统 138
5.5.1 简易学生成绩管理系统功能分析 139
5.5.2 具体功能的实现以及说明 142
习题与上机实验 145
第6章 自定义函数 147
6.1 函数概述 147
6.1.1 什么是函数 148
6.1.2 函数的分类 150
6.2 函数的定义与调用 151
6.2.1 函数的定义及结构分析 151
6.2.2 函数的调用 155
6.2.3 函数的原型声明 156
6.3 函数的参数传递 160
6.3.1 一般变量做函数参数 160
6.3.2 数组名做函数参数 161
6.4 函数的嵌套调用和递归调用 168
6.4.1 函数的嵌套调用 168
6.4.2 函数的递归调用 169
6.5 函数变量以及变量共享 172
6.5.1 局部变量与全局变量 172
6.5.2 静态变量与动态变量 175
6.5.3 寄存器变量 177
6.6 内(外)部变量及内(外)部函数 178
6.6.1 内部变量与外部变量 178
6.6.2 内部函数与外部函数 180
6.7 多文件程序的编译和连接 181
6.8 用函数调用改写“简易学生成绩管理系统” 183
6.8.1 改写后的主函数架构 183
6.8.2 有关函数的定义和部分代码 185
习题与上机实验 197
第7章 结构体、共用体和枚举类型 199
7.1 结构体类型 200
7.1.1 结构体类型的定义 200
7.1.2 结构体变量的使用 202
7.2 结构体数组 207
7.2.1 结构体数组的定义以及使用 207
7.2.2 结构体变量的传递 209
7.2.3 结构体数组的综合应用 211
7.3 其他自定义类型的应用 213
7.3.1 共用体 213
7.3.2 枚举类型 218
7.3.3 用typedef定义类型符号 222
7.4 用结构体数组改写学生成绩管理系统 223
习题与上机实验 225
第8章 指针 226
8.1 指针概述 226
8.1.1 变量的地址与指针 227
8.1.2 指针变量的定义和初始化 228
8.2 指针变量的使用 229
8.2.1 取地址运算与指向运算 230
8.2.2 指向普通变量的指针变量 231
8.2.3 指向结构体变量的指针变量 232
8.2.4 指针在函数间传递 235
8.3 数组与指针变量 238
8.3.1 通过指针变量来使用一维数组 239
8.3.2 数组的指针变量与数组名的关系 243
8.3.3 参数传递时的数组名及其指针变量 245
8.4 字符串与指针变量 247
8.4.1 字符串的特点 247
8.4.2 字符串的指针变量 249
8.4.3 字符串指针变量做函数参数 251
8.5 函数与指针 253
8.5.1 返回指针的函数 253
8.5.2 指向函数的指针 255
8.6 指针的其他使用 258
8.6.1 多维数组的指针 258
8.6.2 指针数组 263
8.6.3 指针变量的指针 267
8.6.4 void类型的指针变量 268
8.7 指针在“简易学生成绩管理系统”中的初步应用 269
习题与上机实验 273
第9章 链表 276
9.1 链表的准备知识 276
9.1.1 与链表有关的概念 277
9.1.2 与链表有关的函数(与动态内存分配有关的函数) 279
9.2 单向链表的有关操作 281
9.2.1 无头结点链表的建立与输出 281
9.2.2 带头结点链表的建立与输出 287
9.2.3 链表结点的删除和插入 290
9.3 应用举例 298
9.4 用链表实现“简易学生成绩管理系统”项目的所有功能 302
9.4.1 准备工作以及主函数架构 302
9.4.2 “输出成绩”功能 304
9.4.3 “录入成绩”功能 306
9.4.4 “查询修改”功能 309
习题与上机实验 313
第10章 文件 315
10.1 文件指针以及文件的打开和关闭 315
10.1.1 文件概述 315
10.1.2 文件类型的指针 316
10.1.3 文件的打开以及关闭 318
10.1.4 文件读写的准备知识 320
10.2 文件的顺序读写 321
10.2.1 以字符为单位读写文件 321
10.2.2 以字符串为单位读写文件 326
10.2.3 文件的格式化读写 329
10.3 二进制文件的顺序读写 333
10.3.1 写二进制文件 333
10.3.2 读二进制文件 335
10.4 文件的随机读写 337
10.4.1 文件读写位置的有关函数 338
10.4.2 随机读写举例 339
10.5 实现“简易学生成绩管理系统”的文件操作功能 341
习题与上机实验 345
第11章 预处理命令 347
11.1 概述 347
11.2 宏定义 347
11.2.1 无参宏定义 348
11.2.2 带参宏定义 350
11.3 文件包含预处理 354
11.4 条件编译 356
习题与上机实验 360
第12章 位运算 361
12.1 数值在计算机中的表示 361
12.1.1 数值在计算机中的存储方式 361
12.1.2 数据的表示方式 362
12.2 位运算符和位运算 363
12.2.1 “按位与”运算 364
12.2.2 “按位或”运算 366
12.2.3 “按位异或”运算 366
12.2.4 “求反”运算 367
12.2.5 “左移”运算 368
12.2.6 “右移”运算 368
12.3 位运算综合举例 369
12.4 位段 372
习题与上机实验 374
第13章 算法简介 375
13.1 算法概述 375
13.1.1 什么是算法 376
13.1.2 算法的特点 376
13.1.3 衡量算法的标准 377
13.2 表示算法的方法 377
13.2.1 用自然语言表示算法 377
13.2.2 用传统流程图表示算法 377
13.2.3 用N-S流程图表示算法 378
13.2.4 用伪代码表示算法 379
13.2.5 用计算机语言表示算法 380
13.3 常用算法分析 381
13.3.1 常用基本算法 381
13.3.2 常用算法应用举例 382
附录A 常用字符与ASCII代码对照表 386
附录B 常用库函数 388
参考文献 397