C语言从入门到精通
作者: 王征,李晓波著
出版时间:2020年版
内容简介
本书从基本的C语言概念入手,由浅入深,以典型实例、综合实例剖析讲解,一步一步引导初学者掌握C语言知识。本书共15章,其中,第1~5章是基础篇;第6~14章是提高篇;第15章是综合案例实战篇,即通过对手机销售管理系统的编写,使初学者提高对C语言编程的综合认识,并真正掌握编程的核心思想及技巧,从而学以致用。 在讲解过程中既考虑读者的学习习惯,又通过具体实例剖析讲解C语言编程中的热点问题、关键问题及种种难题。 本书适合于大中专学校的师生、有编程梦想的初高中生阅读,更适合于培训机构的师生、编程爱好者、初中级程序员、程序测试及维护人员阅读研究。
目录
第1章 C 语言程序设计快速入门 / 1
1.1 初识C 语言 / 2
1.1.1 C 语言是其他编程语言的母语 / 2
1.1.2 C 语言是系统编程语言 / 2
1.1.3 C 语言的历史 / 2
1.1.4 C 语言的基本特征 / 3
1.1.5 C 语言的优缺点 / 4
1.2 搭建C 语言开发环境 / 5
1.2.1 C 语言的集成开发环境概述 / 5
1.2.2 Dev-C++ 的下载 / 6
1.2.3 Dev-C++ 的安装 / 7
1.2.4 第一次启动的简单设置 / 9
1.3 编写C 语言程序 / 10
1.3.1 新建源代码文件 / 10
1.3.2 编写代码并保存 / 11
1.3.3 编译运行 / 12
1.3.4 C 语言程序执行流程 / 13
第2章 C 语言程序设计的初步知识 / 15
2.1 常量和变量 / 16
2.1.1 常量 / 16
2.1.2 变量与赋值 / 17
2.2 基本数据类型 / 19
2.2.1 整型 / 20
2.2.2 浮点型 / 21
2.2.3 字符型 / 22
2.3 运算符 / 25
2.3.1 算术运算符 / 25
2.3.2 赋值运算符 / 26
2.3.3 位运算符 / 28
2.4 自增(++) 和自减(--) / 31
2.5 数据类型的转换 / 32
2.5.1 自动的类型转换 / 32
2.5.2 强制的类型转换 / 33
2.6 C 语言的代码编写注意事项 / 34
第3章 C 语言的选择结构 / 35
3.1 if...else 语句 / 36
3.1.1 if...else 语句的一般格式 / 36
3.1.2 实例:奇偶数判断 / 36
3.1.3 实例:游戏登录判断系统 / 37
3.2 多个if...else 语句 / 39
3.2.1 实例:成绩评语系统 / 40
3.2.2 实例:每周学习计划系统 / 42
3.3 关系运算符 / 43
3.3.1 关系运算符及意义 / 44
3.3.2 实例:求一元二次方程的根 / 44
3.3.3 实例:企业奖金发放系统 / 45
3.4 逻辑运算符 / 47
3.4.1 逻辑运算符及意义 / 47
3.4.2 实例:判断是否是闰年 / 47
3.4.3 实例:输入3 个数并显示最大的数 / 48
3.4.4 实例:剪刀、石头、布游戏 / 49
3.5 嵌套if 语句 / 50
3.5.1 嵌套if 语句的一般格式 / 50
3.5.2 实例:判断一个数是否是2 或3 的倍数 / 51
3.5.3 实例:判断正负数 / 52
3.6 条件运算符和条件表达式 / 53
3.7 switch 语句 / 53
3.7.1 switch 语句的一般格式 / 54
3.7.2 实例:根据输入的数显示相应的星期几 / 54
3.7.3 实例:根据输入的年份和月份显示该月有多少天 / 55
第4章 C 语言的循环结构 / 57
4.1 while 循环 / 58
4.1.1 while 循环的一般格式 / 58
4.1.2 实例:利用while 循环显示26 个小写字母 / 58
4.1.3 实例:随机产生10 个随机数并打印最大的数 / 59
4.1.4 实例:求s=a+aa+aaa+……+aa...a 的值 / 60
4.1.5 实例:猴子吃桃问题 / 60
4.2 do-while 循环 / 61
4.2.1 do-while 循环的一般格式 / 62
4.2.2 实例:利用do-while 循环显示26 个大写字母及对应的ASII 码 / 62
4.2.3 实例:计算1+2+3+……+100 的和 / 63
4.2.4 实例:阶乘求和 / 63
4.3 for 循环 / 64
4.3.1 for 循环的一般格式 / 64
4.3.2 实例:显示100 之内的奇数 / 64
4.3.3 实例:分解质因数 / 65
4.3.4 实例:小球反弹的高度 / 66
4.4 循环嵌套 / 67
4.4.1 实例:显示9*9 乘法表 / 67
4.4.2 实例:显示国际象棋棋盘 / 68
4.4.3 实例:绘制?号的菱形 / 96
4.4.4 实例:斐波那契数列 / 70
4.4.5 实例:杨辉三角 / 71
4.4.6 实例:弗洛伊德三角形 / 72
4.5 break 语句 / 73
4.6 continue 语句 / 75
第5章 C 语言的基本输出与输入 / 77
5.1 初识输出与输入 / 78
5.2 putchar() 函数 / 78
5.2.1 实例:显示字符及对应的ASCII 码 / 78
5.2.2 实例:利用while 循环显示10 个数字及ASCII 码 / 79
5.3 getchar() 函数 / 80
5.3.1 实例:输入什么字符,就显示什么字符及对应的ASCII 码 / 80
5.3.2 实例:判断输入的字符是什么类型 / 81
5.4 printf() 函数 / 82
5.4.1 printf() 函数的语法格式 / 82
5.4.2 数字的格式化输出 / 83
5.4.3 利用格式化控制输入变量值的宽度和对齐方式 / 84
5.4.4 实例:用* 号输出字母C 的图案 / 85
5.5 scanf() 函数 / 86
5.5.1 scanf() 函数的语法格式 / 86
5.5.2 数字和字符的格式化输入 / 86
5.5.3 实例:回文数 / 89
5.5.4 实例:求1!+2!+3!+……+n! 的和 / 90
5.5.5 实例:求两个正整数的最大公约数和最小公倍数 / 91
5.5.6 实例:根据输入的字母显示星期几 / 92
第6章 C 语言的函数 / 95
6.1 初识函数 / 96
6.1.1 函数的重要性 / 96
6.1.2 库函数的运用 / 96
6.2 常用的库函数 / 96
6.2.1 math.h 头文件中的常用库函数 / 97
6.2.2 float.h 头文件中的常用库宏 / 98
6.2.3 limits.h 头文件中的常用库宏 / 99
6.2.4 ctype.h 头文件中的常用库函数 / 101
6.3 自定义函数 / 103
6.3.1 函数的定义 / 103
6.3.2 函数调用 / 104
6.3.3 函数调用的3 种方式 / 105
6.3.4 函数的参数 / 106
6.3.5 递归函数 / 109
6.4 局部变量和全局变量 / 110
6.5 实例:计算一个数为两个质数之和 / 112
6.6 实例:年龄问题的解决 / 114
第7章 C 语言的数组 / 117
7.1 初识数组 / 118
7.1.1 数组的定义 / 118
7.1.2 数组内存是连续的 / 118
7.1.3 数组的初始化 / 119
7.2 数组元素的访问 / 119
7.2.1 实例:利用数组元素的索引显示6×4 行矩阵 / 119
7.2.2 实例:利用for 循环显示数组中的元素 / 120
7.2.3 实例:利用随机数为数组赋值并显示 / 121
7.3 二维数组 / 122
7.3.1 二维数组的定义 / 122
7.3.2 二维数组的初始化 / 123
7.3.3 二维数组元素的访问 / 123
7.4 判断某数是否在数组中 / 125
7.5 函数在数组中的应用 / 126
7.5.1 把数组作为参数传给函数 / 127
7.5.2 函数的返回值是数组 / 128
7.6 数组中元素的排序 / 129
7.6.1 冒泡排序 / 129
7.6.2 选择排序 / 131
7.6.3 插入排序 / 132
第8章 C 语言的字符串 / 135
8.1 初识字符串 / 136
8.1.1 字符串常量 / 136
8.1.2 字符数组 / 136
8.2 字符数组和字符串的显示 / 137
8.2.1 实例:字符数组元素的显示 / 137
8.2.2 实例:字符串的显示 / 138
8.3 字符串长度与字符串在内存中的长度 / 139
8.4 字符串的输入函数 / 140
8.4.1 实例:利用scanf() 函数实现字符串的输入 / 140
8.4.2 实例:利用getchar() 函数实现字符串的输入 / 141
8.4.3 实例:利用gets() 函数实现字符串的输入 / 142
8.5 字符串的输出函数 / 142
8.5.1 实例:利用putchar() 函数显示字符串 / 143
8.5.2 实例:利用puts() 函数显示字符串 / 143
8.6 字符串数组 / 144
8.7 字符串处理的常用库函数 / 145
8.8 字符串运用实例 / 147
8.8.1 实例:字符串的截取 / 147
8.8.2 实例:字符串的排序 / 148
8.8.3 实例:字符串首尾倒置 / 149
8.8.4 实例:字符串中的汉字倒置 / 150
8.8.5 实例:删除字符串右边的空格 / 151
8.8.6 实例:删除字符串左边的空格 / 151
8.8.7 实例:汉字和字母的个数 / 152
8.8.8 实例:动态输入5 个单词并排序 / 153
第9章 C 语言的指针 / 155
9.1 初识指针 / 156
9.1.1 什么是地址 / 156
9.1.2 指针变量 / 157
9.1.3 指针变量的赋值 / 157
9.1.4 指针变量的输出 / 158
9.1.5 引用指针变量中的变量 / 159
9.1.6 指向指针变量的指针变量 / 160
9.2 指针的移动 / 161
9.2.1 指针的递增 / 161
9.2.2 指针的递减 / 162
9.2.3 指针的减法运算 / 163
9.2.4 指针的比较 / 164
9.3 指针与函数 / 165
9.3.1 指针变量作为函数的形式参数 / 165
9.3.2 函数的返回值是指针变量 / 166
9.4 指针与数组 / 167
9.5 指针与字符串 / 169
9.6 指针数组 / 170
9.7 实例:输入不同的数字显示不同的月份 / 171
第10章 C 语言的编译预处理和内存管理 / 173
10.1 初识编译预处理 / 174
10.2 宏定义 / 175
10.2.1 不带参数的宏定义 / 175
10.2.2 带参数的宏定义 / 176
10.2.3 预定义宏 / 178
10.2.4 预处理器的运算符 / 179
10.3 文件包含 / 180
10.3.1 文件包含的格式 / 181
10.3.2 文件包含的运用 / 181
10.4 条件编译 / 183
10.4.1 #if 命令 / 183
10.4.2 #ifdef 命令 / 184
10.4.3 #ifndef 命令 / 185
10.5 实例:编写一个带参数的宏,实现两个数的交换 / 186
10.6 内存管理 / 187
10.6.1 内存动态分配常用库函数 / 187
10.6.2 动态分配内存 / 188
10.6.3 重新调整内存的大小和释放内存 / 189
第11章 C 语言的复合结构 / 193
11.1 初识结构体 / 194
11.1.1 结构体的定义 / 194
11.1.2 结构体变量的定义 / 194
11.1.3 结构体变量的赋初值 / 195
11.1.4 结构体变量的输出 / 195
11.2 结构体数组 / 196
11.2.1 显示结构体数组中的元素 / 197
11.2.2 求所有职工的工资总和及平均工资 / 198
11.2.3 显示所有男性职工的信息及其平均工资 / 199
11.2.4 显示工资大于平均工资的职工信息 / 200
11.3 结构体与指针 / 201
11.4 结构体作为函数的形式参数 / 205
11.5 位域 / 206
11.5.1 位域的定义 / 206
11.5.2 位域变量的定义 / 207
11.5.3 位域变量的赋初值 / 207
11.5.4 位域变量的输出 / 208
11.5.5 无名位域 / 209
11.6 枚举 / 209
11.6.1 枚举的定义 / 210
11.6.2 枚举变量的定义 / 210
11.6.3 枚举变量的赋初值并显示 / 211
11.6.4 遍历枚举元素 / 212
11.6.5 实例:选择喜欢的颜色 / 212
11.7 共用体 / 214
11.7.1 共用体的定义 / 214
11.7.2 共用体变量的定义 / 215
11.7.3 输出共用体成员变量 / 215
11.8 用户定义类型 / 217
第12章 C 语言的文件操作 / 219
12.1 初识文件 / 220
12.1.1 C 的源程序文件和执行文件 / 220
12.1.2 C 程序中的数据文件 / 220
12.1.3 输入和输出缓冲区 / 221
12.1.4 C 程序中的文件指针和位置指针 / 221
12.2 创建文件 / 222
12.2.1 在当前目录中创建文件 / 222
12.2.2 在当前目录的子文件夹中创建文件 / 223
12.2.3 在当前目录的上一级目录中创建文件 / 225
12.2.4 利用绝对路径创建文件 / 226
12.3 打开文件并写入内容 / 227
12.3.1 利用fputc() 函数向文件中写入内容 / 227
12.3.2 利用fputs() 函数向文件中写入内容 / 229
12.3.3 利用fprintf() 函数向文件中写入内容 / 231
12.4 读出文件中的内容 / 235
12.4.1 利用fgetc() 函数读出文件中的内容 / 235
12.4.2 利用fgets() 函数读出文件中的内容 / 236
12.4.3 利用fscanf() 函数读出文件中的内容 / 237
12.5 二进制文件 / 238
12.5.1 创建和打开二进制文件 / 238
12.5.2 向二进制文件中写入内容 / 240
12.5.3 读取二进制文件中的内容 / 241
12.6 文件的定位函数 / 243
12.6.1 rewind() 函数 / 243
12.6.2 fseek() 函数 / 243
第13章 C 语言的线性表 / 245
13.1 初识线性表 / 246
13.1.1 线性表的前驱和后继 / 246
13.1.2 线性表的特征 / 246
13.2 顺序表 / 246
13.2.1 什么是顺序表 / 246
13.2.2 顺序表的初始化 / 247
13.2.3 向顺序表中插入数据元素 / 248
13.2.4 删除顺序表中的数据元素 / 250
13.2.5 查找顺序表中的数据元素 / 252
13.2.6 修改顺序表中的数据元素 / 253
13.3 链表 / 255
13.3.1 链表概述 / 255
13.3.2 链表的定义及初始化 / 256
13.3.3 向链表中插入数据元素 / 259
13.3.4 删除链表中的数据元素 / 261
13.3.5 查找链表中的数据元素 / 262
13.3.6 修改链表中的数据元素 / 263
第14章 C 语言的栈和队列 / 265
14.1 初识栈 / 266
14.2 顺序栈 / 266
14.2.1 顺序栈的定义与初识化 / 266
14.2.2 向顺序栈中添加数据元素 / 266
14.2.3 利用for 循环向顺序栈中添加字符并显示 / 268
14.2.4 删除顺序栈中的数据元素 / 269
14.3 链栈 / 271
14.3.1 链栈的定义与初识化 / 271
14.3.2 向链栈中插入数据元素 / 271
14.3.3 显示链栈中的数据元素 / 272
14.3.4 删除链栈中的数据元素 / 273
14.4 初识队列 / 274
14.5 顺序队列 / 275
14.5.1 顺序队列的定义与初识化 / 275
14.5.2 向顺序队列中添加数据元素并显示 / 275
14.5.3 删除顺序队列中的数据元素 / 276
14.5.4 顺序队列中的溢出现象 / 278
14.5.5 循环队列 / 278
14.6 链队列 / 280
14.6.1 链队列的定义与初识化 / 280
14.6.2 向链队列中插入数据元素并显示 / 280
14.6.3 删除链队列中的数据元素 / 281
第15章 手机销售管理系统 / 283
15.1 手机销售管理系统主程序 / 284
15.2 增加手机信息 / 286
15.3 显示全部手机信息 / 288
15.4 保存手机信息 / 289
15.5 读取手机信息 / 292
15.6 查找手机信息 / 293
15.6.1 利用价格查询手机信息 / 294
15.6.2 利用编号查询手机信息 / 294
15.6.3 利用库存数量查询手机信息 / 294
15.6.4 利用手机名查询手机信息 / 295
15.6.5 调用各种查询函数实现分类查找功能 / 295
15.6.6 查找手机信息效果 / 296
15.7 购买手机功能 / 299
15.8 删除手机信息 / 301