第1篇 基础篇
第1章 初识C语言16
1.1 C语言介绍17
1.1.1 简述编程语言17
1.1.2 C语言的产生18
1.1.3 C语言的特点19
1.2 选择C语言的理由21
1.2.1 C语言的发展趋势21
1.2.2 C语言的成功案例23
1.2.3 C语言的应用领域25
1.3 如何学好C语言25
1.3.1 确立学习态度26
1.3.2 打好基础26
1.3.3 多请教、多交流26
1.3.4 养成良好的编程习惯27
1.3.5 多动手、勤思考27
1.3.6 掌握学习方法27
1.4 本章小结28
第2章 C语言编程准备29
2.1 编写程序的格式30
2.1.1 一个简单的C程序31
2.1.2 标识符与关键字34
2.2 开发环境37
2.2.1 Turbo C 2.038
2.2.2 Visual C++ 6.042
2.3 一个完整的C程序48
2.4 实战练习52
2.4.1 编写一个简单的C程序52
2.4.2 熟悉开发工具53
2.5 本章小结53
第3章 C语言的灵魂——算法54
3.1 算法的基本概念55
3.1.1 算法的特征55
3.1.2 算法的优劣57
3.2 描述算法57
3.2.1 自然语言58
3.2.2 描绘流程图58
3.2.3 绘制N-S流程图64
3.2.4 伪代码68
3.3 本章小结69
第4章 常量和变量70
4.1 了解数据类型71
4.2 解读常量72
4.2.1 整型常量72
4.2.2 实型常量75
4.2.3 字符型常量76
4.2.4 转义字符80
4.2.5 符号常量81
4.2.6 情景应用一:用putchar函数输出“I LOVE C”82
4.2.7 情景应用二:printf函数结合转义字符83
4.3 变量83
4.3.1 整型变量84
4.3.2 情景应用:求出买水果
一共花的钱数86
4.3.3 实型变量87
4.3.4 字符型变量89
4.4 掌握混合运算91
4.5 实战练习93
4.5.1 使用printf语句输出变量93
4.5.2 使用字符型变量输出字符串94
4.6 本章小结94
第1篇 基础篇
第1章 初识C语言16
1.1 C语言介绍17
1.1.1 简述编程语言17
1.1.2 C语言的产生18
1.1.3 C语言的特点19
1.2 选择C语言的理由21
1.2.1 C语言的发展趋势21
1.2.2 C语言的成功案例23
1.2.3 C语言的应用领域25
1.3 如何学好C语言25
1.3.1 确立学习态度26
1.3.2 打好基础26
1.3.3 多请教、多交流26
1.3.4 养成良好的编程习惯27
1.3.5 多动手、勤思考27
1.3.6 掌握学习方法27
1.4 本章小结28
第2章 C语言编程准备29
2.1 编写程序的格式30
2.1.1 一个简单的C程序31
2.1.2 标识符与关键字34
2.2 开发环境37
2.2.1 Turbo C 2.038
2.2.2 Visual C++ 6.042
2.3 一个完整的C程序48
2.4 实战练习52
2.4.1 编写一个简单的C程序52
2.4.2 熟悉开发工具53
2.5 本章小结53
第3章 C语言的灵魂——算法54
3.1 算法的基本概念55
3.1.1 算法的特征55
3.1.2 算法的优劣57
3.2 描述算法57
3.2.1 自然语言58
3.2.2 描绘流程图58
3.2.3 绘制N-S流程图64
3.2.4 伪代码68
3.3 本章小结69
第4章 常量和变量70
4.1 了解数据类型71
4.2 解读常量72
4.2.1 整型常量72
4.2.2 实型常量75
4.2.3 字符型常量76
4.2.4 转义字符80
4.2.5 符号常量81
4.2.6 情景应用一:用putchar函数输出“I LOVE C”82
4.2.7 情景应用二:printf函数结合转义字符83
4.3 变量83
4.3.1 整型变量84
4.3.2 情景应用:求出买水果
一共花的钱数86
4.3.3 实型变量87
4.3.4 字符型变量89
4.4 掌握混合运算91
4.5 实战练习93
4.5.1 使用printf语句输出变量93
4.5.2 使用字符型变量输出字符串94
4.6 本章小结94
第5章 表达式与运算符95
5.1 解读表达式96
5.2 赋值运算符与赋值表达式98
5.2.1 变量赋初值98
5.2.2 自动类型转换100
5.2.3 强制类型转换100
5.3 掌握算术运算符与表达式102
5.3.1 算术运算符102
5.3.2 算术表达式102
5.3.3 优先级与结合性104
5.3.4 自增自减运算符105
5.3.5 情景应用:求运算后的4个变量的值107
5.4 了解关系运算符与表达式108
5.4.1 关系运算符108
5.4.2 关系表达式109
5.4.3 优先级与结合性110
5.5 解读逻辑运算符与表达式111
5.5.1 逻辑运算符111
5.5.2 逻辑表达式112
5.5.3 优先级与结合性112
5.6 运用位逻辑运算符与表达式113
5.6.1 位逻辑运算符114
5.6.2 位逻辑表达式114
5.7 介绍逗号运算符与表达式114
5.8 使用复合赋值运算符116
5.9 判断条件运算符117
5.10 了解运算符的优先级和结合性118
5.11 实战练习119
5.11.1 使用复合赋值运算符求出计算结果119
5.11.2 用自增、自减运算符求出计算结果120
5.11.3 编写简单的计算加班工资程序121
5.12 本章小结122
第6章 输入、输出函数123
6.1 解读语句124
6.1.1 表达式语句124
6.1.2 空语句124
6.1.3 复合语句124
6.2 输入、输出字符数据125
6.2.1 输出字符数据125
6.2.2 输入字符数据126
6.2.3 情景应用:使用getchar函数取消获取Entet键127
6.3 输入、输出字符串128
6.3.1 使用字符串输出函数128
6.3.2 掌握字符串输入函数130
6.4 介绍格式输出函数131
6.5 讲解格式输入函数134
6.6 应用顺序程序设计138
6.7 实战练习141
6.7.1 将输入的小写字符转换为大写字符141
6.7.2 模拟工资计算器142
6.7.3 输入、输出古人名言142
6.8 本章小结143
第7章 选择结构程序设计144
7.1 if选择语句145
7.2 if语句的不同形式145
7.2.1 单条件单分支的if语句146
7.2.2 单条件双分支的if语句149
7.2.3 多条件多分支的if语句153
7.2.4 情景应用:输入数值检查字符类型156
7.3 掌握if语句的嵌套形式157
7.4 注意if语句的常见错误160
7.4.1 使用分号的注意事项161
7.4.2 条件放置注意事项161
7.4.3 if和else的配对注意事项162
7.4.4 大括号的重要性162
7.5 判断分支选择switch语句163
7.5.1 switch语句的基本形式163
7.5.2 多路开关模式的switch语句167
7.6 区分if…else语句和switch语句169
7.7 应用选择结构程序171
7.8 实战练习173
7.8.1 计算函数,求出Y值173
7.8.2 输出三个变量中最大的数174
7.8.3 计算增加后的工资175
7.9 本章小结175
第8章 循环语句176
8.1 编写循环语句177
8.2 实现while型循环177
8.2.1 while循环语句的一般形式178
8.2.2 情景应用:求出数值内的所有正整数的和180
8.2.3 避免while循环语句的死循环182
8.2.4 了解while循环语句的空循环体183
8.2.5 注意while循环语句常见错误183
8.3 解读for型循环语句185
8.3.1 for循环语句的一般形式185
8.3.2 灵活多变的for循环语句189
8.3.3 应用for语句中的逗号192
8.4 介绍do-while语句193
8.5 比较三种循环195
8.6 运用循环嵌套195
8.6.1 各种结构的循环嵌套195
8.6.2 循环嵌套实例197
8.7 转移语句199
8.7.1 goto语句200
8.7.2 break语句202
8.7.3 continue语句203
8.8 区别三种跳转语句205
8.9 实践练习205
8.9.1 打印出大写字母的ASCII码对照表205
8.9.2 打印出小写字母的ASCII码对照表206
8.9.3 输出0~100之间不能被3整除的数207
8.10 本章小结209
第2篇 核心篇
第9章 数组212
9.1 介绍数组的概念213
9.1.1 数组的分类213
9.1.2 数组的维数213
9.2 应用一维数组214
9.2.1 一维数组的定义214
9.2.2 一维数组的引用215
9.2.3 一维数组的初始化217
9.2.4 一维数组的应用220
9.3 掌握二维数组222
9.3.1 二维数组的定义222
9.3.2 二维数组的引用223
9.3.3 二维数组的初始化223
9.3.4 二维数组的应用227
9.4 解读多维数组228
9.5 使用字符数组229
9.5.1 字符数组的定义229
9.5.2 字符数组的引用229
9.5.3 字符数组的初始化229
9.5.4 字符数组的结束标志231
9.5.5 字符数组的输出232
9.5.6 字符数组的输入233
9.5.7 输出完整的带有空格的字符串234
9.5.8 字符数组的应用235
9.6 字符串处理函数236
9.6.1 字符串的复制237
9.6.2 字符串的连接238
9.6.3 字符串的比较240
9.6.4 字符串大小写转换241
9.6.5 获得字符串长度243
9.7 熟练应用数组245
9.7.1 反转输出字符串245
9.7.2 使用数组统计学生成绩246
9.7.3 情景应用:字符串的加密和解密248
9.8 实践练习250
9.8.1 实现strcpy函数的功能250
9.8.2 统计字符中各元素的个数251
9.8.3 重新排列字符串251
9.9 本章小结252
第10章 函数253
10.1 函数概述254
10.2 定义函数256
10.2.1 函数定义的形式256
10.2.2 定义与声明259
10.3 了解返回语句262
10.3.1 从函数返回262
10.3.2 返回值266
10.4 传递函数参数269
10.4.1 形式参数与实际参数269
10.4.2 数组作为函数参数271
10.4.3 了解main的参数276
10.5 调用函数276
10.5.1 函数调用方式277
10.5.2 嵌套调用280
10.5.3 递归调用282
10.6 灵活应用函数285
10.6.1 函数的应用285
10.6.2 情景应用:使用字符函数判断输入字符290
10.7 实践与练习292
10.7.1 输出较大的整数292
10.7.2 求出10个学生的平均成绩292
10.7.3 验证6174293
10.8 本章小结294
第11章 指针296
11.1 了解指针相关概念297
11.1.1 介绍地址与指针297
11.1.2 解读变量与指针298
11.1.3 使用指针变量299
11.1.4 指针自加自减运算303
11.1.5 情景应用:输出整型变量地址304
11.2 掌握数组与指针305
11.2.1 一维数组与指针306
11.2.2 情景应用一:输出数组元素309
11.2.3 二维数组与指针310
11.2.4 情景应用二:将一个3行5列的二维数组的第二行元素输出313
11.2.5 字符串与指针314
11.2.6 字符串数组316
11.3 指向指针的指针318
11.3.1 应用介绍指向指针的指针318
11.3.2 情景应用:输出偶数320
11.4 作为函数参数的指针变量321
11.5 返回指针值的函数331
11.5.1 介绍返回指针值的函数331
11.5.2 情景应用:求长方形的周长332
11.6 指针数组作为main函数的参数333
11.7 实战练习335
11.7.1 将数组中的元素值按照相反顺序存放335
11.7.2 将两个字符串连接后输出336
11.7.3 使用指针实现字符串的复制336
11.8 本章小结337
第12章 结构体和共用体338
12.1 应用结构体339
12.1.1 结构体类型的概念339
12.1.2 结构体变量的定义340
12.1.3 结构体变量的引用342
12.1.4 结构体类型的初始化344
12.1.5 情景应用:输出学生的信息345
12.2 掌握结构体数组348
12.2.1 定义结构体数组348
12.2.2 初始化结构体数组349
12.2.3 情景应用:输出学生信息351
12.3 解读结构体指针353
12.3.1 指向结构体变量的指针353
12.3.2 指向结构体数组的指针356
12.3.3 结构体作为函数参数358
12.4 介绍包含结构的结构360
12.5 应用共用体362
12.5.1 共用体的概念362
12.5.2 共用体变量的引用363
12.5.3 共用体变量的初始化364
12.5.4 共用体类型的数据特点365
12.6 解读枚举类型365
12.7 实战练习366
12.7.1 统计候选人的得票366
12.7.2 师生信息存储系统367
12.7.3 计算学生的综合成绩368
12.8 本章小结368
第13章 链表与算法369
13.1 介绍链表370
13.1.1 链表概述370
13.1.2 创建动态链表371
13.1.3 输出链表374
13.2 进行链表的相关操作376
13.2.1 链表的插入操作377
13.2.2 链表的删除操作380
13.3 运用数组排序算法384
13.3.1 选择法排序385
13.3.2 冒泡法排序387
13.3.3 交换法排序389
13.3.4 插入法排序391
13.3.5 折半法排序394
13.3.6 比较数组排序算法396
13.4 实战练习397
13.4.1 链表的删除操作397
13.4.2 使用选择法排序398
13.4.3 使用冒泡、交换、插入、折半等算法进行排序399
13.5 本章小节399
第3篇 高级篇
第14章 位运算402
14.1 解读位与字节403
14.2 掌握位运算操作符403
14.2.1 “与”运算符404
14.2.2 “或”运算符405
14.2.3 “取反”运算符407
14.2.4 “异或”运算符409
14.2.5 “左移”运算符412
14.2.6 “右移”运算符413
14.2.7 位运算复合赋值运算符415
14.2.8 长度不同的数据进行位运算415
14.3 循环移位416
14.4 什么是位域418
14.4.1 位域的概念与定义419
14.4.2 位域相关说明420
14.5 实战练习421
14.5.1 求两个数进行“与”和“或”运算后的结果421
14.5.2 求出一个数“左移”和“右移”后的结果422
14.5.3 求一个数“循环左移”和“循环右移”后的结果422
14.6 本章小结423
第15章 存储管理424
15.1 内存组织方式425
15.1.1 了解内存组织方式425
15.1.2 解读堆与栈425
15.2 动态管理428
15.2.1 动态分配一段内存空间——malloc函数428
15.2.2 动态分配连续内存空间数组——calloc函数429
15.2.3 改变ptr指针指向空间大小——realloc函数431
15.2.4 情景应用:使用realloc函数重新分配内存432
15.2.5 释放分配整型变量内存空间——free函数432
15.3 内存丢失433
15.4 变量的存储类别434
15.4.1 动态存储与静态存储435
15.4.2 修饰一个局部变量为自动的auto变量435
15.4.3 声明位置不同、意义不同的static变量436
15.4.4 寄存器存储类的register变量437
15.4.5 外部存储的extern变量437
15.5 实战练习438
15.5.1 为数组动态分配内存438
15.5.2 为数组动态分配并释放内存439
15.5.3 用静态局部整型变量计算3的平方和立方440
15.6 本章小结440
第16章 函数类型和预处理441
16.1 内部函数和外部函数442
16.1.1 介绍内部函数442
16.1.2 解读外部函数443
16.2 灵活使用宏定义444
16.2.1 不带参数的宏定义445
16.2.2 带参数的宏定义446
16.3 编写#include指令448
16.4 掌握条件编译450
16.4.1 #if命令450
16.4.2 #ifdef及#ifndef命令453
16.4.3 #undef命令455
16.4.4 #line命令455
16.4.5 #pragma命令456
16.5 实践练习457
16.5.1 求两个数相乘的积457
16.5.2 从3个数中找出最小数457
16.5.3 从3个数中找出最大数458
16.6 本章小结459
第17章 读写文件460
17.1 文件概述461
17.2 掌握文件基本操作462
17.3 运用文件指针463
17.4 打开和关闭文件464
17.4.1 文件的打开464
17.4.2 文件的关闭465
17.5 读 写 文 件466
17.5.1 写字符函数——fputc函数466
17.5.2 读字符函数——fgetc函数468
17.5.3 写字符串函数——fputs函数469
17.5.4 读字符串函数——fgets函数470
17.5.5 格式化写入函数——fprintf函数472
17.5.6 格式化读取函数——fscanf函数474
17.5.7 数据块读写函数——fread函数和fwrite函数475
17.6 定位文件478
17.6.1 随机读写操作——fseek函数479
17.6.2 返回位置指针——rewind函数481
17.6.3 ftell函数483
17.7 实践练习485
17.7.1 复制文件内容485
17.7.2 保存学生信息486
17.8 本章小结487
第4篇 实战篇
第18章 学生管理系统490
18.1 分析需求491
18.2 设计系统491
18.3 功能模块设计492
18.3.1 功能选择界面492
18.3.2 录入学生成绩信息494
18.3.3 查询学生成绩信息496
18.3.4 删除学生成绩信息497
18.3.5 修改学生成绩信息499
18.3.6 插入学生成绩信息501
18.3.7 统计学生人数504
18.4 本章小结505
附录A 专业术语表506